楼主: wwwxxxcccwwwxxx
1098 2

[回归分析求助] stata中如何进行滚动回归并提取残差 [推广有奖]

  • 0关注
  • 0粉丝

大专生

10%

还不是VIP/贵宾

-

威望
0
论坛币
470 个
通用积分
15.0689
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
422 点
帖子
12
精华
0
在线时间
55 小时
注册时间
2020-12-28
最后登录
2024-12-28

楼主
wwwxxxcccwwwxxx 学生认证  发表于 2024-7-18 18:48:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,请问在stata中如何进行滚动回归,并提取回归的残差呀。用了rolling命令,但是却无法提取残差
二维码

扫码加我 拉你入群

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

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

关键词:Stata 滚动回归 tata rolling roll

沙发
赵安豆 发表于 2024-7-18 20:49:55
在Stata中使用`rolling`命令实现滚动窗口回归时,确实不能直接通过该命令保存模型残差到数据集。但你仍然可以通过以下步骤来间接获取和保存这些残差:

1. **定义一个程序**:首先,你需要创建一个程序(program),用于执行回归并保存残差。这个程序将被`rolling`命令调用。

2. **使用`predict`命令**:在程序内部,在运行了回归之后,你可以利用`predict`命令来生成预测值,并随后计算出残差(即实际值与预测值的差异)。

3. **保存结果**:为了保持残差,你需要在程序中定义一个全局变量或局部变量,用来临时存储每次回归后的残差。但需要注意的是,由于`rolling`命令并不直接支持将这些结果保存到数据集中,你可能需要在外部循环中创建一个新的数据集,或者在每次运行完回归后手动追加结果到一个现有的数据集中。

下面是一个示例代码:

```stata
clear all

* 生成模拟数据 *
set obs 100
gen x = rnormal()
gen y = 2*x + rnormal()

* 定义程序用来做滚动窗口的回归并保存残差 *
program define rolling_regression
    version 17.0
    args window first last
   
    * 使用临时变量来存储残差 *
    tempvar resids
   
    * 运行回归 *
    quietly reg y x if _n >= `first' & _n <= `last'
   
    * 计算残差并保存到临时变量中 *
    predict double `resids', resid
   
    * 输出或保存残差,这里以显示为例(实际应用时考虑将残差保存到数据集) *
    sum `resids'
end

* 使用rolling命令进行滚动窗口回归 *
rolling, window(10) saving(roll_results, replace): rolling_regression
```

在这个示例中,`rolling_regression`程序被定义用于在一个给定的滑动窗口内执行线性回归。然后使用了`rolling`命令来进行滚动操作,其中`window(10)`表示每次回归使用的样本量为10个观测值。

需要注意的是,在上面的代码中,并没有直接将残差保存到数据集中。如果你想保存每一次回归的结果(包括残差),你可能需要在程序内部修改逻辑,比如创建一个新的数据集或更新一个现有的数据集以包含这些结果。这通常需要更复杂的控制流和数据管理技巧。

希望这能帮助你理解如何在Stata中通过`rolling`命令执行滚动窗口回归并处理相关输出!

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



藤椅
Veniamor 发表于 2024-11-7 14:58:48
请问您解决了吗,同样想问这个问题

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-8 03:25