全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
匿名
3175 4
2013-04-25
在stata 18讲中的第102页中,有个模拟发生概率的程序如下:
capt prog drop  seq3
prog seq3 ,rclass           //rclass 选项表示计算结果将由 return 返回到 r()
version 9
drop _all                      //清空所有数据,不能用 clear
set obs 10                      //将生成 10 个观察值
tempvar  x y z                   //设定 x,y,z 为临时变量
gen  `x’=int(10*uniform())        //产生 10 个随机变量,可能为 0,1,…,9
gen  `y’=(mod(`x’,2)==0)      //如果生成的随机变量为奇数,则 y=0;为偶数,y=1
gen  `z’=0                  //生成 Z=0
forvalues i=3/10  {
replace `z’=1 if `y’==`y’[_n-1] &  `y’==`y’[_n-2] in `i'    //连续三个变量相等时 z=1
}
sum `z’
return scalar  max=r(max)           //z 取 1 表示高兴的事发生(三连续),否则失败  
end

simulate max=r(max),reps(10000) nodots:seq3     //重复 1 万次,取平均结果
sum

我把它写成的命令形式如下:
clear
capture prog drop sq3
prog seq3,rclass
version 9
drop _all
set obs 10
tempvar x y z
gen `x'=int(10*uniform())
gen `y'=(mod(`x',2)==0)
gen `z'=0
forvalues i=3/10{
replace `z'=1 if `y'==`y'[_n -1]&`y'==`y'[_n-2]in `i'
}
sum `z'
return scalar max=r(max)
end
simulate max=r(max),reps(10000) nodots:seq3
sum

得出的结果是:

. clear

.
. capture prog drop sq3

.
. prog seq3,rclass
  1.
. version 9
  2.
. drop _all
  3.
. set obs 10
  4.
. tempvar x y z
  5.
. gen `x'=int(10*uniform())
  6.
. gen `y'=(mod(`x',2)==0)
  7.
. gen `z'=0
  8.
. forvalues i=3/10{
  9.
. replace `z'=1 if `y'==`y'[_n -1]&`y'==`y'[_n-2]in `i'
10.
. }
11.
. sum `z'
12.
. return scalar max=r(max)
13.
. end

.
. simulate max=r(max),reps(10000) nodots:seq3
equation [_n-2] not found
an error occurred when simulate executed seq3
r(303);

.
. sum

我一直搞不明白是哪个地方出错了,请赐教!













二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
-->
以上程序是用stata11运行的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

-->
知道错在哪里了,问题已解决
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-15 12:53:06
你好,我也有这个问题,请问错在哪里啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-4-25 20:30:02
我也不知道,请问怎么解决
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群