如何解决模拟随机变量Y
我被赋予以下任务:
用R中的模拟计算Y = e ^ {-X}(X在0和1之间一致)的期望值。将期望值作为模拟次数的函数进行绘制,其中n是1到10000之间的整数
此函数的pdf为:f(y)= 1 / y,对于1 / e 寻找期望值的公式当然是:E [Y] =积分(y * 1 / y dy) 您如何模拟类似这样的内容?我希望您在(1 / e 我考虑过使用“样本”或“ 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的增加,它很快就稳定在真实均值附近,并且均值附近的变化越来越小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。