目录
一、均匀分布随机数
随机数,即随机变量在分布函数下的一系列观测数值。为了进行随机模拟,我们使用计算机算法产生的序列为伪随机数。需要某种分布的随机数时,可以先生成均匀分布随机数,而后转换得到其他分布的随机数。产生均匀分布随机数的算法为均匀分布随机数发生器。
1.1 线性同余发生器
设 为整数,若
为
的倍数,则称
与
关于模同余,记作
。不难验证,同余具有对称性、传递性、可加性等性质,具体证明过程不在此展开。线性同余随机数发生器的递推公式为
。特别地,
时称其为混合同余发生器。下面不加证明给出混合同余发生器达到满周期的充分条件:
(1)与
互素
(2)对的任何一个素因子
,
被
整除
(3)如果4是的因子,
则被4整除
好的随机数序列应该周期足够长,统计性质符合均匀分布,且需要有很好的随机性,即起排列不应该有规律,序列中的两项不应该有相关性。因为序列是由确定公式产生的,所以不可能真正独立,我们将要求放宽至序列自相关性弱,前后两项自相关系数的近似公式为综上所述,我们应该去
和
足够大且
。
拓展
乘同余法
素数模乘同余法 若取为小于
的最大素数,选取适当
的可以达到
周期的发生器
1.2组合发生器法
把两个或若干个发生器组合利用可以获得更长的周期和更好的随机性。
set.seed(seed)#设置固定的随机数种子,使得模拟研究的结果可重复
runif(n)#产生n个均匀分布的随机数
1.3随机数检验
解决模拟问题时应该先反复确认所用的随机数在问题中的好的。对均匀分布随机数发生器产生的序列可以用以下方法检验:
1、计算样本一二阶钜等,观察时是否其渐进服从正态分布
2、拟合优度卡方检验法
3、Kolmogorov-Smirnov检验法进行拟合优度检验
4、看作时间序列样本,计算样本自相关函数列从而进行白噪声检验
5、游程检验。序列中的递增段为上升游程,比较实际游程长度和独立同分布条件下期望长度
二、非均匀分布随机数的产生
从 抽样即产生服从某一分布
的相互独立的随机数序列。
2.1逆变换法
注意到对于连续型随机变量 ,记其分布函数为
,
,有
。对于取值于
的离散型随机变量,根据
的值定义随机变量
为
则
。逆变换法即根据以上定理构造。
2.2离散型随机数
例如,对于仅取有限个值的离散型随机数,可以通过以下代码获取随机数
order(x)#获取x元素从小到大排列的下标
sample(x,size=n,prob=p,replace=True)#生成样本量为n的有限个值的离散型随机数
sample(x,size=n)#从向量中无放回地抽取n个
除此之外,还有几何分布、独立试验序列、二项分布、泊松分布随机数等构造,其本质上是利用2.1提及的离散随机变量的构造方法构造迭代序列并生成符合一定分布的序列。
2.3连续型随机变量
连续型分布的随机数都可以用逆变换法生成。特别地一元随机变量可以通过自变量函数 对分布函数进行变形得到
。对于二元随机变量有结合反变换的Jaccobi行列式变换。
这些分布之间有已知的关系,可以利用这样的关系产生随机数,如:二项分布和Bernoulli分布;标准正态分布和正态分布;指数分布和伽马分布;卡方分布等。
拓展 Box-Muller变换
设独立且均服从
,定义
则 独立且都服从标准正态分布。
三、随机向量和随机过程的生成
3.1条件分布法
设 的分布密度或分布概率可以分解为
,则可以先生成
,由已知
的值从条件分布生成
,如此重复。例如生成多项分布随机数。假设已进行了
次独立重复试验
,每次试验的概率为
,令
为这次试验中结果为
的个数,称
服从多项分布。要生成该随机数,考虑不同结果数和试验次数的比较。当
和
相比较小时可以使用条件分布逐个地产生
。
3.2多元正态分布模拟
设随机向量 服从
元标准正态分布
,则
服从
分布。
3.3其他分布模拟
用copula描述多元分布
实际问题中两个随机变量的边缘分布明确,但是它们之间的关系比较模糊,此时可以利用copula分布来粗略地表示联合分布。如果 和
都服从连续型分布,则
和
都服从标准均匀分布,于是(
)服从copula分布。高斯copula是一个常用的copula分布。
平稳时间序列模拟
R函数filter可以进行递推计算,arima.sim可以进行ARMA模型和ARIMA模型模拟。
本文为笔者自行学习所得,若有不妥之处,还望温和批评指正。