在R中定义指数分布以估计概率

时间:2017-06-18 18:45:20

标签: r statistics simulation probability exponential-distribution

我有一堆随机变量(X1,....,Xn),它们是i.i.d. Exp(1/2)代表某个事件的持续时间。因此,这个分布显然具有2的预期值,但我在R中定义它时遇到了问题。我做了一些研究并发现了一些所谓的蒙特卡罗刺激,但我似乎没有找到我正在寻找的东西因为它。

我想要估算的一个例子是:假设我们有10个随机变量(X1,..,X10)如上所述分配,我们想确定例如概率P([X1+...+X10<=25])

感谢。

2 个答案:

答案 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)

对于给定示例的非蒙特卡罗方法,请参阅其他答案。指数分布是伽马分布的一个特例,后者具有加性属性。

我正在给你蒙特卡罗方法,因为你在问题中给它起了名字,并且它适用于你的例子之外。