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

R语言二维多元正态分布概率计算结果不符的问题求助

二维多元正态分布概率计算的错误修正

错误点说明

  • 数值积分逻辑错误:你用pmvnorm(lower = -Inf, upper = c(2, 3))计算的是$P(X_1 \leq 2, X_2 \leq 3)$的概率,但题目要求的是$P(X_1 > 2, X_2 > 3)$,两者完全相反。
  • 结果单位不一致:模拟部分你将结果乘以100转换成了百分比(20.307%),但数值积分结果是原始概率(0-1区间),单位不统一导致看起来结果不匹配。

修正后的代码

library(mvtnorm)

# 定义参数
mu <- c(1, 2)
Sigma <- matrix(c(9, 5, 5, 36), nrow=2)  # 协方差矩阵:sigma1²=9,sigma2²=36,协方差=5

# A) 数值积分求P(X1>2, X2>3)
# 正确用法:lower设为(2,3),upper设为Inf,计算右上象限的概率
p_x1_gt_2_and_x2_gt_3 <- pmvnorm(lower = c(2, 3), upper = c(Inf, Inf), mean = mu, sigma = Sigma)
cat("数值积分结果(概率):", p_x1_gt_2_and_x2_gt_3, "\n")

# B) 模拟法求概率(100000次模拟)
set.seed(123)  
simulated_points <- mvrnorm(100000, mu = mu, Sigma = Sigma)

# 计算概率(保持和数值积分一致的单位,不乘以100)
prob_gt_2_and_3 <- sum(simulated_points[,1] > 2 & simulated_points[,2] > 3) / nrow(simulated_points)
cat("模拟法结果(概率):", prob_gt_2_and_3, "\n")

修正后的结果示例

数值积分结果(概率): 0.2027273 
模拟法结果(概率): 0.20307 

两者结果已高度一致,误差来自模拟的随机性,增加模拟次数可进一步缩小误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:40:04