2011-01-01 3 views
5

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. 신속하게이 작업을 수행하는 방법을 알고하지 않기 때문에)

+0

내가하는 일에 분명히 잘못된 것이 없습니다. 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")] –

답변

7

제로 상관 관계는하지 않습니다 하지 공동으로 비 가우시안를 들어, 독립을 의미하는 확률 변수를 분산!

정교하게 말하십시오. 여기에 버그가 없습니다. 이 결함은 다 변수 Student-t 확률 변수가 상관 관계가없는 경우 일 때 독립인데, 이는 분명히 사실이 아닙니다. 상관 관계가 독립성을 의미하지 않는 유일한 다중 변수 분포 클래스는 MV 가우시안 분포.

n=2의 경우를 고려, 공동 MV 학생-T의 분포를 따르는 두 개의 상관 확률 변수가 독립적이지 보려면 :
require(mvtnorm) 
x <- rmvt(100000, sigma = diag(2), df=4, delta = rep(0,2)) 

지금 x의 각 열은 두 확률 변수의 실현을 나타냅니다.

사각형 x[,1]x[,2]의 상관 관계가 30.4 %로 높은 그러나
> cor(x[,1], x[,2]) 
[1] -0.003378811 

, 확실히 이 증명 x[,1]x[,2] 제로 예입니다하지 않는 것이 : 우리는 먼저 자신의 상관 관계가 매우 작다는 사실을 확인 통계적으로 독립적이지 않습니다.

> cor(x[,1]^2, x[,2]^2) 
[1] 0.3042684 
+0

감사합니다. 당신의 대답을 읽은 후에, 당신이 옳다는 것을 나 자신에게 확신시키기까지는 어느 정도 시간이 걸렸습니다. 구형 분포와 멋진 공 모양의 산점도에 대한 나의 직감은 꽤 잘못 될 수 있습니다. – user333700

+0

그리고 t- 배포에 대한 걱정을 멈 추었을 때, 나는 프로그램에서 버그를 발견했으며 이제 mvtnorm 결과와 일치시킬 수 있습니다. – user333700

+0

나는 pchalasni의 대답을 읽고 upvoted. 나중에 혼란을 해결하기 위해 수행 한 작업을 보여주는 수정 사항을 질문에 추가하는 것이 좋습니다. 나는 두 가지 방법이 일치 할 것으로 기대하지 않았지만 아마도 당신은 뭔가 유익한 것을 발견했을 것입니다. –

관련 문제