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

Simulating computation of the expected value of random variable Y

我被赋予了以下任务: 使用 R 中的模拟计算 Y=e^{-X}(X 在 0 和 1 之间均匀分布)的预期值。将预期值绘制为模拟次数的函数,其中 n 是 1 到 10000 之间的整数 此函数的 pdf 为:f(y) = 1/y,因为 1/e < y < 1.

求期望值的公式当然是:E[Y] = integrate(y * 1/y dy)

你如何模拟这样的东西?我希望您在 (1/e < y < 1) 之间抽取随机样本,但分布的 pdf 具有不同的概率,具体取决于您绘制的内容。

我考虑过使用“sample”或“runif”函数,但我不知道如何让这些函数处理不同的概率。

您可以利用随机变量 U = F(Y) 是均匀的这一事实,其中 F 是随机变量 Y 的累积密度函数(pdf 1/y)。然后你有 Y = F^-1(U)。这意味着您可以从统一变量中采样,然后通过 F^-1(U) 对其进行转换以从 Y 中获取样本。然后您可以取样本的平均值。这被称为 inverse sampling transformation

对于您的示例,您有 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 的增加,均值附近的变化越来越小。