重要性抽样 - 蒙特卡洛积分

时间:2012-12-24 20:05:23

标签: r integration simulation probability montecarlo

我正在尝试实施蒙特卡罗与重要性抽样的整合。我创造了一个微不足道的例子 - 我希望整合h(x),它有一个学生t分布(mu = 1,sigma = 1,df = 100),但我们按比例放大了4倍 - 我希望整合区间[-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

1 个答案:

答案 0 :(得分:2)

由于您是从截断的正态分布中提取样本,因此不应使用正态分布的概率密度函数(在您的示例中为dnorm),而应使用截断的法线分发(例如,来自包dtnorm的{​​{1}})用于计算权重。

尝试以下操作,它会为您提供预期的结果:

msm