假设我有一个函数,我想集成 当然,假设在端点处为零,没有爆炸,功能很好。一种方式,我已经和摆弄是使用大都市斯算法来生成列表的样品从分配比例,以,其缺少归一化常数 ,我将其称为,然后在这些上计算一些统计量:
由于,我可以用代替以从积分中消除,从而得到形式的表达式 因此,假设沿该区域积分为,我应该得到结果,我可以取倒数来获得我想要的答案。因此,我可以取样品的范围(以最有效地利用这些点),让我绘制的每个样品的U(x)= 1 / r。这样U(x)f (x )= U (x )/ g (x )g 1U(x)11/Nr=x最大值−x最小值
我尝试在R中针对示例函数。在这种情况下,我不使用Metropolis-Hastings来生成样本,而是使用实际概率rnorm
来生成样本(仅用于测试)。我没有完全得到想要的结果。基本上,我要计算的完整表达式为:
ys = rnorm(1000000, 0, 1/sqrt(2))
r = max(ys) - min(ys)
sum(sapply(ys, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.6019741. 1/sqrt(pi) = 0.5641896
编辑CliffAB
我使用范围的原因只是为了轻松定义一个函数,该函数在我的点所在的区域内为非零值,但是在[-\ infty,\ infty]范围内积分为1。该函数的完整规范为: U(x)= \ begin {cases} \ frac {1} {x_ \ max-x_ \ min}&x_ \ max> x> x_ \ min \\ 0&\ text {否则。} \ end {cases} 我不必使用U(x)作为这种均匀密度。我本可以使用其他一些积分为1的密度,例如概率密度 P(x)= \ frac {1} {\ sqrt {\ pi}} e ^ {-x ^ 2}。 但是,这会使各个样本的求和变得微不足道,即
我可以尝试将该技术用于其他积分为分布。但是,我仍然想知道为什么对于统一分发它不起作用。