马尔科夫链蒙特卡洛采样(MCMC)入门

1、从随机变量分布中采样

研究人员提出的概率模型对于分析方法来说往往过于复杂。越来越多的研究人员依赖数学计算的方法处理复杂的概率模型,研究者通过使用计算的方法,摆脱一些分析技术所需要的不切实际的假设。(如,正态和独立)

大多数近似方法的关键是在于从分布中采样的能力,我们需要通过采样来预测特定的模型在某些情况下的行为,并为潜在的变量(参数)找到合适的值以及将模型应用到实验数据中,大多数采样方法都是将复杂的分布中抽样的问题转化到简单子问题的采样分布中。

本章,我们解释两种采样方法:逆变换方法(the inverse transformation method)和拒绝采样(rejection sampling)。这些方法主要适用于单变量的情况,用于处理输出单变量的问题。在下一章,我们讨论马尔科夫链蒙特卡洛方法(Markov chain Monte Carlo),该方法可以有效的用于多元变量分布采样。

1.1 标准分布

有一些分布被经常用到,这些分布被MATLAB作为标准分布实现。在MATLAB统计工具箱(Matlab Statistics Toolbox supports)实现了一系列概率分布。使用MATLAB工具箱可以很方便的计算这些分布的概率密度、累积密度、并从这些分布中取样随机值。表1.1列举了一些MATLAB工具箱中的标准分布。在MATLAB文档中列举了更多的分布,这些分布可以用MATLAB模拟。利用在线资源,通常很容易能找到对其他常见分布的支持。

为了说明如何使用这些函数,Listing 1.1展示了正态分布N(μ,σ)可视化的MATLAB代码,其中μ=100,σ=15。

举例

举个例子,可以想象一下用该正态分布表示观察到的人群的IQ系数变化。该代码显示了了如何展示概率密度和累积密度。它还展示了如何从该分布中抽取随机值以及如何使用hist函数可视化这些随机样本。代码的输出结果如图1.1所示。类似的,图1.2可视化离散的二项分布Binomial(N,θ),其中参数N=10,θ=0.7。该分布可认为是进行10次实验,每次试验成功的概率是θ=0.7。

%% Explore the Normal distribution N( mu , sigma )
 mu = 100; % the mean
 sigma = 15; % the standard deviation
 xmin = 70; % minimum x value for pdf and cdf plot
 xmax = 130; % maximum x value for pdf and cdf plot
 n = 100; % number of points on pdf and cdf plot
 k = 10000; % number of random draws for histogram

% create a set of values ranging from xmin to xmax
 x = linspace( xmin , xmax , n );
 p = normpdf( x , mu , sigma ); % calculate the pdf
 c = normcdf( x , mu , sigma ); % calculate the cdf

figure( 1 ); clf; % create a new figure and clear the contents

subplot( 1,3,1 );
 plot( x , p , ‘k?‘ );
 xlabel( ‘x‘ ); ylabel( ‘pdf‘ );
 title( ‘Probability Density Function‘ );

subplot( 1,3,2 );
 plot( x , c , ‘k?‘ );
 xlabel( ‘x‘ ); ylabel( ‘cdf‘ );
 title( ‘Cumulative Density Function‘ );

% draw k random numbers from a N( mu , sigma ) distribution
 y = normrnd( mu , sigma , k , 1 );

subplot( 1,3,3 );
 hist( y , 20 );
 xlabel( ‘x‘ ); ylabel( ‘frequency‘ );
 title( ‘Histogram of random values‘ );

Listing 1.1: Matlab code to visualize Normal distribution.

1.2 从非标准分布中采样

我们希望MATLAB工具也支持从非标准分布中采样,这种情况在建模过程中经常出现,因为研究人员可以提出一种新的噪声过程或已存在分布的组合方式。复杂采样问题的计算方法通常依赖于我们已经知道如何有效地进行采样的分布。这些从简单分布中采样的随机值可以被转换成目标分布需要的值。事实上,这一节我们讨论的一些技术是MATLAB的内部分布,如正态分布和指数分布。

1.2.1 用离散变量进行逆变换采样(Inverse transform sampling)

逆变换采样(也被成为逆变换方法)即给定累积分布函数的逆,可从任意概率分布中生成随机数。这个方法是对均匀分布的随机数字进行采样(在0到1之间)然后使用逆累积分布函数转换这些值。该过程的简单之处就在于,潜在的采样仅仅依赖对统一的参数进行偏移和变换。该过程可以用于采样很多不同种类的分布,事实上,MATLAB实现很多随机变量生成方法也是基于该方法的。

在离散分布中,我们知道每个输出结果的概率。这种情况下,逆变换方法就需要一个简单的查找表。

给定一个非标准的离散分布的例子,我们使用一些实验数据来研究人类如何能产生一致的随机数(如Treisman and Faulkner,1987)。在这些实验中,被测试者会产生大量的随机数字(0,…,9)。研究人员根据每个随机数字的相对频率进行制表。你可能会怀疑实验对象不会总是产生均匀分布。表1.2.1展示了一些典型的数据,其中可以看出一些比较低的和高的数字容易被忽视,而一些特殊数字(如数字4)占过高的比例。由于某种原因,数字0和9从来没有被产生。在任何情况下,这些数字都是相当典型的,而且证明了人类不能很好地产生均匀分布的随机数字。

