文章目录
- 蒙特卡罗法.
- 随机抽样.
- 数学期望估计.
- 定积分.
蒙特卡罗法.
- Monte Carlo Method,也称之为统计模拟方法Statistical Simulation Method,是通过从概率模型的随机抽样进行近似数值计算的方法。根据所使用概率模型的不同可以细化出多种不同的蒙特卡罗法,最简洁也最为人熟知的 —— 蒙特卡罗法计算圆周率:在单位正方形内依据二维均匀分布对点进行随机抽样,当抽样次数足够多时,最终落在单位圆内的样本点数量与全部样本点数量就近似等于圆面积与正方形面积之比:于是可以反推出圆周率
- 蒙特卡罗法主要的应用有:随机抽样、数学期望估计以及定积分计算。
随机抽样.
- 随机抽样是蒙特卡洛法的核心,假定我们已知概率分布的定义,那么通过随机抽样获得随机样本后,可以通过随机样本的样本特征得到对于概率分布总体特征的估计,例如以样本均值估计总体期望。除了最为暴力简洁的直接抽样法外,当概率密度函数过于复杂 —— 多变量、变量之间不独立时,可以使用接受拒绝抽样法。
- 接受拒绝抽样法大多应用在原始概率分布 复杂,难以进行直接抽样时,我们选取另一个易于直接抽样的分布 ,并且 满足:这里的分布 被称为建议分布,按照 进行直接抽样的结果是 ,再对均匀分布 进行直接抽样得到 ,我们将 与 进行比较,当且仅当 时接受样本 ,否则拒绝它。
- 直观上来看,接受拒绝采样法在样本落到 范围内时就接受,而落到 范围外时就拒绝,其实质是按照 的涵盖面积占 的涵盖面积之比来进行抽样的。
- 【证明】我们记按照 进行采用的样本被接受为事件 ,将原分布记为 以示区分,那么需要证明 基于贝叶斯公式得到:其中联合概率分布 可以写为:并且其中的先验分布 就是我们用于直接采样的建议分布 ,而样本 是根据独立的均匀分布 来决定的,因此:根据接受拒绝采样法的接受原则我们知道,当且仅当 时 ,其它情况均为 ,因此:上述积分是均匀分布 的积分。于是我们得到:因此:该式说明我们基于接受拒绝采样法进行采样的分布 在概率意义上等于原始的采样概率分布
数学期望估计.
- 【问题描述】假设有随机变量 ,取值 ,其概率密度函数为 , 是定义在 上的函数,目标是求函数 关于密度函数 的数学期望
- 处理该问题的常见做法就是,按照概率分布独立地随机抽取 个样本 ,之后计算关于函数 的样本均值 :将其作为数学期望 的近似值。依据弱大数定律,也称为辛钦大数定律,当样本容量趋于无穷时,样本均值的极限等于总体数学期望:
- 上述过程是极为自然的处理策略,这种估计总体数学期望的技巧在下面使用蒙特卡罗方法进行数值定积分时也得到应用。
定积分.
- 数值积分方法可以对定积分进行近似计算,使用蒙特卡罗方法进行的定积分计算也被称作蒙特卡罗积分,对于函数 ,计算它在区域 内的定积分:
- 如果能够将 进行分解:其中 构成一个概率密度函数,那么上述定积分可以表示为:即我们将定积分问题转换成了 关于概率分布 的数学期望问题。实际上,我们选定一个概率分布函数 ,而后取
- 参照上部分进行数学期望估计的方法,我们按照分布 进行随机采样,当 足够大时, 的样本均值能够很好的估计总体的数学期望,即:
- 【例】计算定积分:
- 【解】在区间 内取 为均匀分布,即:从而
- 而后按照蒙特卡罗积分法,在 区间内随机抽取 个样本点,他们的样本均值即为我们要求的定积分结果近似值,并且辛钦大数定律指出随着
- 下面是对上述例子使用蒙特卡罗积分法的Python代码:
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
# In[]
import numpy as np
import matplotlib.pyplot as plt
# In[]
def func(x):
return np.exp(-x**2/2)
# In[]
n = np.linspace(10,1000,1000).astype(int)
res = np.zeros(len(n))
# In[]
for i in range(len(n)):
x = np.random.rand(n[i])
x = func(x)
res[i] = np.mean(x)
# In[]
plt.plot(n,res)
- 其运行结果如下,过程中存在震荡,但总体收敛到一个稳定值附近。