2014-11-20 2 views
0

Runjags 분명히 컨버전스 문제가 체인에 대한 psrf = 1.0047 매우 낮은보고 :runjags 요약에서 psrf 값이 너무 낮습니까?

enter image description here

> print(o, vars = "q_date2") 

JAGS model summary statistics from 3000 samples (chains = 3; adapt+burnin = 1000): 

     Lower95 Median Upper95  Mean  SD MCerr MC%ofSD SSeff AC.10 psrf 
q_date2 -0.17611 -0.10467 0.0053844 -0.087376 0.063296 0.023726 37.5  7 0.022495 1.0047 

나는 psrf 사용 코다을 계산하려고 할 때, 나는 훨씬 더 합리적으로 보이는 결과를 얻을 :

> gelman.diag(as.mcmc.list(o)[,'q_date2'], transform=FALSE, autoburnin=FALSE) 
Potential scale reduction factors: 

    Point est. Upper C.I. 
[1,]  3.54  7.94 

그렇다면 runjags에서보고 한 psrf은 왜 그렇게 낮습니까? runjags의 문제입니까, 아니면 제가 잘못하고 있습니까?

저는 R 3.1.0에서 현재 버전의 runjags (1.2.1-0)를 사용합니다.

편집 : 요약을 생성하는 동안 내가 경고 있어요 - 전에 언급하지 않는 미안 :

Warning messages: 
1: In autocorrs[x$stochastic] <- x$autocorr[4, ] : 
    number of items to replace is not a multiple of replacement length 
2: In psrfs[x$stochastic] <- x$psrf$psrf[, 1] : 
    number of items to replace is not a multiple of replacement length 

답변

1

이 나타납니다 psrf가 제대로 계산되고 있지만되고 있음 (오프라인 나에게 전송되는 정보에서) 일부 정보는 일부 반 확증적인 모니터링 변수에 사용할 수 없으므로 순서가 잘못되었다고보고되었습니다. 이것이 소프트웨어에 의해 선택되지 않는다는 사실은 제가 고칠 버그입니다!

그 사이에 summary()의 출력에 나열된 psrf를 무시하고 대신 RJout $ psrf (또는 자신의 코드)를 사용하거나 (b) 모니터링 된 변수를 제거 할 수 있습니다 (이 경우 M 사례). runjags의 개발 버전은 더 나은 솔루션을 제공합니다 (요약 통계 및 플롯은 모델이 반환 된 후 다시 계산됩니다). 다음 2 달 내에 CRAN에 있어야합니다.

이것은 추적 플롯의 수동 검사가 MCMC 분석의 필수 부분임을 상기시키는 데 좋습니다.

+0

감사합니다! MCMC에서'M' 변수, 즉'gelman.diag (as.mcmc.list (outRJ))'를 사용하여'gelman.diag'를 실행하면 실제로 "chol.default (W) : 순서 1의 선행 미성년자는 긍정적 인 명확한 "*가 아니다. 이것이 아마도이 문제가 발생한 이유 일 것입니다! – TMS

관련 문제