簡體   English   中英

逐步回歸:為動物園系列生成的滯后日期范圍

[英]Stepwise regression: lagged date range generated for a zoo series

我正在嘗試使用rollapply()和step()生成滾動逐步回歸,但注意到結果動物園系列的日期范圍滯后了。 您將在下面找到使用兩年的“數據”(2016-01-01:2017-12-31)和365天的回溯期進行回歸參數估計的示例。

在第一種情況下,會生成正確的日期范圍(“ zoo”系列從2016-12-30到2017-12-31)。 在第二種情況下,會生成滯后的日期范圍(“ zoo”系列從2016-07-01到2017-07-02)。 第二種情況下的日期范圍應該是不可能的,因為回歸需要365天的觀察時間,並且數據始於2016年1月1日。 在我看來,所得到的滾動參數是正確的,但它們對應的日期戳不是正確的。

感謝所有幫助,謝謝。

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)

在第二種情況下,回歸中缺少align =“ right”。 真是一個令人尷尬的菜鳥錯誤!

案件結案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM