You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

四个独立标准正态分布随机变量并集概率的R函数计算异常问题排查

问题分析与修正方案

你遇到的问题根源是容斥原理的组合数计算错误,具体来说是三个变量同时满足条件的交集项系数用错了。让我们一步步拆解:

容斥原理的正确展开

对于4个独立事件$E_1, E_2, E_3, E_4$(这里$E_i$表示$X_i > A$),并集的概率公式是:
$$
P(\bigcup_{i=1}^4 E_i) = \sum P(E_i) - \sum P(E_i \cap E_j) + \sum P(E_i \cap E_j \cap E_k) - P(E_1 \cap E_2 \cap E_3 \cap E_4)
$$
对应到组合数:

  • 单个事件的和:$\binom{4}{1} = 4$,所以第一项是$4 \times P(X>A)$
  • 两两交集的和:$\binom{4}{2} = 6$,所以第二项是$-6 \times [P(X>A)]^2$
  • 三者交集的和:$\binom{4}{3} = 4$(这里你用了3,这就是错误的核心!),所以第三项是$+4 \times [P(X>A)]^3$
  • 四者交集:$\binom{4}{4} = 1$,所以第四项是$-[P(X>A)]^4$

为什么A正负时表现不同?

  • 当$A>0$时,$P(X>A) = 1-pnorm(A)$的值很小,$3p3$和$4p3$的差值非常微小(比如$A=2$时,$p≈0.02275$,两者差值仅约$1.2×10^{-5}$),所以结果看起来“正确”,但实际上是近似值;
  • 当$A<0$时,$P(X>A)$的值很大(比如$A=-2$时,$p≈0.97725$),$3p3$和$4p3$的差值接近1,直接导致计算结果严重偏小。

同理,你的prob_union_smaller函数也犯了同样的错误——三者交集的系数用了3而非4,所以当$A>0$时,$pnorm(A)$很大,系数错误带来的偏差就会凸显出来。

修正后的函数

首先是修正容斥原理版本的函数:

prob_union_greater <- function(x){
  p <- 1 - pnorm(x)
  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
}

更简洁的替代方案

其实对于独立变量,我们可以利用补集的概率来简化计算,完全避免容斥原理的组合数错误:

  • $P(X_1>A \cup X_2>A \cup X_3>A \cup X_4>A) = 1 - P(\text{所有}X_i \leq A) = 1 - [pnorm(A)]^4$
  • $P(X_1<A \cup X_2<A \cup X_3<A \cup X_4<A) = 1 - P(\text{所有}X_i \geq A) = 1 - [1 - pnorm(A)]^4$

对应的R函数会更简洁高效:

prob_union_greater <- function(x){
  1 - pnorm(x)^4
}

prob_union_smaller <- function(x){
  1 - (1 - pnorm(x))^4
}

可以验证一下,比如当$A=0$时,正确概率是$1 - (0.5)^4 = 0.9375$,用修正后的函数计算完全正确,而你原来的函数得到的是$0.8125$,偏差明显。

内容的提问来源于stack exchange,提问作者Robn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:57:42