水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊1第四篇用EIVEWS做蒙特卡洛实验(MonteCarlo)怎么样用EVIEWS做蒙特卡洛实验①呢?本篇将以Gujarati的《计量经济学》(BasicEconometrics)第三章最后一个习题3.26为例,进行详细的说明。希望通过做这个实验,我们能够加深对于这方面的理解:最小二乘估计量具有无偏性质。一、交待一下要做的事情:(一)先来看一下3.26原题(方便一下没有这本书的小朋友):回到表3.2中所列的10个X值(这10个值分别是:80,100,120,140,160,180,200,220,240,260。我加注)。令125β=和20.5β=。假定(0,9)iuN,即iu遵从均值为0、方差为9的正态分布。用这两个参数值去产生100个样本,求出1β和2β的100个估计值,然后对这些估计值描图。从这一蒙特卡罗研究中,你能得出什么结论?(当然是无偏性了哈哈,不过描图以后还发现应该是正态分布的)。(二)蒙特卡洛实验的步骤:Gujarati在正文3.9已经举例描述过,该实验的步骤如下:1.假定参数有如下的真值:120β=、20.6β=。2.选定样本大小,比方说25n=。3.每次观测值固定一个X值,这样共有25个X值。4.从一张随机数表选出25个数值,且称它们为iu(当今的统计包大多含有内在随机数发生器)。5.1β,2β和X和iu已知,便可利用(3.9.1)得到25个iY值。[(3.9.1)就是:12iiiYXuββ=+⋅+]6.现在利用如此产生的25个iY值,对在第3步中所选的25个X值做回归,求出最小二乘法估计量1β)和2β)。7.假使重复这一实验99次,每次都用相同的1β,2β和X。当然,iu在每次实验中都有所变化,因而在总共的100次实验中,就产生1β,2β的各100个值。8.取这100个估计值的均值,并称它们为1β)、2β)。①这里引用物里学里面对蒙特卡洛实验的说明,在附录1中。水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊29.如果这些均值和在第1步中所假定的1β,2β的真值相差不多,那么蒙特卡洛法就“证实”了最小二乘估计量确实是无偏的。二、蒙特卡洛实验是这样做成的:本来想先介绍一下EVIEWS的一些命令再开始,但是那样篇幅就要写很长了,而且看了可能还是不会用。还是直接给出程序,给一段分析一段,这样能看懂先。如果再感兴趣想编的,可以直接在EVIEWS的HELP里面查找命令的用法,那里都会有很详细的带具体例子的介绍。(一)编程序之前的分析:我们再看看上面介绍的蒙特卡洛实验步骤,实际上那9步可以粗分为三个阶段:第1、2、3步做的都是给变量赋初值;第4、5、6步做的是单次的模拟实验,第7步是说把4、5、6、的工作再重复99次;第8、9步是输出结果。我们要编写的小程序也是分成这样三块。下面具体分析之:(二)给变量赋初值现将该部分的源程序列出并解释如下:workfilemcu110创建一工作文件,名称为mc,u表示时间频率是undated,其他类型比如年(annual)就可以用a,“110”表示range是从1到10。!b1=25令“!b1”等于25,其实这个就是1β。像“!b1”这样,前面有“!”带头的变量,在EVIEWS里面叫控制变量,相当于一般语言中的数值型变量。!b2=0.5类似于上面matrix(100,2)f创建矩阵f(100行2列),这个矩阵在后面会有用:用来放1β和2β的100个估计值。vector(10)v1创建一个向量v1(10维的),用来放X的10个值v1.fill80,100,120,140,160,180,200,220,240,260给向量v1赋上初值mtos(v1,x)水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊3把向量v1转化成序列X,以便于后面使用(三)100次重复的模拟实验同样将源程序列出并解释如下:for!k=1to100上面这就就是说要循环100次下面的工作,默认!k也是每次循环后增加1(即,步长为1)seriesu=3*nrnd产生一个随机干扰序列u,nrnd会产生一系列的标准正态分布随机数,所以这里的u满足标准差为3、均值为0。seriesy=!b1+!b2*x+u利用已知的1β,2β和X和iu,利用(3.9.1)得到序列iY(第5步)。equationeql.lsy=c(1)+c(2)*x利用上面产生的序列iY,对原来给定的X值做回归,求出最小二乘法估计量1β)和2β)(在程序中分别是c(1)、c(2))。(第6步)。f(!k,1)=c(1)每次估计都会产生一个1β的估计值1β)(c(1)),我们用这些c(1)依次来为矩阵f第1列各元素赋值。f(!k,2)=c(2)解释类似于上面一句。next进行下一次循环直至!k达到100,到那时就循环了100次了哈。(四)模拟结果的输出showf显示矩阵f,其实就是显示1β和2β在100次模拟实验中的估计量:1β)和2β),所以矩阵f是2列100行的哈。expand1100这是把数据范围扩大到100个。记得刚开始我们的命令“workfilemcu110”吧,这个命令把range定为1到10,但下面马上就要用到1到100的range了。所以水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊4我们用这句把范围扩大一下先,让下面的数据有地方立足容身。smpl1100选中执行的数据范围也是1到100,要是不执行一下这个,那么下面默认的执行数据范围还是从1到10。mtos(f,gr)把矩阵f转化成一个group(熟悉eviews的人都知道group吧),同时矩阵f的两列分别转化为两个序列,这两个新序列默认的名字为ser01和ser02。这步就是把1β)和2β)分别用这两个新序列表示出来。freezeser01.qqplotser01.qqplot就是把序列ser01的QQ图画出来,默认的QQ图是用来判断是否是正态分布的。等会儿我们来看这个图的生成结果。前面加的“freeze”是把这个结果冻结,要不然等一会儿对序列ser01做直方图的操作就会把现在QQ图的结果给覆盖了,那样我们就不能同时看到ser01的QQ图和直方图了。freezeser01.hist做ser01的直方图(histogram)并冻结之,解释同上。不过这里可以不用“freeze”,因为下面不对ser01做其他操作了,所以不用担心现在的结果被覆盖哈。freezeser02.qqplot解释同ser01的情况freezeser02.hist解释同ser01的情况matrix(1,2)m生成矩阵m,是1行2列的,拿来放模拟100次得到的1β)和2β)均值。m(1,1)=@mean(ser01)将模拟100次得到的1β)均值放到第一个位置上。m(1,2)=@mean(ser02)将模拟100次得到的2β)均值放到第二个位置上。showm显示矩阵m,也就是显示模拟100次得到的1β)和2β)均值,等会儿看看它们和真值是不是很接近啊。下面把我们将会得到的输出结果总结一下,有这些:1、工作文件MC;水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊52、100次观测到的1β)和2β)及其QQ图和直方图;3、所有1β)和2β)的均值。三、在EVIEWS里面创建程序文件,并执行它。上面我们已经编制完成一个蒙特卡洛实验的程序了,现在要到EVIEWS界面中执行这个程序并进行调试了。(一)创建一个程序文件:依次打开:File\New\Program,我们将看到如图一:图1在这个里面把我们刚才的程序进行输入或者直接粘到里面(本篇在文末的附录2中附上本程序以便阅读)。(二)运行该程序:点击程序界面左上角的“Run”,我们看到如图2:新出现的对话框中,第一个空白栏里是显示程序名及其路径的,如果你保存过这个程序文件就会显示这个文件的路径,这里没有保存过,所以出现的是默认的“Untitled”。不过我们不管它,没关系。第二个空白栏里是填写命令行参数的,它的作用是可以增强程序的通用性。在这里不管它也没关系的,先不介绍了。水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊6图2再下面是运行模式,第一种是执行一点就显示一点结果和状态的,速度比较慢;第二种是忽略中间执行结果的显示,到最后一起给出结果的,所以比较快些。我们这个程序小,选哪一个在速度上区别不算太大(不过我还是有些感觉得到,不知道是不是我的电脑比较笨啊)。四、输出结果评价:(一)所有1β)和2β)的均值C1C2R125.16338265150.499291448899显然,都非常接近真值(真值分别为25和0.5)。(二)100次观测得到的1β)描图:QQ图和直方图-4-20241520253035SER01NormalQuantile0246810121418202224262830Series:SER01Sample1100Observations100Mean25.16338Median25.12957Maximum30.28708Minimum18.38480Std.Dev.2.603478Skewness-0.536983Kurtosis2.999823Jarque-Bera4.805840Probability0.090453水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊7(三)100次观测得到的2β)描图:QQ图和直方图(四)100次模拟得到的1β)和2β)值(各100个)。图3(五)结果评价:从(一)来看,最小二乘法的无偏性得到了验证。从(二)来看,100个1β)值的描图中:QQ图比较接近斜率为1的直线,而且直方图也比较02468100.46250.47500.48750.50000.51250.52500.5375Series:SER02Sample1100Observations100Mean0.499291Median0.498326Maximum0.541143Minimum0.464577Std.Dev.0.014768Skewness0.527447Kurtosis3.205308Jarque-Bera4.812304Probability0.090162-4-20240.460.480.500.520.540.56SER02NormalQuantile水米学堂之EVIEWS应用东北师范大学经济学院徐奇渊8接近正态的情况,JB检验等值也都说明1β)很可能是一个正态分布。对2β)描图的情况也可得到类似的结论。(四)里的值,都比较接近1β)和2β)的真值,从而再一次从各次观测值的角度验证了无偏性。附录1(引自中国学术交流园地)MonteCarlo法不同于前确定性数值方法,它是用来解决数学和物理问题的非确定性的(概率统计的或随机的)数值方法。MonteCarlo方法(MCM),也称为统计试验方法,是理论物理学两大主要学科的合并:即随机过程的概率统计理论(用于处理布朗运动或随机游动实验)和位势理论,主要是研究均匀介质的稳定状态。它是用一系列随机数来近似解决问题的一种方法,是通过寻找一个概率统计的相似体并用实验取样过程来获得该相似体的近似解的处理数学问题的一种手段。运用该近似方法所获得的问题的解inspirit更接近于物理实验结果,而不是经典数值计算结果。普遍认为我们当前所应用的MC技术,其发展约可追溯至1944年,尽管在早些时候仍有许多未解决的实例。MCM的发展归功于核武器早期工作期间LosAlamos(美国国家实验室中子散射研究中心)的一批科学家。LosAlamos小组的基础工作刺激了一次巨大的学科文化的迸发,并鼓励了MCM在各种问题中的应用。“MonteCarlo”的名称取自于Monaco(摩纳哥)内以赌博娱乐而闻名的一座城市。附录2再完整的附上本文所述的MonteCarlo程序如下:workfilemcu110!b1=25!b2=0.5matrix(100,2)fvecto