MCMC Geweke 진단


14

Metropolis 샘플러 (C ++)를 실행 중이며 이전 샘플을 사용하여 수렴 률을 추정하려고합니다.

내가 찾은 진단을 쉽게 구현할 수있는 Geweke 진단 은 두 표본 평균의 차이를 추정 된 표준 오차로 나눈 값을 계산합니다. 표준 오차는 0의 스펙트럼 밀도로부터 추정됩니다.

Zn=θ¯Aθ¯B1nASθA^(0)+1nBSθB^(0),

여기서 , B 는 Markov 체인 내에있는 두 개의 창입니다. 나는 ^ S A θ ( 0 )^ S B θ ( 0 )에 관한 연구를 했지만 에너지 스펙트럼 밀도와 파워 스펙트럼 밀도 에 관한 문헌을 엉망으로 만들지 만이 주제에 대한 전문가는 아닙니다. 나는 단지 빠른 대답이 필요합니다.이 양은 표본 분산과 동일합니까? 그렇지 않다면, 그것들을 계산하는 공식은 무엇입니까?ABSθA^(0)SθB^(0)

이 Geweke 진단에 대한 또 다른 의심은 를 선택하는 방법입니다 . 위의 문헌은 그것이 일부 기능적 θ ( X ) 이며 스펙트럼 밀도 ^ S A θ ( 0 ) 의 존재를 암시해야한다고 말 했지만 편의상 가장 간단한 방법은 항등 함수 (샘플 자체 사용)를 사용하는 것 같습니다. 이 올바른지?θθ(X)SθA^(0)

R coda 패키지 에는 설명이 있지만 값 을 계산하는 방법을 지정하지는 않습니다 .S


coda함수 의 기능 geweke.diag을 살펴보면 그 기능 을 확인할 수 있습니다.
Ben Bolker

답변:


4

패키지 의 geweke.diag함수 코드를 통해 함수 coda호출을 통해 분산 계산 방법을 확인할 수 spectrum.ar0있습니다.


다음은 0에서 AR ( ) 프로세스 의 스펙트럼 밀도 계산에 대한 짧은 동기입니다 .p

주파수 λ 에서 AR ( ) 프로세스pλ스펙트럼 밀도 는 다음 식으로 주어진다 : 여기서αj는 자기 회귀 매개 변수입니다.

f(λ)=σ2(1j=1pαjexp(2πιjλ))2
αj

p0

f(0)=σ2(1j=1pαj)2

그런 다음 계산은 다음과 같이 보일 것입니다 (일반적인 추정값을 매개 변수로 대체).

tsAR2 = arima.sim(list(ar = c(0.01, 0.03)), n = 1000)  # simulate an AR(2) process
ar2 = ar(tsAR2, aic = TRUE)  # estimate it with AIC complexity selection

# manual estimate of spectral density at zero
sdMan = ar2$var.pred/(1-sum(ar2$ar))^2

# coda computation of spectral density at zer0
sdCoda = coda::spectrum0.ar(tsAr2)$spec

# assert equality
all.equal(sdCoda, sdMan)

0

Sxx(ω)Sxx(0)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.