【问题标题】:Compute probability of union set of four continuous random variables in R计算 R 中四个连续随机变量的联合集的概率
【发布时间】:2021-10-21 04:23:58
【问题描述】:

我有四个独立变量X1, X2, X3, X4 具有标准正态分布。我想计算P(X1 > A | X2 > A | X3 > A | X4 > A) 的概率。我在 R 中编写了一个函数,它可以正确计算任何大于 0 的 A 值的概率,但对于任何小于 0 的值,结果都很小:

prob_union_greater <- function(x){ 
   (1 - pnorm(x))*4 - 6*((1 - pnorm(x))^2) + 3*((1 - pnorm(x))^3) - ((1 - pnorm(x))^4)  
} 

我尝试为P(X1 &lt; A | X2 &lt; A | X3 &lt; A | X4 &lt; A) 的情况编写一个类似的函数,但在这里我遇到了相反的问题:对于 A 的负值它有效,对于正值它不起作用。

prob_union_smaller <- function(x){
   pnorm(x)*4 - 6*(pnorm(x)^2) + 3*(pnorm(x)^3) - (pnorm(x)^4)  
}

我在这里错过了什么?

【问题讨论】:

  • 你是如何得出这个公式的?你的随机变量是独立的吗?
  • 啊,是的,这就是庞加莱公式。这是4*(pnorm(x)^3),而不是3
  • 哎呀,不知道为什么我错过了...感谢您指出!

标签: r statistics probability


【解决方案1】:

你可以试试下面的代码

prob_union_greater <- function(x) {
  p <- pnorm(x, lower.tail = FALSE)
  4 * p - 6 * p^2 + 4 * p^3 - p^4
}

prob_union_smaller <- function(x) {
  p <- pnorm(x)
  4 * p - 6 * p^2 + 4 * p^3 - p^4
}

你会得到

> prob_union_greater(1)
[1] 0.4989328

> prob_union_smaller(1)
[1] 0.9993664

【讨论】:

【解决方案2】:

我认为你的函数可以更简洁地写成:

prob_union_greater <- function(x) (1 - pnorm(x)) * sum(pnorm(x)^(0:3))
prob_union_smaller <- function(x) prob_union_greater(-x)

这给了我们:

prob_union_greater(-1)
#> [1] 0.9993664

prob_union_greater(0)
#> [1] 0.9375

prob_union_greater(1)
#> [1] 0.4989328

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 2021-10-07
    • 2017-06-05
    • 1970-01-01
    • 2012-03-15
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多