eviews中的蒙特卡洛模拟程序文件.docx
- 文档编号:12810513
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:17
- 大小:112.54KB
eviews中的蒙特卡洛模拟程序文件.docx
《eviews中的蒙特卡洛模拟程序文件.docx》由会员分享,可在线阅读,更多相关《eviews中的蒙特卡洛模拟程序文件.docx(17页珍藏版)》请在冰点文库上搜索。
eviews中的蒙特卡洛模拟程序文件
模拟程序案例
例1,在做抛掷一枚质地均匀的硬币的试验中发“正面朝上”的事件(用1表示)和“正面朝下”的事件A(用0表示)的情况。
历史上一些学者得到的具体试验结果如下:
现在需要利用eviews来模拟上述三位学者的实验。
算法分析:
上述三学者的实验均为二项分布的实验,可以直接利用eviews产生二项分布随机数的函数rbinom(n,p).
编程如下:
workfilebinomu12048
seriesresult
for!
i=0to1
smpl12048
seriesx
x
(1)=0
for!
cou=1to2048
x(!
cou)=rbinom(!
i,0.5)
next
next
x.hist
例2(投掷骰子)
(1)投掷一颗质地均匀的骰子,令X表示其出现的点数,分析各点数出现的频率的稳定性及变化规律;
(2)利用统计的方法,根据“频率的稳定性”规律求投掷一枚质地不均匀的骰子出现某点数的概率;(3)演示随机变量X的数学期望的统计意义。
算法分析:
根据逆变换法产生来自分布函数F(x)的随机数,就要求出F-1(y),其中F-1(y)=inf{x:
F(x)≥y}.0≤y≤1.质地均匀的骰子各点数出现的频率的分布函数是
F(x)=p(x≥x)=(i=1)/6,i-1≤x<i,i=1,2,…,7
可求得
F-1(y)=inf{x:
F(x)≥y}.0≤y≤1=i-1,(i-1)/6≤y<i/6,i=1,…,6
因而,可先由产生均匀分布随机数的函数runif(0,1)抽取y值,再来计算F-1(y)值即可。
程序实现:
workfilebinomu11000
smpl11000
seriesx
seriesy
seriesa1
seriesa2
seriesa3
seriesa4
seriesa5
seriesa6
for!
i=1to1000
a1(!
i)=1/6
a2(!
i)=2/6
a3(!
i)=3/6
a4(!
i)=4/6
a5(!
i)=5/6
a6(!
i)=1
x(!
i)=runif(0,1)
ifx(!
i) i)theny(! i)=1 elseifx(! i)>=a1(! i)andx(! i) i)theny(! i)=2 elseifx(! i)>=a2(! i)andx(! i) i)theny(! i)=3 elseifx(! i)>=a3(! i)andx(! i) i)theny(! i)=4 elseifx(! i)>=a4(! i)andx(! i) i)theny(! i)=5 elseifx(! i)>=a5(! i)andx(! i) i)theny(! i)=6 elsey(! i)=7 endif endif endif endif endif endif next y.hist 1.通过已知总体模型得到多组样本数据,进行多次回归,验证回归结果的特征、性质 最小二乘法的无偏性 workfilemcu110 vector(10)v1 v1.fill80,100,120,140,160,180,200,220,240,260 mtos(v1,x) ! b1=25 ! b2=0.5 matrix(100,2)f for! k=1to100 seriesu=3*nrnd seriesy=! b1+! b2*x+u equationeq.lsy=c (1)+c (2)*x f(! k,1)=c (1) f(! k,2)=c (2) next showf expand1100 smpl1100 mtos(f,gr) freezeser01.qqplot freezeser01.hist freezeser02.qqplot freezeser02.hist matrix(1,2)m m(1,1)=mean(ser01) m(1,2)=mean(ser02) showm 蒙特卡洛模拟程序: (最终调试成功) 'storemontecarleresultsinaseries 'checked4/1/2004 'setworkfilerangetonumberofmontecarlereplications wfcreatemcarleu1100 'createdataseriesforx 'note: xisfixedinrepeatedsamples 'onlyfirst10observationsareused(remaining90obsmissing) seriesx x.fill80,100,120,140,160,180,200,220,240,260 'settrueparametervalues ! beta1=2.5 ! beta2=0.5 'setseedforrandomnumbergenerator rndseed123456 'assignnumberofreplicationstoacontrolvariable ! reps=100 'beginloop for! I=1to! reps 'setsampletoestimationsample smpl110 'simulateydata(onlyfor10obs) seriesy=! beta1+! beta2*x+3*nrnd 'regressyonaconstantandx Equationeq1.lsycx 'setsampletooneobservation smpl! I! i 'andstoreeachcoefficientestimateinaseries seriesb1=eq1.coefs (1) seriesb2=eq1.coefs (2) next 'endofloop 'setsampletofullsample smpl1100 'showkerneldensityeatimateforeachcoef freeze(gra1)b1.distplotkernel 'drowverticaldashlineattrueparametervalue gra1.draw(dashline,bottom,rgb(156,156,156))! beta1 showgra1 freeze(gra2)b2.distplotkernel 'drawverticaldashlineattrueparametervalue gra2.draw(dashline,bottom,rgb(156,156,156))! beta2 showgra2 一元回归参数的分布: Subroutinemoni(scalarn,scalarsum,scalarparam1,scalarparam2,scalartype) For! m=1ton X(! m)=rnd*100 Next For! n=1tosum Iftype=0then For! m=1ton U(! m)=nrnd Next Endif Iftype=1then For! m=1ton Ifrnd<0.5then U(! m)=rnd Else U(! m)=rnd*(-1) Endif Next Endif Iftype=2then U (1)=nrnd For! m=2ton U(! m)=u(! m-1)+nrnd Next Endif Iftype=3then For! m=1ton Ifrnd<0.5then U(! m)=nrnd Else U(! m)=nrnd*2 Endif Next Endif For! m=2ton Y(! m)=param1+param2*x(! m)+u(! m) Next Equationeq.lsycx B1(! n)=eq.coefs (1) B2(! n)=eq.coefs (2) Next Endsub Workfilemoniu110000 Seriesb1 Seriesb2 Seriesx Seriesy Seriesu Callmoni(100,10000,20,0.8,3) B1.hist B2.hist 生成季度虚拟变量的程序: wfcreatedumtestq19701990 %start="1972: 1" %end="1979: 4" for! i=dtoo(%start)todtoo(%end) %obsstr=otod(! i) if(mid(%obsstr,5,1)=": ")then %name="d_"+left(%obsstr,4)+"_"+mid(%obsstr,6) else %name="d_"+%obsstr endif smplall series{%name}=0 smpl{%obsstr}{%obsstr} series{%name}=1 next 下面这个执行不了: ! n=10000 wfcreatecaou1! n matrix(! n,18)m groupg for%1r0b0t0dw0r20f0r1b1t1dw1r21f1r2b2t2dw2r22f2 series{%1}=0 g.add{%1} next for! k=1to! n smpl1122 for%1y0x0y1x1y2x2 series{%1}=rnorm next smpl2122 x1=x1(-1)+rnorm y1=y1(-1)+rnorm smpl2122 x2=2*x2(-1)-x2(-2)+rnorm y2=2*y2(-1)-y2(-2)+rnorm smpl1122 for%1%2%31y0x07y1x113y2x2 m(! k,{%1})=cor({%2},{%3}) equationeq.ls{%2}c{%3} m(! k,{%1}+1)=eq.c (2) m(! k,{%1}+2)=eq.tstats (2) m(! k,{%1}+3)=eq.dw m(! k,{%1}+4)=eq.r2 m(! k,{%1}+5)=eq.f next next smpl1! T mtos(m,g) for%1t0t1t2 seriescao_{%1}=abs({%1})>=2 freeze(statby_{%1}){%1}.statby(nomean,nostd)cao_{%1} next for%1r0b0t0dw0r20f0r1b1t1dw1r21f1r2b2t2dw2r22f2 freeze(hist_{%1}){%1}.hist next 伪回归相关系数模拟(不行) workfilecorru1500 seriesresult for! i=1to500 smpl1100 seriesx=nrnd seriesy=nrnd seriesxx seriesyy scalarsum1=0 scalarsum2=0 for! counter=1to100 sum1=sum1+x(! counter) sum2=sum2+y(! counter) xx(! counter)=sum1 yy(! counter)=sum2 next next scalarr=cor(xx,yy) result(! i)=r 时变贝塔系数的模拟(执行不了): 'BETA.PRG(3/7/2007) 'Timevaryingbeta 'demonstratesseveralways 'toobtainbetabetweenassets '1)constantbeta '2)rollingbetabyregression/movingcov/var '3)usingstatespace '4)usingmultivariateARCH 'Checked3/20/2007 'changepathtoprogrampath %path=runpath cd%path 'loadworkfile loadfx.wf1 'dependentvariablesofseriesmustbecontinuous smplall seriesy1=pch(index) seriesy2=pch(jy) '------------------------------------------------------------------------ 'calculatetheconstantbetausingOLS '------------------------------------------------------------------------ smpl1990last equationconstant_beta.lsy2cy1 seriesbeta_const=c (2) '------------------------------------------------------------------------ 'calculatingtimevaryingbetawithrollingregression 'forabi-variatecasecanusemovingcov/varinstead 'ofOLSregression '------------------------------------------------------------------------ ! ssize=200 seriesbeta_roll=movcov(y1,y2,! ssize)/movvar(y1,! ssize) 'codeforrunningarollingregression: 'commentedoutrightnow '! length=obs(y1) 'equationroll_beta.lsy2cy1 'showroll_beta 'for! i=1to! length-! ssize+1 'smplfirst+! i-1first+! i+! ssize-2 'equationroll_beta.lsy2cy1 'smplfirst+! i+! ssize-2first+! i+! ssize-2 'beta_roll=roll_beta.coefs (2) 'next '------------------------------------------------------------------------ 'calculatebetawithStateSpace 'viaatime-varyingcoefficientforY1 '------------------------------------------------------------------------ smpl1990last sspacessbeta ssbeta.appendy2=c (1)+sv1*y1+[var=exp(c (2))] ssbeta.appendstatesv1=sv1(-1) ssbeta.ml ssbeta.makestatesbeta_* renamebeta_sv1beta_ss '------------------------------------------------------------------------ 'calculatebetawithsystemARCH 'byestimatingthecovarianceandvarianceof 'thetwoseriesusingMultivariateARCH '------------------------------------------------------------------------ systemarbeta arbeta.appendy1=c (1) arbeta.appendy2=c (2) arbeta.archDiagvechc(indef)arch(1,indef)garch(1,indef) arbeta.makegarch(name=arch) seriesbeta_arch=arch01_02/arch01 '------------------------------------------------------------------------ 'displaythedifferentbetas '------------------------------------------------------------------------ groupbetas_ls_rollbeta_constbeta_roll groupbetas_roll_ss_archbeta_rollbeta_ssbeta_arch showbetas_ls_roll.line showbetas_roll_ss_arch.line 在生成服从某种分布(标准正态分布白噪声序列)的随机序列的基础上生成各种ARIMA序列: AR (1)、MA (1)、ARMA(1,1)、ARIMA(1,1,1) ⏹Workfilerandom2u11000 ⏹Seriesu=nrnd ⏹U (1)=0 ⏹Seriesx1 ⏹X1 (1)=0 ⏹Seriesx2 ⏹X2 (1)=0 ⏹Seriesx3 ⏹X3 (1)=0 ⏹Seriesx4 ⏹X4 (1)=0 ⏹Smpl21000 ⏹x1=0.8*x1(-1)+u ⏹X2=u+0.8*u(-1) ⏹X3=0.8*x3(-1)+u+0.8*u(-1) ⏹X4=x4(-1)+x3 ⏹Smplall ⏹groupmyx1x2x3 ⏹showmy.line ⏹workfilesimuu11000 ⏹seriesx1=runif(0,1) ⏹seriesx2=runif(0,1) ⏹seriesx3=runif(0,1) ⏹groupgx1x2x3 ⏹g.line ⏹g.bar ⏹scatx1x2 ⏹sortx1 ⏹genry=10+2*x1 ⏹y.line ⏹freezey ⏹y.hist ⏹scalaryy=mean(y) ⏹scalaryy1=skew(y) ⏹scalaryy3=kurt(y)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eviews 中的 蒙特卡洛 模拟 程序 文件
![提示](https://static.bingdoc.com/images/bang_tan.gif)