2017-10-18 8 views
1

integral2またはintegral3を使用してMATLABでCDFを計算する際に問題が発生しました。私が2つの独立した正規確率変数XとYを有し、平均値ベクトルがmu = [5;50]であり、共分散行列がc = [3^2,0; 0,3^2]であると仮定する。MATLABでCDFを計算するには、integral2またはintegral3を使用してください

彼らは独立しているため、関節のPDFは2つのPDFの乗算である、私はそれのように私を1与えるべきだと思う

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

、ドメイン全体にわたり確率を計算するために、次のコードを使用その答えが、その代わりに、それは

1.8174e-10 

は、それから私は、

mvncdf([Inf,Inf],[5,50],diag([3,3].^2)) 
mvncdf機能を試してみまし返します

正しい答え、1を返します。私も1Dバージョン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に近い何かを返し

normcdf(Inf,5,3)*normcdf(Inf,50,3) 
:あなたは、例えば、

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

あなたmvncdfの例では、直接このような何かを計算するために完全に異なる方法を使用して、あなたのディストリビューションの手段についての対称性を利用することによってこの問題を回避することができます

関連する問題