我正在尝试使用rollapply()和step()生成滚动逐步回归,但是注意到生成的动物园系列的日期范围是滞后的。您可以在下面找到使用两年“数据”(2016-01-01:2017-12-31)以及回归参数估算的365天回顾期的插图。
在第一种情况下,会生成正确的日期范围(2016-12-30至2017-12-31期间的'动物园'系列)。在第二种情况下,生成滞后日期范围(2016-07-01至2017-07-02期间的“动物园”系列)。第二种情况下的日期范围不可能,因为回归需要365天的观察,数据从2016-01-01开始。在我看来,得到的滚动参数是正确的,但它们的相应日期标记不是。
感谢所有帮助,谢谢。
library(zoo)
date <- seq(as.Date("2016-01-01"), as.Date("2017-12-31"), by="days")
y <- rnorm(length(date))
x1 <- rnorm(length(date))
x2 <- rnorm(length(date))
z <- rnorm(length(date))
x3 <- z+5
all_vars <- cbind.data.frame(date, y, x1, x2, x3)
# First case: rolling regression that works, i.e. correct date range is
# generated
rolling_reg_works <- rollapply(zoo(all_vars[,-1], order.by = date),
width=365, FUN=function(z){
t = lm(formula=y~x1+x2+x3, data=as.data.frame(z))
return(t$coef)
}, by.column=FALSE, align="right")
str(rolling_reg_works)
# Second case: rolling regression that doesn't work, i.e. lagged date range
# is generated
rolling_reg_doesnt_work <- rollapply(zoo(all_vars[,-1], order.by = date),
width=365, FUN=function(z){
t = step(lm(formula=y~x1+x2+x3, data=as.data.frame(z)), direction =
"backward", k=2)
return(t$coef)
}, by.column = FALSE)
str(rolling_reg_doesnt_work)
答案 0 :(得分:0)
align =“right”。多么令人尴尬的菜鸟错误!
案件结案。