首页 > 解决方案 > 使用 rollRegres 和 plm 或 for 循环进行滚动回归?

问题描述

我尝试在面板数据上运行一个窗口期的滚动回归。

数据如下:

        id       t      Y         X1    X2    X3    X4    X5   X6
1 LP60068503 200002  3.9487727   5.95  0.47 -9.00  3.25 -7.18 0.43
2 LP60068503 200003  4.6201232   0.66 -5.04  3.10 -2.74  4.82 0.47
3 LP60068503 200004 -1.2757605  -5.58 -4.37  5.67 -1.08  1.22 0.46
4 LP60068503 200005 -1.3916501  -0.08  0.18  6.05 -3.30  4.84 0.50
5 LP60068503 200006 -2.4193548   0.67  0.50  2.94 -3.15  1.10 0.40
6 LP60068503 200007  0.8264463  -1.58 -0.71  3.25 -0.19 -0.10 0.48

           id       t         Y         X1.   X2    X3    X4    X5   X6
340373 LP65117791 201207  3.4376360   0.56 -1.38 -2.57  2.29 -2.04 0.00
340374 LP65117791 201208  0.7893412   4.51  0.06  3.38 -1.68  1.45 0.01
340375 LP65117791 201209  0.2556494   3.49  1.65  2.33 -1.52  0.69 0.01
340376 LP65117791 201210 -1.0310320   1.67 -0.61  2.06 -0.93 -0.15 0.01
340377 LP65117791 201211  0.3411351   2.28 -2.40 -0.55  0.62 -0.80 0.01
340378 LP65117791 201212  0.7903986   3.38  2.48  3.09 -0.53  0.89 0.01

第一个想法是使用 roll_regress 功能,但我无法使 grp 工作。它一直告诉我 grp 必须是整数,它们是。由于我不确定 grp 是否能够用作索引,所以我转向了另一个想法。

roll_rolling <- roll_regres(Y ~ X1, data=dataset, width = 60L, grp = c("id","t"), do_downdates = TRUE)

第二个想法是通过 plm 组合常规面板回归并将其放入 roll_regres 功能中。

roll_rolling <- roll_regres(formula = plm(Y ~ X1 ,data=dataset, index = c("id","t"), model = "within"), width= 60L, do_downdates = TRUE)

我收到以下错误消息:

error in eval(predvars, data, env) : object 'Y' not found

我检查了数据集并正确定义了列。最重要的是,我已经通过以下方式清除了所有列表和环境

rm(list=ls())

我的代码有什么问题吗?和/或其次,有没有比我使用的路径更好的方法来实现结果?(我只使用 X1 使上面的回归保持简单。想要先让代码工作,然后再运行完整的回归)你建议用 for 循环来代替吗?

非常感谢,最好的,D。

标签: rloopsfor-loopregressionplm

解决方案


推荐阅读