python马尔科夫链蒙特卡洛(MCMC)方法pyMC

马尔科夫蒙特卡洛(MCMC)算法

马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo),简称MCMC,产生于20世纪50年代早期,是在贝叶斯理论框架下,通过计算机进行模拟的蒙特卡洛方法(Monte Carlo)。该方法将马尔科夫(Markov)过程引入到Monte Carlo模拟中,实现抽样分布随模拟的进行而改变的动态模拟,弥补了传统的蒙特卡罗积分只能静态模拟的缺陷。MCMC是一种简单有效的计算方法,在很多领域到广泛的应用,如统计物、贝叶斯(Bayes)问题、计算机问题等。

  • 中文名
    马尔科夫链蒙特卡洛方法
  • 外文名
    Markov Chain Monte Carlo Method
  • 简 称
    MCMC方法

python库pyMC

  • pyMC简介
    PyMC是一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样工具拟合算法的Python库。PyMC的灵活性及可扩展性使得它能够适用于解决各种问题。除了包含核心采样功能,PyMC还包含了统计输出、绘图、拟合优度检验和收敛性诊断等方法。

  • 安装
    PyMC可以运行在Mac OS X,Linux和Windows系统中。安装一些其他预装库可以更大程度地提高PyMC的性能和功能。
    本文以Linux系统安装为例进行说明。

  • 依赖库
    Python2.6及以上版本

    NumPy(1.6版本及以上)

    Matplotlib(1.0版本及以上)

    SciPy(可选)

    pyTables(可选)

    pydot(可选)

    IPython(可选)

    nose(可选)

  • pip安装

    pip install pymc3
    

    依赖python3

  • pyMC3官方文档说明
    官方文档地址

  • pyMC3官方API
    官方API地址

  • 示例代码

  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)
  1. 调用模型:
import pymc
import mymodel

S = pymc.MCMC(mymodel, db='pickle')
S.sample(iter=10000, burn=5000, thin=2)
pymc.Matplot.plot(S)

你可能感兴趣的:(人工智能,实用工具,MCMC)