【问题标题】:Calculating probabilities of simulated random variables in R计算 R 中模拟随机变量的概率
【发布时间】:2018-08-29 13:56:15
【问题描述】:

我有以下图表:

我需要从 A 到 B。我还假设我每天都在从 A 走最快的路线

节点之间的行程时间(以小时为单位)呈指数分布。我在 R 中使用相关的 lambda 值对它们进行了如下模拟:

AtoX <- rexp(1000, 4)
AtoY <- rexp(1000, 2.5)
XtoY <- rexp(1000, 10)
YtoX <- rexp(1000, 10) 
XtoB <- rexp(1000, 3)
YtoB <- rexp(1000, 5)

我计算了R中每天的平均旅行时间如下:

AXB <- AtoX + XtoB
AYB <- AtoY + YtoB
AXYB <- AtoX + XtoY + YtoB
AYXB <- AtoY + YtoX + XtoB 

TravelTimes <- pmin(AXB, AYB, AXYB, AYXB)
averageTravelTime <- mean(TravelTimes)

我现在每天都在尝试查找以下内容:

  1. 从 A 到 B 的四种可能路线中的每一种的概率是多少?

  2. 我必须旅行超过半小时的概率是多少?

对于(1),我知道我需要为每条路线取累积分布函数(CDF)P(x

对于(2),我理解需要取累积分布函数(CDF) P(0.5 => X),其中0.5表示半小时。

我才刚刚开始学习 R,我不确定如何去做。

阅读文档,似乎我可能需要执行以下操作来计算 CDF:

pexp()

1 - pexp()

我该怎么做?

【问题讨论】:

    标签: r statistics simulation probability exponential


    【解决方案1】:

    令 R1、R2、R3、R4 以某种顺序为对应于 4 条路线总时间的随机变量。然后,作为独立指数随机变量的总和,它们中的每一个都遵循 Erlang 或 Gamma 分布(参见here)。

    要回答 1,您需要找到 P(min{R1, R2, R3, R4} = R_i) ,其中 i=1,2,3,4。虽然独立指数随机变量的最小值是易于处理的(请参阅here),但据我所知,Erlang/Gamma 分布通常不是这种情况。因此,我相信您需要使用模拟以数字方式回答这个问题。

    第二个问题同样适用于求 P(min{R1, R2, R3, R4} >= 1/2)。

    因此,我们有

    table(apply(cbind(AXB, AYB, AXYB, AYXB), 1, which.min)) / 1000 
    #     1     2     3     4 
    # 0.312 0.348 0.264 0.076 
    

    mean(TravelTimes >= 0.5)
    # [1] 0.145
    

    我们的估计。通过将 1000 增加到更高的数字(例如,1e6 工作得很快),可以使这些估计更精确。

    【讨论】:

    • 你好,朱利叶斯!并再次感谢您的帮助!关于均值(TravelTimes >= 0.5),这不是指总体(所有天)均值吗?我们不应该关注每天 >= 0.5 的概率吗?还是我又误解了?
    • @ThePointer, mean(TravelTimes &gt;= 0.5) 是一个方便的技巧。 TravelTimes &gt;= 0.5 是与 TRUE 的逻辑向量,当时需要超过 30 分钟。因此,我们想要sum(TravelTimes &gt;= 0.5) / 1000,但mean(TravelTimes &gt;= 0.5) 完全相同。在这种情况下,我们估计伯努利随机变量的参数p 在耗时超过 30 分钟时为 1,否则为 0。 (1 * (TravelTimes &gt;= 0.5) 是这个随机变量的实现。)
    • 啊,我明白了。哇,再次感谢您的帮助!真正有启发性的答案!
    猜你喜欢
    • 2012-03-15
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多