我有一堆随机变量(X1,....,Xn)
,它们是i.i.d. Exp(1/2)
代表某个事件的持续时间。因此,这个分布显然具有2的预期值,但我在R中定义它时遇到了问题。我做了一些研究并发现了一些所谓的蒙特卡罗刺激,但我似乎没有找到我正在寻找的东西因为它。
我想要估算的一个例子是:假设我们有10个随机变量(X1,..,X10)
如上所述分配,我们想确定例如概率P([X1+...+X10<=25])
。
感谢。
答案 0 :(得分:2)
在这种情况下,您实际上不需要蒙特卡罗模拟,因为:
如果Xi~Exp(λ)那么和(X1 + ... + Xk)~Erlang(k,λ)只是一个Gamma(k,1 /λ)(in(k,θ)参数化)或Gamma(k,λ)(在(α,β)参数化中)与整数形状参数k。
来自维基百科(https://en.wikipedia.org/wiki/Exponential_distribution#Related_distributions)
因此,P([X1 + ... + X10 <= 25])可以通过
计算pgamma(25, shape=10, rate=0.5)
答案 1 :(得分:1)
您是否了解R中的rexp()
功能?通过在R控制台中键入?rexp
来查看文档页面。
快速回答蒙特卡洛对所需概率的估计:
mean(rowSums(matrix(rexp(1000 * 10, rate = 0.5), 1000, 10)) <= 25)
我已经生成了1000组10个指数样本,将它们放入1000 * 10矩阵中。我们采用行和,得到1000个条目的向量。 0到25之间的值的比例是对期望概率的经验估计。
谢谢,这很有帮助!我可以对此代码使用
replicate
,使其如下所示:F <- function(n, B=1000) mean(replicate(B,(rexp(10, rate = 0.5))))
但我无法输出正确的结果。
replicate
这里也生成一个矩阵,但它是一个10 * 1000矩阵(而不是我答案中的1000 * 10矩阵),所以你现在需要取colSums
。另外,你在哪里放n
?
正确的功能是
F <- function(n, B=1000) mean(colSums(replicate(B, rexp(10, rate = 0.5))) <= n)
对于给定示例的非蒙特卡罗方法,请参阅其他答案。指数分布是伽马分布的一个特例,后者具有加性属性。
我正在给你蒙特卡罗方法,因为你在问题中给它起了名字,并且它适用于你的例子之外。