2012-12-24 77 views
1

我正在嘗試實施蒙特卡洛與重要性抽樣的整合。我創建了一個簡單的例子 - 我想整合h(x),它有一個學生t分佈(mu = 1,sigma = 1,df = 100),但我們放大了4倍 - I想要在區間[-2,2] - f(x)上積分,那麼我的h(x)的pdf就是t(1,1,100) - 我的建議分佈是g(x),而正常0,1)重要性抽樣 - 蒙特卡洛積分

我無法得到這項工作......我很困惑如何實現重要性抽樣和使用h(x)和提議分佈g(x)的概率密度函數。我相信我的實施是錯誤的。我希望有人可以幫助我嗎?

xtemp<-rnorm(100000) 
x<-xtemp[which(xtemp>=-2 & xtemp<=2)] 
hx<-dt(x,100)*4 
fx<-dt(x,100) 
gx<-dnorm(x) 

IntMC<-sum(hx*fx/gx)/length(hx) 
IntAn <-(pt(2,100)-pt(-2,100))*4 
+0

什麼是是什麼? PDF?請刪除acronims。 –

+2

我打算冒險,猜測IS是重要性抽樣,而pdf是概率密度函數。 –

+0

完成編輯,pdf =概率密度函數,IS =重要性抽樣 – user1375871

回答

2

因爲你是從截斷正態分佈採樣,你不應該使用(在你的榜樣dnorm)正態分佈的概率密度函數,但截斷正常分佈的(例如,dtnorm從用於計算權重的包msm)。

試試下面,它給你預期的結果:

library(msm) # provides the pdf of the truncated normal distribution 

xtemp <- rnorm(100000) 
x <- xtemp[which(xtemp>=-2 & xtemp<=2)] 

hx <- dt(x,100)*4 
gx <- dtnorm(x, lower=-2, upper=2) 

IntMC <- mean(hx/gx) 
IntAn <- (pt(2,100)-pt(-2,100))*4