楼主: snow009
10159 8

[其他] 求助:如何创建AR(1)模型的模拟数据 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

13%

还不是VIP/贵宾

-

威望
0
论坛币
4700 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5977 点
帖子
133
精华
0
在线时间
131 小时
注册时间
2007-4-25
最后登录
2023-7-27

楼主
snow009 发表于 2009-10-18 10:49:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我需要创建有100个数据的数组根据以下数据和模型:y = b1 + b2* y1 + u.  这儿:y1: 是y 的一阶滞后, u ~IID(0, σ2*I)  , b1=1 , b2 = 0.8  , y0 = 0, u(t) ~(0,1)
创建好这100个数据后,我还需要用它们做AR(1) 回归,重新估计b1 和 b2 的值,重复 500 遍,然后计算出 b1 和 b2 估计值的均值。
我尝试了很多次,都没有把数据创建成功。

请各位高手们给予指点! 非常感谢!

如以下code :
clear
set obs 100
gen u = invnormal(uniform())
gen y = .
local N = _N

forv i = 1/`N'{
  local y = y[`i']
   y[1] = 1 + u[1]
   if i>1{
    y = 1+0.8*y[i-1] + u
     }

  capture{
   reg y l.y
  replace reg_obs = e(N) in `i'
  replace reg_beta1 = b_x1(N) in `i'
replace reg_beta2 = b_x2(N) in `i'
}
}

stata 都告诉我:“unrecognized command:  y”
二维码

扫码加我 拉你入群

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

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

关键词:模拟数据 unrecognized recognized replace capture local 模型 如何

回帖推荐

arlionn 发表于5楼  查看完整内容

1. 20w次的话,可以采用变量来存储结果,而不用矩阵。 2. 可以多增加一层循环。 3. sum 命令后,ret list 即可 4. help quiet

arlionn 发表于3楼  查看完整内容

另外,使用 sim_arma 命令生成数据会更加快捷。 findit sim_arma

arlionn 发表于2楼  查看完整内容

mat R = J(500,2,0) forvalues i = 1/500{ clear set obs 100 gen u = invnormal(uniform()) gen y = . gen t = _n qui tsset t replace y = 1+u if t==1 replace y = 1+0.8*L.y+u if t>1 qui reg y L.y mat R[`i',1] = (_b[_cons], _b[L.y]) } svmat R, names(b) sum b*

沙发
arlionn 在职认证  发表于 2009-10-18 17:11:42
mat R = J(500,2,0)
forvalues i = 1/500{
   clear
   set obs 100
   gen u = invnormal(uniform())
   gen y = .
   gen t = _n
   qui tsset t
   replace y = 1+u if t==1
   replace y = 1+0.8*L.y+u if t>1
   
   qui reg y L.y
   mat R[`i',1] = (_b[_cons], _b[L.y])
}

svmat R, names(b)
sum b*

藤椅
arlionn 在职认证  发表于 2009-10-18 17:12:24
另外,使用 sim_arma 命令生成数据会更加快捷。

findit sim_arma

板凳
snow009 发表于 2009-10-19 04:31:25
版主不愧是高手!非常感谢!
我还有下面几个问题, 请再指点:
1. 如果我想重复 200000 次,应该是不可以再建 matrix ?stata 10.0 显示 “ For Stata/IC, the initial value is 200, but it may be changed upward or downward.  The upper limit is 800.” 如果想用 “simulate", 可不可以提示一下我怎么做。
2. 如果我想比较做出来的结果,如第一次创建100个样品做回归,重复500次; 第二次创建150 个样品做回归,重复500次; 第三次创建200个样品做回归,重复500次。我怎么样才能再做一个循环里储存b1 和 b2 的估计值?
3. 如果我想提取 " sum b*" 里的 b1 和b2 的均值,用什么命令呢? 我试了"gen scalar mean_b1 = _mean[b1]"  或 是 " mat matb = e(b), return scalar mean_b1 = el(matb,1,2)" 都不行,显示”non r-class program may not set r()“
4.我在输出报告的时候发现有很多以下注示”obs was 0, now 100 (1 real change made) (99 real changes made) “ 可以用什么办法去掉呢?当然我可以自己删掉了,如果有一个命令可以让他们不存在的话就更好了。

报纸
arlionn 在职认证  发表于 2009-10-20 12:14:31
1. 20w次的话,可以采用变量来存储结果,而不用矩阵。
2. 可以多增加一层循环。
3. sum 命令后,ret list 即可
4. help quiet

地板
snow009 发表于 2009-10-20 12:26:17
再次万分感谢!我试一试!

7
snow009 发表于 2009-10-20 15:07:43
终于把问题解决了!现在才发现原来stata 的功能也是很强大的。

8
arlionn 在职认证  发表于 2009-10-20 17:45:02
发现的比较及时,哈哈

9
snow009 发表于 2009-10-21 04:15:34
多谢 arlionn 指点! 学习ing!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-26 16:17