我有一个自定义函数,它运行回归并以所需的方式返回结果。该函数名为“reg.fun”。例如,我可以运行这样的代码:
results <- dt[ ,reg.fun(.SD, depvar="Y", indepvars=c("X1", "X2")),
.SDcols=c("Y", "X1", "X2"), by = id]
上面的代码产生这样的输出:它只是以我想要的方式报告回归结果。)我在数据表中使用它来使用“按”组功能。
id X1coef X2coef X1tstat X2tstat ...other results...
A 0.0418 0.1194 2.65 3.56 ....
B 0.7903 -0.554 2.75 4.59 .....
这完美地工作,并在所需的表中为我提供了结果。现在,我想使用 rollapply 函数以滚动窗口的方式进行相同的练习。我写的是这样的:
regress <- dt[ ,rollapply(.SD, width = 3,
reg.fun(.SD, depvar="Y" indepvars=c("X1","X2")) ),
.SDcols = c("Y", "X1", "X2"), by = id]
这是我现在得到的错误:
match.fun(FUN) 中的错误:'reg.fun(.SD, depvar = "Y", indepvars = c("X1", "X2"))' 不是函数、字符或符号
理想情况下,我想生成与上表相同的表格,但现在有多行用于 id A 和 id B,因为我想在滚动窗口上运行回归。像这样的东西:
window id X1coef X2coef X1tstat X2tstat ...other results...
1-3 A xxx xxx xxx xxx ....
2-5 A xxx xxx xxx xxx
3-6 A xxx xxx xxx xxx
...
1-3 B xxx xxx xxx xxx .....
2-5 B xxx xxx xxx xxx
3-6 B xxx xxx xxx xxx
我不知道为什么在这种情况下 reg.fun 不被视为 rollapply 的函数。
我知道我可能在很多层面上都错了,因为这是我在 R 中的第一个项目。有人可以让我知道问题出在哪里,或者如果这不是正确的方向,那么正确的方向是什么?