R 随机变量Y期望值的模拟计算

R 随机变量Y期望值的模拟计算,r,statistics,data-science,probability,probability-theory,R,Statistics,Data Science,Probability,Probability Theory,我被赋予以下任务: 使用R中的模拟计算Y=e^{-X}(X在0和1之间是一致的)的预期值。绘制预期值作为模拟次数的函数,其中n是1和10000之间的整数 该函数的pdf为:f(y)=1/y,表示1/e

我被赋予以下任务: 使用R中的模拟计算Y=e^{-X}(X在0和1之间是一致的)的预期值。绘制预期值作为模拟次数的函数,其中n是1和10000之间的整数 该函数的pdf为:f(y)=1/y,表示1/e 求期望值的公式当然是:E[Y]=integrate(Y*1/Y-dy)

你怎么模拟这样的东西?我希望您在(1/e
我考虑过使用“sample”或“runif”函数,但我不知道如何使这些函数以不同的概率工作。

你可以使用随机变量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的增长,平均值周围的变化越来越小


非常感谢,解释得很好!也许有一件事我很好奇。CDF的逆:F(y)=ln(y)-1,我不明白你怎么把exp(u-1)作为ln(y)-1的逆。我得到exp(u+1),正如你所看到的,计算器也是在线的:我想知道我是否遗漏了什么@J.C.WahlYou是正确的,CDF是ln(y)+1,因为int 1/y,1/ey,得到ln(y)-ln(1/e)=ln(y)+1,这就是cdf:F(y)