Subject: Hi, Nimble.
Hi there,
這週介紹一個(算是比較晚近)的工具,她提供了自動抽樣器(sampler)可以幫助我們進行貝氏計算。她就是 NIMBLE。
1) Nimble 採用跟擴展了 BUGS 語法。 這個好處在於,過去有大量的書、文件、期刊文章、範例等等都是用 BUGS 語法寫的,也就是包含所有用 WinBUGS, OpenBUGS, JAGS 平台寫的東西。BUGS 語法作為第一代的機率程式語言,這 20 年來已經累積很多 legacy。但是因為早期的工具大多已經不能用、不再更新、或是效率已經不行了。所以目前有看到在使用的大概都是 JAGS。
但是 JAGS 也有效率、收斂等方面的問題。所以在 2012 年,包含 Andrew Gelman 在內的學者開始推動 Stan 語言。現在所謂的貝氏統計學三神書:Bayesian data analysis, Statistical rethinking, 和 Doing Bayesian data analysis,都是以 Stan 為基礎,或至少提及 Stan。
Ulam()
, alist()
)所以說 Stan 已經是現在貝氏統計學的主流。但是坦白講,從 BUGS 要轉換到 Stan,需要花費很大的成本(尤其 Stan 又是一種很囉唆嚴謹的語言)。我自己就曾經想要動手把幾個期刊文章上的 BUGS 模型語法改寫成 Stan,花了很多心力但還是沒有成果。所以如果今天有一個東西能繼承過去 BUGS 留下來的寶物,但又能再快一點,那就太好了!
2) Nimble 速度比 JAGS 快。 有很多文章比較速度過這一點。我自己也實測過,Nimble(敏捷)是有比 JAGS 敏捷。但是過去 JAGS 已經有如 R2jags
這個套件可以做平行計算(幾條鍊子同時跑,比一條一條跑快)。但 Nimble 內建的平行計算功能還在開發中,目前只提供用 parallel
套件的作法。
3) Nimble 在混合模型的計算上有優勢。 有一點可能是 Nimble 可以贏過 Stan 的地方,那就是 Nimble 在混合模型計算。因為 Stan 主推的 NUTS 演算法沒辦法處理離散分配(待詳查)。所以 Nimble 在需要應用混合模型的領域應該會有很大的優勢。目前看到很多生態學家(ecologist )在使用這個,好像就是因為生態學領域的計算會涉及很多混合模型。
Best,
JW