Diagnostyka MCMC Geweke

14

Korzystam z próbnika Metropolis (C ++) i chcę użyć poprzednich próbek do oszacowania współczynnika konwergencji.

Jedną z łatwych do wdrożenia diagnostyki, którą znalazłem, jest diagnostyka Geweke , która oblicza różnicę między dwoma średnimi próbkami podzielonymi przez szacowany błąd standardowy. Błąd standardowy jest szacowany na podstawie gęstości widmowej przy wartości zerowej.

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

gdzie , to dwa okna w łańcuchu Markowa. Przeprowadziłem badania nad tym, czym są i ale zagłębiłem się w literaturę na temat gęstości widmowej energii i spektrum mocy gęstość, ale nie jestem ekspertem w tych tematach; Potrzebuję tylko szybkiej odpowiedzi: czy te ilości są takie same jak wariancja próbki? Jeśli nie, jaki jest wzór ich obliczania?ABSθA^(0)SθB^(0)

Kolejną wątpliwością w tej diagnostyce Geweke jest to, jak wybrać ? W powyższej literaturze powiedziano, że jest to funkcja funkcjonalna i powinna sugerować istnienie gęstości widmowej , ale dla wygody najprostszym sposobem jest użycie funkcja tożsamości (użyj samych próbek). Czy to jest poprawne?θθ(X)SθA^(0)

Pakiet R Coda ma opis, ale nie określa również sposobu obliczania wartościS

Yang
źródło
możesz zajrzeć do wnętrza codafunkcji, geweke.diagaby zobaczyć, co ona robi ...
Ben Bolker

Odpowiedzi:

4

Możesz przejrzeć kod geweke.diagfunkcji w codapakiecie, aby zobaczyć, jak obliczana jest wariancja, poprzez wywołanie spectrum.ar0funkcji.


Oto krótka motywacja do obliczenia gęstości widmowej procesu AR ( ) przy zera.p

pλ

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

p0

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

Obliczenia wyglądałyby wtedy mniej więcej tak (podstawiając zwykłe estymatory na parametry):

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)
tchakravarty
źródło
0

S.xx(ω)S.xx(0)

xuhdev
źródło