楼主: abc爱学习
415 2

[金融] 滚动回归估计系数 [推广有奖]

  • 0关注
  • 0粉丝

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0057
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
35 小时
注册时间
2024-5-7
最后登录
2025-3-16

楼主
abc爱学习 发表于 2024-5-7 15:26:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大佬们,求问:数据是一家公司在2011-2013年的日回报率。我要用6个月滚动回归估计月度系数,使用了
  • gen ym = mofd(date)
  • format ym %tm
  • rangestat (reg) y x, interval(ymnew -6 -1) by(Stkcd)但是回归结果并不是按6个月估计的呢?reg_nobs也不是30*6=180呀,它一直在变化呀,我是哪里出现问题了呢?谢谢啦

二维码

扫码加我 拉你入群

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

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

关键词:滚动回归 回归估计 Interval format range

沙发
kerugman 发表于 2024-5-14 16:00:27
我用的rolling来跑滚动回归,供参考。
rolling _b,  window(加你的估计窗口数): reg y x control, option
具体见help rolling

藤椅
赵安豆 发表于 2024-7-14 11:48:57
你的问题在于使用滚动窗口进行回归时可能没有正确地处理数据或指定参数。`range`命令在`stata`中用于定义要分析的数据范围,但是当你指定`interval(ymnew -6 -1)`时,你实际上是在告诉Stata从当前月份向前回溯6个月(包括当前月)来选择数据点。

然而,你的`reg_nobs`值的变化可能是因为每个月的交易日数量不同。一个月可能有20个交易日,而另一个月可能有23个交易日。因此,在一个6个月滚动窗口中使用的观测数将在每次移动时发生变化。此外,如果在某段时期内没有足够的数据(例如假期或周末),这也会影响到观察的数量。

解决方法:
1. 确保你的日期变量(date)已经转换为适当的时间序列格式。
2. 使用`tsset date`命令指定时间序列的结构和排序依据。
3. 在使用`rangestat`之前,确保你已经对数据进行了适当的排序。你可以通过`sort Stkcd date`命令来实现。

然而,在处理滚动窗口回归时,一种常见的方法是直接用Stata的循环机制来管理这个过程:

```
tsset date
forvalues i = 1/36 {
    qui reg y x if date >= td(1jan2011+6m*i'-1) & date <= td(1jul2011+6m*i')
    mat b = e(b)
    scalar b_`i' = el(b,1,1)
}
```

这个循环将从2011年1月开始,每次向后移动六个月,并为每个窗口进行回归。这将确保你使用了正确的时间范围和观察数。

但请注意,上述代码是一个示例,你需要根据你的数据集调整起始日期、结束日期以及变量名。此外,你可能需要在循环中添加一些错误处理机制来避免由于缺失值或不足的观测值而引起的运行失败。
请确保修改`td(1jan2011+6m*i'-1)`和`td(1jul2011+6m*i')`中的日期,以适应你的数据集的时间范围。这里的`i'`是循环变量,在每次迭代中递增。

最后,请检查一下你是否在命令的开始部分正确地设置了日期格式,并对你的日期列使用了时间序列处理(例如 `tsset date`)。
```stata
format date %td
tsset date
```
确保这些基础步骤已经完成,然后再进行循环回归分析。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



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

本版微信群
扫码
拉您进交流群
GMT+8, 2026-1-29 23:46