2017-10-18 21 views
1

integral2 또는 integral3을 사용하여 MATLAB에서 CDF를 계산할 때 문제가 발생했습니다. 두 개의 독립적 인 정규 확률 변수 X와 Y가 있고 평균값 벡터가 mu = [5;50]이고 공분산 행렬이 c = [3^2,0; 0,3^2]이라고 가정합니다. 그들은 독립적이기 때문에, 공동 PDF는 두 PDF 파일의 곱셈은MATLAB에서 CDF를 계산하려면 integral2 또는 integral3을 사용하십시오.

, 나는 그것이 나를에게 1를 제공해야한다고 생각, 전체 도메인에 걸쳐

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

을 확률을 계산하기 위해 다음 코드를 사용 대답 대신, 그것은

1.8174e-10 

그런 다음 나는 mvncdf 기능을 시도 반환

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

그리고 올바른 대답 인 1을 반환합니다. 나는 또한 잘 작동하는 1D 버전 integral을 시도했다. 아무도 나를 설명 할 수 있을까요?

답변

0

이는 numerical imprecision (배포판에 0이 아닌 수단이 있다는 사실과 결합 됨) 때문에 발생합니다. 1에 가까운

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

반환 뭔가 : 당신은 솔루션의 정확성을 높이기 위해 'AbsTol' option for integral2를 사용할 수 있습니다.

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 예를 직접 이런 일을 계산하기 위해 완전히 다른 방법을 사용, 예를 들면, 당신의 배포판의 수단에 대해 대칭을 활용하여이를 방지 할 수 있습니다