作者:陈勇吏(上海交通大学)
Stata 连享会:知乎 | 简书 | 码云 | CSDN
Stata连享会 计量专题 || 公众号合集
特别说明
文中包含的链接在微信中无法生效。请点击本文底部左下角的,请点击
【原文链接】
。
本文介绍 Stata 中做蒙特卡洛模拟的两种常用方法。第一种方法是使用 postfile
命令,第二种方法是 simulate
命令,并举了两个具体的例子,说明如何在 Stata 中做蒙特卡洛模拟。
1. 蒙特卡洛模拟(MC)简介
蒙特卡洛模拟方法(MC),即从总体中抽取大量随机样本的计算方法。当根据总体的分布函数 F(x) 很难求出想要的数字特征时,可以使用蒙特卡洛模拟的方法,从总体中抽取大量样本,使用样本的数字特征估计总体的数字特征。
比如,我们想知道,其中是随机向量,其概率密度函根据期望公式可以得到:
这是一个多重积分,大多时候很难求解。此时,我们可以使用蒙特卡洛模拟的方法,从总体中抽取大量的样本,通过样本来近似 。具体操作过程如下:
从总体的概率分布 中抽取一个随机样本 并计算。
重复r次上述过程,得到r个独立同分布的样本 。
使用的平均值(样本均值)来近似(总体均值)。
2. 两种常用的 MC 方法
MC 方法的原理是从总体中生成大量的样本,Stata 有两种常用的方法。第一种是使用 postfile
命令,另一种是使用 simulate
命令。
2.1 postfile 命令
postfile
命令需要与循环语句结合使用。使用 foreach、while
等循环语句逐次生成独立的样本,并基于样本计算感兴趣的统计值。使用 postfile
命令生成 dta 文件,并将每次循环得到的数据追加进来。蒙特卡洛模拟次数由循环次数决定,最后生成的 dta 文件中,每一行代表一次蒙特卡洛模拟,每一列代表一个基于样本计算出的统计值。
2.1.1 postfile命令语法
查看帮助文件 help postfile
,可以看到三个配套使用的命令 postfile、post、postclose
。
postfile 命令postfile
命令的原理是:在内存中划出一个区域,在该区域中存放 MC 中生成的数据。在这个过程中,需要给区域起一个名字,来告诉程序需要把数据存入哪一块区域中。同样地,需要给存入的数据取一个名字,方便索引到这个数据。具体语法规则如下:
postfile postname newvarlist using filename [, every(#) replace]
其中,
postname
表示内存中划出的区域的名字,filename
表示保存的数据的名字,newvarlists
表示数据中包含的变量名列表。
简言之,postfile
的工作原理是:在 postname
内存区域中,生成一个 filename
数据文件,该数据包含的变量是 newvarlists
。
post 命令post
命令的原理是,在 postfile
生成的数据文件中追加数据