5.1.1 蒙特卡洛
什么是蒙特卡洛?
蒙特卡洛(Monte Carlo)是一种思想或一类方法,它通过随机采样来估计数学问题的数值解,本质上是通过大量采样来暴力解决问题,特别适用于复杂的积分、概率计算和优化问题等。
例子:如何利用蒙特卡洛方法估计圆周率π?
问题描述:在一个边长为 2 的正方形中,内嵌一个半径为 1 的圆,我们希望估计圆的面积。
生成随机样本:在正方形内随机生成n个点,记录落在圆内的点数m
计算估计值:
圆的面积与正方形面积的比值是(2r)2πr2=4π
通过 nm估计这个比值,π≈4×nm
增加样本数量:随着样本数量n增加,π的估计值会越来越接近真实值
在未知π的情况下,我们无法直接计算圆的面积,于是通过暴力采样和计算点数量的方式估计圆的面积,进而估计π的值。
蒙特卡洛如何帮助我们处理复杂后验分布?
在求解后验分布的时候,我们经常要在分布上做一些计算,比如求期望、方差、或其他积分。但是如果碰上复杂分布、高维变量,就会让计算变得特别困难。这时候我们就可以尝试绕过解析解,通过大量采样的方法直接得到统计量。
例如,我们想对一个连续随机变量X求期望,概率分布函数为:
这是一个非标准概率密度函数,我们无法直接求积分,但是我们可以从p(x)中采样x1,x2,x3,...xi,再利用大数定理(在本书中不做详细解释)近似期望:
同样,对离散连续变量X求期望,虽然不涉及积分困难,但当变量的维度很高的时候(X∈RD),会出现维数灾难,求和计算难度随着维度增加而指数级增加。我们也可以通过从P(x)采样来近似期望:
一句话总结:遇到棘手的概率分布形式,避开难求的解析解,通过大量采样进行暴力计算估计。
注意:这里我们已知概率函数p(x), 只是这个p(x)可能比较复杂,直接积分比较难求。
蒙特卡洛的实际应用案例
接下来我们借着一个模拟股票走势的代码案例,展示蒙特卡洛的用法。
假定某个股票目前的股价是St, 预测时间Δt之后的股价St+1,金融工程中有公式:
假定初始股价S0=10,我们可以模拟一下,一年之后 (244 个交易日 ) 的股价分布。
首先,定义初始状态和模拟次数。
模拟10000次,得到一年后的股价分布。
画出一年后股价的分布。

最后更新于