From:

https://mp.weixin.qq.com/s?__biz=MzU2OTA0NzE2NA==&mid=2247483828&idx=1&sn=24dc135cf0d45a1dd276c0247c3e99d4&chksm=fc85e0a7cbf269b1b368465431e8050f1591f8d5611a923de92d999aed47abd8ce5cb0367142&scene=21#wechat_redirect

原文地址:https://www.cnblogs.com/emanlee/p/12368000.html

时间: 2024-10-07 13:42:16

马尔科夫链蒙特卡洛采样(MCMC)入门的相关文章

PyMC:马尔科夫链蒙特卡洛采样工具

PyMC是一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样工具拟合算法的Python库.PyMC的灵活性及可扩展性使得它能够适用于解决各种问题.除了包含核心采样功能,PyMC还包含了统计输出.绘图.拟合优度检验和收敛性诊断等方法. 加qq群813622576或vx;tanzhouyiwean免费领取Python学习资料 特性 PyMC使得贝叶斯分析尽可能更加容易.以下是一些PyMC库的特性: 用马尔科夫链蒙特卡洛算法和其他算法来拟合贝叶斯统计分析模型. 包含了大范围的常用统计分布. 尽可能地使用了

MCMC(二)马尔科夫链

MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)M-H采样和Gibbs采样(待填坑) 在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇讲到的马尔科夫链来帮忙. 1. 马尔科夫链概述 马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态.举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只

《概率统计》基于马尔科夫链的近似采样

楔子 从这一篇开始,我们主要来介绍基于马尔科夫链的近似采样过程.具体如何采样,以及整个采样过程中的思维过程,我们随着这篇的内容讲解而逐步展开 马尔科夫链的稳态与采样的关系 马尔科夫链的平稳分布是一个意义非凡的重要特性,我们换个角度说明一下大家就能明白它的重要意义:也就是说无论我们的起始状态是位于状态 1.状态 2 还是状态 3,在状态转移矩阵 P 的作用下,经过足够大的 n 步转移之后,它处于三种状态的概率都是固定的 利用下面这幅图,我们可以把这个状态转移和到达稳态的过程表达得更加直白一些: 好

马尔科夫链与蒙特卡洛方法采样算法

马尔科夫链 http://wenku.baidu.com/link?url=26MSlOhtBMPQJz3ta2p3bM6IMdLsvvHQ2mzw8AI2GcSdZAI7Ukdf1rl4KR6VUojnuutXwU5EqHNv-V0acHQn1PlkoyYT0j7DrVRWskg_Kr7&pn=50 蒙特卡洛采样算法 http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ http://imbinwang.github.io/blog

马尔科夫链

马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态.举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系.当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它. 原文地址:https://www.cnblogs.com/lansebandaoti/p/11343132.html

马尔科夫链和隐马尔可夫模型(转载)

马尔可夫模型是由Andrei A. Markov于1913年提出的 ?? 设 SS是一个由有限个状态组成的集合 S={1,2,3,-,n?1,n}S={1,2,3,-,n?1,n} 随机序列 XX 在 tt时刻所处的状态为 qtqt,其中 qt∈Sqt∈S,若有: P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i)P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i) aij≥0∑jnaij=1aij≥0∑jnaij=1 则随机序列 XX构成一个一

Chapter 4 马尔科夫链

4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什么根据的,也缺乏研究的意义. 举例来说的话,如果用来代替某个公司,比如Google,在个交易日之后的股票价格. 那么说第天的股票价格和之前第天,第天,第乃至第天的股票价格一点关系都没有,这样是说不过去的. 但是说第天股票的收盘价格依赖于第天的收盘价格还是有点道理的. 同样还可以做出这样的合理假设:在

利用隐马尔科夫链(HMM)模型实现中文分词

1.什么是HMM? 隐马尔科夫链(HMM)是一个五元组: 隐状态集合 ; 观测状态集合: 状态概率转移矩阵: 观察状态概率矩阵: 初始状态概率分布: 2.HMM有两个假设: 齐次马尔可夫链假设:任意时刻的隐藏状态只依赖与前一时刻的隐藏状态. 观测独立性假设:任意时刻的观察状态,只依赖与当前时刻的隐藏状态. 3.HMM可以解决3类基本问题: 评估观察序列的概率. 学习模型参数.即给定观察序列,估计模型的参数,是观察序列出现的概率最大. 预测问题.即给定观察序列和模型,求最有可能出现的对应状态序列.

13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概率等概念,是计算机学生必学的知识点,然而理论的抽象性往往让学生很难深入地去体会和理解.而本文,将这些抽象的理论概念,用可视化的方式来解释,还可调节相应参数来改变结果,使这些抽象概念变得生动而立体! 计算机相关概念太难.太抽象?别怕,往下看! 人类对视觉信息的记忆要远远大于文字信息.使用图表等形式的可视化,可以让抽象.难懂的概念一目了然:在此基础之上,添