การสุ่มตัวอย่างจากการแจกแจงไบวาเรียที่มีความหนาแน่นเป็นที่รู้จักโดยใช้ MCMC
ฉันพยายามที่จะจำลองจากความหนาแน่นของ bivariate p(x,y)p(x,y)p(x,y)การใช้อัลกอริทึม Metropolis ใน R และไม่มีโชค ความหนาแน่นสามารถแสดงเป็น p(y|x)p(x)p(y|x)p(x)p(y|x)p(x)ที่ไหน p(x)p(x)p(x) คือการกระจาย Singh-Maddala p(x)=aqxa−1ba(1+(xb)a)1+qp(x)=aqxa−1ba(1+(xb)a)1+qp(x)=\dfrac{aq x^{a-1}}{b^a (1 + (\frac{x}{b})^a)^{1+q}} ด้วยพารามิเตอร์ aaa, qqq, bbbและ p(y|x)p(y|x)p(y|x) เป็นบันทึกปกติโดยมีค่าเฉลี่ยล็อกเป็นเศษส่วนของ xxxและ log-sd ค่าคงที่ เพื่อทดสอบว่าตัวอย่างของฉันเป็นสิ่งที่ฉันต้องการหรือไม่ฉันดูที่ความหนาแน่นของxxxซึ่งควรจะเป็น p(x)p(x)p(x). ฉันลองอัลกอริทึม Metropolis ที่แตกต่างจากแพ็คเกจ R MCMCpack, mcmc และความฝัน ฉันทิ้งการเบิร์นอินใช้การทำให้ผอมบางใช้ตัวอย่างที่มีขนาดสูงถึงล้าน แต่ความหนาแน่นส่วนเกินที่ได้นั้นไม่ได้เป็นอย่างที่ฉันให้ นี่คือรหัสสุดท้ายที่ฉันใช้: 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 } …