Діагностика MCMC Geweke


14

Я запускаю пробовідбірник Metropolis (C ++) і хочу використовувати попередні зразки для оцінки швидкості конвергенції.

Одним із найпростіших для впровадження діагностики, який я знайшов, є діагностика Geweke , яка обчислює різницю між двома вибірковими засобами, поділеними на оціночну стандартну помилку. Стандартна похибка оцінюється із спектральної щільності в нулі.

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

де , B - два вікна всередині ланцюга Маркова. Я провів кілька досліджень, що таке ^ S A θ ( 0 ) і ^ S B θ (ABSθA^(0) , але потрапити в халепу літератури з енергетичної спектральної щільності потужності іспектральної щільностіале я не експерт з цих питань; Мені просто потрібна швидка відповідь: ці величини збігаються з дисперсією вибірки? Якщо ні, то яка формула їх обчислення?SθБ^(0)

Ще один сумнів у цій діагностиці Geweke - як вибрати ? Вищевказана література говорила, що це деякий функціонал θ ( X ) і повинен означати існування спектральної щільності ^ S A θ ( 0 ) , але для зручності я здогадуюсь, що найпростішим способом є використання функції ідентичності (використання самих зразків). Це правильно?θθ(X)SθA^(0)

Пакет R- коду має опис, але не вказує, як обчислити значення S


ви можете заглянути в кишки codaфункції, geweke.diagщоб побачити, що вона робить ...
Бен Болкер

Відповіді:


4

Ви можете переглянути код geweke.diagфункції в codaпакеті, щоб побачити, як розраховується дисперсія, через виклик spectrum.ar0функції.


p

pλ

f(λ)=σ2(1-j=1pαjдосвід(-2πιjλ))2
де αj є авторегресивними параметрами.

Цей вираз значно спрощує при обчисленні спектральної щільності АР (p) процес у 0:

f(0)=σ2(1-j=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

Перевірте сторінку вікіпедії . Ви побачитеSхх(ω), яка є спектральною щільністю. У вашому випадку вам слід скористатисяSхх(0).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.