全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1011 2
2024-07-18
如题,请问在stata中如何进行滚动回归,并提取回归的残差呀。用了rolling命令,但是却无法提取残差
二维码

扫码加我 拉你入群

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

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

全部回复
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学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

2024-11-7 14:58:48
请问您解决了吗,同样想问这个问题
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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