【问题标题】:Use integral2 or integral3 to calculate CDF in MATLAB在MATLAB中使用integral2或integral3计​​算CDF
【发布时间】:2018-03-30 18:26:17
【问题描述】:

我刚刚在 MATLAB 中使用 integral2integral3 计算 CDF 时遇到了问题。假设我有两个独立的正态随机变量X和Y,均值向量为mu = [5;50],协方差矩阵为c = [3^2,0; 0,3^2]

由于它们是独立的,联合 PDF 是两个 PDF 的乘积,我使用以下代码计算整个域的概率,

integral2(@(x,y) normpdf(x,5,3).*normpdf(y,50,3),-Inf,Inf,-Inf,Inf)

我认为它应该给我1 作为答案,但相反,它返回

1.8174e-10

然后我尝试了mvncdf函数,

mvncdf([Inf,Inf],[5,50],diag([3,3].^2))

它会返回正确的答案,1。我还尝试了 1D 版本integral,效果很好。谁能帮我解释一下?

【问题讨论】:

    标签: matlab statistics distribution numerical-integration


    【解决方案1】:

    这是由于numerical imprecision(加上您的分布具有非零均值的事实)而发生的。您可以使用'AbsTol' option for integral2 来提高求解精度:

    integral2(@(x,y)normpdf(x,5,3).*normpdf(y,50,3),-Inf,Inf,-Inf,Inf,'AbsTol',1e-16)
    

    返回更接近1 的值。您可以通过利用分布均值的对称性来避免这种情况,例如,

    4*integral2(@(x,y)normpdf(x,5,3).*normpdf(y,50,3),5,Inf,50,Inf)
    

    您的mvncdf 示例使用完全不同的方法直接计算如下:

    normcdf(Inf,5,3)*normcdf(Inf,50,3)
    

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2023-03-17
      • 2015-02-10
      • 1970-01-01
      • 2021-08-01
      • 2012-12-20
      相关资源
      最近更新 更多