2017-10-18 109 views
1

我剛剛遇到了使用integral2integral3在MATLAB中計算CDF的問題。假設我有兩個獨立的正態隨機變量X和Y,平均值向量是mu = [5;50],協方差矩陣是c = [3^2,0; 0,3^2]使用integral2或integral3來計算MATLAB中的CDF

因爲它們是獨立的,聯合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。我也嘗試了一維版本integral,這工作正常。任何人都可以爲我解釋這個嗎?

回答

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)