提取残差以进行多次滚动回归

时间:2020-07-27 20:32:01

标签: r dplyr data.table regression rolling-computation

我有一个面板数据集,可以通过以下方式很好地复制:

library(zoo)
library(tidyverse)
library(data.table)
    
set.seed(100000)
    
    df <- data.table(
  
  ##Date
  Date = rep(seq(as.Date("2000/01/01"), by = "day", length.out = 1000), times=5),
  
  ##Cross-Section of Stocks
  Symbol = sample(letters, 5000, replace=TRUE),
  
  ##Return (dep var)
  EXR = sample(1:100, 5000, replace=TRUE),
  
  ##Factors (indep var)
  MKT = sample(1:100, 5000, replace=TRUE),
  SMB = sample(1:100, 5000, replace=TRUE),
  HML = sample(1:100, 5000, replace=TRUE))

我想使用EXR作为因变量,MKTSMBHML做为自变量进行滚动回归。为此,我使用以下代码:

library(rollRegres)

setkey(df, Symbol, Date)

func <- function(SD){
  x <- roll_regres.fit(
    x = cbind(1, SD$MKT, SD$SMB, SD$HML), y = SD$EXR, 
    width = 20L, do_compute = "sigmas")$coefs
  split(x, rep(1:ncol(x), each = nrow(x))) 
}

df[, c("alpha", "b.Mkt", "b.SMB", "b.HML") := func(.SD), by = Symbol]


tail(df)

但是,我还想将每个回归的残差计算,提取并存储在单独的data.table或list中。

这种方法是否有可能进行这种残差提取?

此外,我一直想知道是否有可能以“滞后回归”的方式执行此操作,即对于width=list(c(0:-20))而不违反widthsingle integerish value的约束。

谢谢!

0 个答案:

没有答案
相关问题