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

R语言mvtnorm包pmvnorm函数返回NaN的原因及替代方案咨询

mvtnorm::pmvnorm() 偶发返回NaN的问题排查与替代方案

我正在将多元概率作为目标函数进行非线性优化,最初误以为问题出在优化算法上,最终定位到是mvtnorm包的使用存在问题。

问题复现代码

library(mvtnorm)
pmvnorm(
  lower = c(-1.281552 , 7.089083, 0.5193308),
  upper = c(-1.200552, Inf, Inf),
  corr = diag(1, nrow =3)
) 

执行上述代码时,每10-20次就会返回NaN,而非预期的3.047822e-15。请问这是什么原因?是否存在可避免此类不稳定性的mvtnorm::pmvnorm()替代函数?


编辑补充

  • 根据评论区@LMc提示,设置seed = 10L可复现该错误
  • 评论区@PBull已给出优质解答
  • 评论区@Gregor Thomas提到使用Miwa()可修复问题(但该方法会将-Inf/+Inf近似为-1e4/1e4)

会话信息

R version 4.3.1 (2023-06-16)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux

Matrix products: default
BLAS: /usr/lib64/libblas.so.3.4.2
LAPACK: /usr/lib64/liblapack.so.3.4.2

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

time zone: America/New_York
tzcode source: system (glibc)

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] mvtnorm_1.2-4

loaded via a namespace (and not attached):
[1] compiler_4.3.1 tools_4.3.1 rstudioapi_0.16.0


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:51:13