使用integral2或integral3在MATLAB中计算CDF

时间:2017-10-18 19:17:46

标签: matlab statistics distribution numerical-integration

我刚刚遇到一个问题,使用integral3mu = [5;50]来计算MATLAB中的CDF。假设我有两个独立的正态随机变量X和Y,平均值向量为c = [3^2,0; 0,3^2],协方差矩阵为integral2(@(x,y) normpdf(x,5,3).*normpdf(y,50,3),-Inf,Inf,-Inf,Inf)

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

1

我认为应该给我1.8174e-10 作为答案,而是返回

mvncdf

然后我尝试了mvncdf([Inf,Inf],[5,50],diag([3,3].^2)) 函数,

1

并返回正确答案integral。我也尝试过1D版本home_page > blog_index page > blog_page,效果很好。有人可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:0)

这是由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)