আমি আর তে মেট্রোপলিস অ্যালগরিদম ব্যবহার করে একটি বিভাজন ঘনত্ব থেকে সিমুলেট করার চেষ্টা করেছি এবং কোনও ভাগ্য হয়নি। ঘনত্বটি হিসাবে প্রকাশ করা যেতে পারে , যেখানে সিং-মাদদলা বিতরণ
পরামিতি সঙ্গে , , এবং লগ-স্বাভাবিক লগ-গড় একটি ভগ্নাংশ হিসাবে সাথে আছেন , এবং লগ ইন করুন-SD একটি ধ্রুবক। আমার নমুনাটি আমি চাই কিনা এটি পরীক্ষা করতে আমি এর প্রান্তিক ঘনত্বের দিকে চেয়েছিলাম , যা হওয়া উচিত । আমি আর প্যাকেজ এমসিএমসিপ্যাক, এমসিএমসি এবং স্বপ্নের থেকে আলাদা মেট্রোপলিস অ্যালগরিদম চেষ্টা করেছি। আমি বার্ন-ইন ফেলে দিয়েছি, পাতলা ব্যবহার করেছি, মিলিয়ন পর্যন্ত আকারের ব্যবহৃত নমুনা ব্যবহার করেছি, তবে ফলস্বরূপ প্রান্তিক ঘনত্ব আমি সরবরাহ করি নি।
আমার কোডটি আমি ব্যবহার করেছি এর চূড়ান্ত সংস্করণ এখানে:
logvrls <- function(x,el,sdlog,a,scl,q.arg) {
if(x[2]>0) {
dlnorm(x[1],meanlog=el*log(x[2]),sdlog=sdlog,log=TRUE)+
dsinmad(x[2],a=a,scale=scl,q.arg=q.arg,log=TRUE)
}
else -Inf
}
a <- 1.35
q <- 3.3
scale <- 10/gamma(1 + 1/a)/gamma(q - 1/a)* gamma(q)
Initvrls <- function(pars,nseq,meanlog,sdlog,a,scale,q) {
cbind(rlnorm(nseq,meanlog,sdlog),rsinmad(nseq,a,scale,q))
}
library(dream)
aa <- dream(logvrls,
func.type="logposterior.density",
pars=list(c(0,Inf),c(0,Inf)),
FUN.pars=list(el=0.2,sdlog=0.2,a=a,scl=scale,q.arg=q),
INIT=Initvrls,
INIT.pars=list(meanlog=1,sdlog=0.1,a=a,scale=scale,q=q),
control=list(nseq=3,thin.t=10)
)
আমি স্বপ্নের প্যাকেজে স্থির হয়েছি, যেহেতু এটি কনভার্সেশন পর্যন্ত নমুনা। আমি তিনটি উপায়ে সঠিক ফলাফল আছে কিনা তা পরীক্ষা করেছি। কেএস পরিসংখ্যান ব্যবহার করে, কোয়ান্টাইলগুলির সাথে তুলনা করা, এবং সিং-মাদডালা বিতরণের পরামিতিগুলি ফলাফলের নমুনা থেকে সর্বাধিক সম্ভাবনার সাথে অনুমান করে:
ks.test(as.numeric(aa$Seq[[2]][,2]),psinmad,a=a,scale=scale,q.arg=q)
lsinmad <- function(x,sample)
sum(dsinmad(sample,a=x[1],scale=x[2],q.arg=x[3],log=TRUE))
optim(c(2,20,2),lsinmad,method="BFGS",sample=aa$Seq[[1]][,2])
qq <- eq(0.025,.975,by=0.025)
tst <- cbind(qq,
sapply(aa$Seq,function(l)round(quantile(l[,2],qq),3)),
round(qsinmad(qq,a,scale,q),3))
colnames(tst) <- c("Quantile","S1","S2","S3","True")
library(ggplot2)
qplot(x=Quantile,y=value,
data=melt(data.frame(tst),id=1),
colour=variable,group=variable,geom="line")
আমি যখন এই তুলনাগুলির ফলাফলগুলি দেখি, কেএস পরিসংখ্যানগুলি প্রায়শই নাল অনুমানটিকে প্রত্যাখ্যান করে যে স্যাম্পল সরবরাহ করা পরামিতি সহ সিং-মাদডালা বিতরণ থেকে। সর্বাধিক সম্ভাবনার প্রাক্কলিত প্যারামিটারগুলি কখনও কখনও তার আসল মানগুলির কাছাকাছি আসে তবে সাধারণত স্যাম্পলিং পদ্ধতিটি সফল ছিল তা মেনে নিতে আরামের অঞ্চল থেকে খুব দূরে। কোয়ান্টাইলগুলির জন্য ডিট্টো, অনুভূতিমূলক কোয়ান্টাইলগুলি খুব বেশি দূরে নয়, তবে খুব বেশি দূরে।
আমার প্রশ্ন হচ্ছে আমি কী ভুল করছি? আমার নিজস্ব অনুমান:
- এমসিএমসি এই ধরণের নমুনার জন্য উপযুক্ত নয়
- তাত্ত্বিক কারণে এমসিসিএম রূপান্তর করতে পারে না (বিতরণ ফাংশন প্রয়োজনীয় বৈশিষ্ট্যগুলি যেমন তারা যাই হোক না কেন পূরণ করে না)
- আমি মেট্রোপলিস অ্যালগরিদম সঠিকভাবে ব্যবহার করি না
- আমার বিতরণ পরীক্ষা সঠিক নয়, যেহেতু আমার কাছে স্বতন্ত্র নমুনা নেই।
dsinmad
তিন প্যারামিটার নেয় অথবা আমি কিছু অনুপস্থিত করছি।