PyMC馬爾科夫鏈蒙特卡洛采樣工具
PyMC是一個實現(xiàn)貝葉斯統(tǒng)計模型和馬爾科夫鏈蒙塔卡洛采樣工具擬合算法的Python庫。PyMC的靈活性及可擴展性使得它能夠適用于解決各種問題。除了包含核心采樣功能,PyMC還包含了統(tǒng)計輸出、繪圖、擬合優(yōu)度檢驗和收斂性診斷等方法。
特性
PyMC使得貝葉斯分析盡可能更加容易。以下是一些PyMC庫的特性:
-
用馬爾科夫鏈蒙特卡洛算法和其他算法來擬合貝葉斯統(tǒng)計分析模型。
-
包含了大范圍的常用統(tǒng)計分布。
-
盡可能地使用了NumPy的一些功能。
-
包括一個高斯建模過程的模塊。
-
采樣循環(huán)可以被暫停和手動調(diào)整,或者保存和重新啟動。
-
創(chuàng)建包括表格和圖表的摘要說明。
-
算法跟蹤記錄可以保存為純文本,pickles,SQLite或MySQL數(shù)據(jù)庫文檔或HDF5文檔。
-
提供了一些收斂性診斷方法。
-
可擴展性:引入自定義的步驟方法和非常規(guī)的概率分布。
-
MCMC循環(huán)可以嵌入在較大的程序中,結(jié)果可以使用Python進(jìn)行分析。
安裝
PyMC可以運行在Mac OS X,Linux和Windows系統(tǒng)中。安裝一些其他預(yù)裝庫可以更大程度地提高PyMC的性能和功能。
預(yù)裝庫
PyMC的運行要求一些預(yù)裝庫的安裝及配置。
-
Python2.6及以上版本
-
NumPy(1.6版本及以上)
-
Matplotlib(1.0版本及以上)
-
SciPy(可選)
-
pyTables(可選)
-
pydot(可選)
-
IPython(可選)
-
nose(可選)
使用方法:
1. 模型定義:
# Import relevant modules
import pymc
import numpy as np
# Some data
n = 5*np.ones(4,dtype=int)
x = np.array([-.86,-.3,-.05,.73])
# Priors on unknown parameters
alpha = pymc.Normal('alpha',mu=0,tau=.01)
beta = pymc.Normal('beta',mu=0,tau=.01)
# Arbitrary deterministic function of parameters
@pymc.deterministic
def theta(a=alpha, b=beta):
"""theta = logit^{-1}(a+b)"""
return pymc.invlogit(a+b*x)
# Binomial likelihood for data
d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\
observed=True)
調(diào)用模型:
import pymc import mymodel S = pymc.MCMC(mymodel, db='pickle') S.sample(iter=10000, burn=5000, thin=2) pymc.Matplot.plot(S)
以上代碼運行會產(chǎn)生10000個后驗樣本。這個樣本會存儲在Python序列化數(shù)據(jù)庫中。
評論
圖片
表情
