Bayesian

如何解釋 MCMC 中的自相關圖

  • October 13, 2014

我通過閱讀 John K. Kruschke 的書做貝葉斯數據分析來熟悉貝葉斯統計,也被稱為“小狗書”。在第 9 章中,通過這個簡單的例子介紹了層次模型:

伯努利觀察是 3 個硬幣,每個 10 次翻轉。一個顯示 9 個頭,其他 5 個頭和其他 1 個頭。 我已經使用 pymc 來推斷超參數。

with pm.Model() as model:
# define the 
   mu = pm.Beta('mu', 2, 2)
   kappa = pm.Gamma('kappa', 1, 0.1)
   # define the prior
   theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
   # define the likelihood
   y = pm.Bernoulli('y', p=theta[coin], observed=y)

   # Generate a MCMC chain
   step = pm.Metropolis()
   trace = pm.sample(5000, step, progressbar=True)
   trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

我的問題是關於自相關。我該如何解釋自相關?你能幫我解釋一下自相關圖嗎?

在此處輸入圖像描述

它說隨著樣本彼此之間的距離越來越遠,它們之間的相關性會降低。對?我們可以用它來繪製找到最佳細化嗎?細化會影響後驗樣本嗎?畢竟,這劇情有什麼用?

首先:如果處理 MCMC 輸出的內存和計算時間不受限制,則細化永遠不是“最佳”的。在相同數量的 MCMC 迭代中,細化鏈總是(平均而言)導致 MCMC 近似的損失精度。

因此,基於自相關或任何其他診斷的常規細化是不可取的。參見 Link, WA & Eaton, MJ (2012) 關於 MCMC 中鏈條的細化。生態與進化方法,3, 112-115。

然而,在日常實踐中,通常情況下您必須使用採樣器不能很好地混合的模型(高自相關)。在這種情況下

1)閉鏈元素非常相似,這意味著扔掉一個不會丟失很多信息(這就是自相關圖所顯示的)

2)你需要大量的重複來獲得收斂,這意味著如果你不瘦,你會得到非常大的鏈。正因為如此,使用完整的鏈可能會非常緩慢,需要大量存儲,甚至在監控大量變量時會導致內存問題。

3)此外,我有一種感覺(但我從未系統地測試過)細化也使 JAGS 更快一些,因此可能能夠同時獲得更多迭代。

所以,我的觀點是:自相關圖可以粗略估計你通過細化丟失了多少信息(請注意,雖然這是整個後驗的平均值,但在特定區域的損失可能更高)。

這個價格是否值得付出取決於您在節省計算資源和以後的時間方面通過細化獲得的收益。如果 MCMC 迭代很便宜,您總是可以通過運行更多迭代來補償細化的損失。

引用自:https://stats.stackexchange.com/questions/119879

comments powered by Disqus