eviews中的蒙特卡洛模拟程序.doc
文本预览下载声明
模拟程序案例
例 1,在做抛掷一枚质地均匀的硬币的试验中发“正面朝上”的事件(用 1 表示)和“正面朝下”的事件 A(用 0 表示)的情况。历史上一些学者得到的具体试验结果如下:
现在需要利用 eviews 来模拟上述三位学者的实验。
算法分析:上述三学者的实验均为二项分布的实验,可以直接利用 eviews 产生二项分布随机数的函数@rbinom(n,p).
编程如下:
workfile binom u 1 2048
series result
for !i=0 to 1
smpl 1 2048
series x
x(1)=0
for !cou=1 to 2048
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)值即可。
程序实现:
workfile binom u 1 1000
smpl 1 1000
series x
series y
series a1
series a2
series a3
series a4
series a5
series a6
for !i=1 to 1000
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)
if x(!i)a1(!i) then y(!i)=1
else if x(!i)=a1(!i) and x(!i)a2(!i) then y(!i)=2
else if x(!i)=a2(!i) and x(!i)a3(!i) then y(!i)=3
else if x(!i)=a3(!i) and x(!i)a4(!i) then y(!i)=4
else if x(!i)=a4(!i) and x(!i)a5(!i) then y(!i)=5
else if x(!i)=a5(!i) and x(!i)a6(!i) then y(!i)=6
else y(!i)=7
endif
endif
endif
endif
endif
endif
next
y.hist
1.通过已知总体模型得到多组样本数据,进行多次回归,验证回归结果的特征、性质
最小二乘法的无偏性
workfile mc u 1 10
vector(10) v1
v1.fill 80, 100,120,140,160,180,200,220,240,260
mtos(v1,x)
!b1=25
!b2=0.5
matrix(100,2) f
for !k=1 to 100
series u=3*nrnd
series y=!b1+!b2*x+u
equation eq.ls y=c(1)+c(2)* x
f(!k,1)=c(1)
f(!k,2)=c(2)
next
show f
expand 1 100
smpl 1 100
mtos(f,gr)
freeze ser01.qqplot
freeze ser01.hist
freeze ser02.qqplot
freeze ser02.hist
matrix(1,2) m
m(1,1)=@mean(ser01)
m(1,2)=@mean(ser02)
show m
蒙特卡洛模拟程序:(最终调试成功)
store monte carle results in a series
checked 4/1/2004
set workfile range to number of monte carle replications
wfcreate mcarle u 1 100
create data series for x
note: x is fixed in repeated samples
only first 10 observations are used (remaining 90 obs missing)
ser
显示全部