eviews中的蒙特卡洛模拟程序.docx

上传人:b****4 文档编号:1411392 上传时间:2022-10-22 格式:DOCX 页数:15 大小:112.58KB
下载 相关 举报
eviews中的蒙特卡洛模拟程序.docx_第1页
第1页 / 共15页
eviews中的蒙特卡洛模拟程序.docx_第2页
第2页 / 共15页
eviews中的蒙特卡洛模拟程序.docx_第3页
第3页 / 共15页
eviews中的蒙特卡洛模拟程序.docx_第4页
第4页 / 共15页
eviews中的蒙特卡洛模拟程序.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

eviews中的蒙特卡洛模拟程序.docx

《eviews中的蒙特卡洛模拟程序.docx》由会员分享,可在线阅读,更多相关《eviews中的蒙特卡洛模拟程序.docx(15页珍藏版)》请在冰豆网上搜索。

eviews中的蒙特卡洛模拟程序.docx

eviews中的蒙特卡洛模拟程序

模拟程序案例

例1,在做抛掷一枚质地均匀的硬币的试验中发“正面朝上”的事件(用1表示)和“正面朝下”的事件A(用0表示)的情况。

历史上一些学者得到的具体试验结果如下:

 

现在需要利用eviews来模拟上述三位学者的实验。

算法分析:

上述三学者的实验均为二项分布的实验,可以直接利用eviews产生二项分布随机数的函数@rbinom(n,p).

编程如下:

worku12048

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)值即可。

程序实现:

worku11000

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.通过已知总体模型得到多组样本数据,进行多次回归,验证回归结果的特征、性质

最小二乘法的无偏性

worku110

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

'setworktonumberofmontecarlereplications

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

If@rnd<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

If@rnd<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

Worku110000

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)to@dtoo(%end)

%obsstr=@otod(!

i)

if(@mid(%obsstr,5,1)=":

")then

%name="d_"+@left(%obsstr,4)+"_"+@mid(%obsstr,6)

else

%name="d_"+%obsstr

endif

smpl@all

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}.h

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1