我刚刚遇到一个问题,使用integral3
或mu = [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
,效果很好。有人可以帮我解释一下吗?
答案 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)