给出了计算Y=e^{-X}的期望值(X在0~ 1之间是一致的)的任务,并在R中进行了模拟。图中期望值是n是1到10000之间的整数的函数,此函数的f(y) = 1/y,对于1/e
求期望值的公式当然是: EY =积分(y* 1/y )
你怎么模拟像这样的东西?我希望你在(1/e
我考虑过使用"sample“或"runif”函数,但我想不出如何使这些函数以不同的概率工作。
发布于 2020-09-05 18:07:05
你可以利用随机变量U= F(Y)是一致的这一事实,其中F是随机变量Y的累积密度函数(有pdf 1/y)。然后得到Y= F^-1(U)。这意味着你可以从一个均匀变量中取样,然后通过F^-1(U)变换它,从Y得到一个样本,然后取样本的平均值。这就是所谓的反采样变换。
对于你的例子,你有F(y) = ln(y) +1和F^-1(u) =exp(u-1)。然后很容易得到一个样本:
n = 1000
u = runif(n)
y = exp(u - 1)
mean(y)
0.6342477这非常接近真实平均值0.6321206 (1 - 1/e)。
编辑
要了解您模拟的样本数量对估计值的影响如何,您可以这样做:
sample_y = function(n){
u = runif(n)
y = exp(u - 1)
mean(y)
}
n = seq(10, 20000, 10)
res = sapply(n, sample_y)
ts.plot(res)它很快地稳定在真正的平均值附近,并且随着n的增长,平均值的变化越来越小。

https://stackoverflow.com/questions/63756779
复制相似问题