Genz와 Bretz에 이어 다 변수 t- 분포에 대한 cdf 알고리즘을 프로그래밍하려고했습니다. R의 참조 패키지는 mvtnorm입니다.내 숫자가 일치하지 않습니다. Rvvnn의 다 변수 t 분포
내 기능을 테스트 할 때 내 번호가 일치하지 않는 것으로 나타났습니다. mvtnorm 도움말에서 조정 된 다음 예제에서 다 변수 t 확률 변수에는 독립 구성 요소가 있습니다. 그래서 적분, 오류가 독립 확률
> (pt(upper, df) - pt(lower, df))**3
[1] 0.4988254
의 제품에 비해 3 독립적 확률
> lower <- -1
> upper <- 3
> df <- 4
> corr <- diag(3)
> delta <- rep(0, 3)
> pmvt(lower=lower, upper=upper, delta=delta, df=df, corr=corr)
[1] 0.5300413
attr(,"error")
[1] 4.321136e-05
attr(,"msg")
[1] "Normal Completion"
보고 된 오류가 4E-5 단지 제품을해야하는 것은
입니다 0.5300413 - 0.4988254 = 0.0312159
거의 동일한 범위에서 다양한 예제에 대한 R mvtnorm과 비교 된 자체 코드의 불일치.
저는 주로 R의 초보자입니다. 그래서 내가 뭘 잘못했거나 잘못 되었나요?
이 (내가 R-도움이 메일 링리스트에 가입하지, 그래서 내가 여기보십시오.)UPDATE를 : pchalasani가 설명했듯이, 내 통계가 잘못, 내 자신의 코드에서 버그가 일부 도우미에 있었다 t 배포 코드에없는 기능. 상관 관계가없는 것이 독립성을 의미하지 않는다는 것을 보는 좋은 방법은 조건부 배포를 보는 것입니다. 다음은 사 분위수에 대한 독립적 인 2 변수 확률 변수 (10000 샘플)에 대한 열 빈도 % * 100입니다 (열 변수에 대한 조건부 분포).
이변 상관 정상 variates
([[26, 25, 24, 23],
[24, 23, 24, 25],
[24, 27, 24, 24],
[24, 23, 26, 25]])
변량 상관 t는
([[29, 20, 22, 29],
[20, 31, 28, 21],
[20, 29, 29, 20],
[29, 18, 18, 29]])
처음과 마지막 열의 분포가 중간 기둥 매우 다르다 variates. (죄송 R 코드, 나는 R. 신속하게이 작업을 수행하는 방법을 알고하지 않기 때문에)
내가하는 일에 분명히 잘못된 것이 없습니다. 1 차원의 경우 pmvt()를 실행하면 괜찮아 보입니다. 2 차원의 경우 [pmvt (lower = rep (lower, 2), upper = rep (upper, 2), df = df)]는 1e-15의 공칭 오차를 갖는 0.6429955를 제공하는 반면, (pt) -pt (lower, df)^2는 0.6289736이다. 코드가 독립적 인 t 분포의 제품과 일치하는 답을 제공합니까? 나는 버그가있을 것 같지 않다는 것에 동의한다 - 당신이 놓친 정의에 뭔가있을 수 있을까? 더 이상 답변이 없으면 관리자에게 문의하십시오. [관리자 ("mvtnorm")] –