微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

滚动回归 4 年的数据,每次新回归和 NA 处理提前一个月

如何解决滚动回归 4 年的数据,每次新回归和 NA 处理提前一个月

前段时间,我编写了一个关于代码question here,该代码允许我估计每次回归需要 4 年的时间,而每次新的估计都会提前一个月。答案很有帮助,我终于根据答案制作了自己的代码。但是,我的数据库中有很多变量已经有很多年了,所以我不得不删除这些变量以避免我得到的错误,因为某些变量的某些窗口充满了 NA。我的原始数据集名为“Data_t”是:

Data

我所做的是:

thedata <- Data_t[,which(colMeans(!is.na(Data_t))>0.88)]

然后,根据我申请的answer to my previous question

library(zoo)

ndata <- data.frame(date = thedata$Fecha,thedata[,2:ncol(thedata)])
w <- 49 # number of trailing months to regress over 
depvars <- colnames(thedata[7:ncol(thedata)])
indep <- c("Mkt","SMB","HML","RMW","CMA")

reg <- function(ym_,depvar,indep,data,w,ym) {
ok <- ym > ym_ - w/12 & ym <= ym_
fo <- reformulate(indep,depvar)
fm <- lm(fo,subset = ok,na.action = na.exclude)
co <- coef(fm)
n <- nobs(fm)
se_sq <- diag(vcov(fm))
fac <- se_sq / (se_sq + sigma(fm)^2)
fac2 <- sigma(fm)^2/(se_sq + sigma(fm)^2)
co= co * fac + co * fac2
c(co,n = n)

}

ym <- as.yearmon(ndata$date)
ym_u <- tail(unique(ym),-(w-1))

L <- Map(function(depvar) {
data.frame(yearmon = ym_u,t(sapply(ym_u,reg,depvar = depvar,indep = indep,data = ndata,w = w,ym = ym)),check.names = FALSE)
},depvars)

b_data <- dplyr::bind_rows(L,.id = "depvar")

然而,我现在被要求不要忽略那些没有 NA 的变量,而是包括他们对他们有数据的年份的估计。我试图选择构建不同的数据集,但工作量很大,而且效率很低。我想知道您是否可以告诉我一种在功能代码中包含一种方法来表示 r 以从 NA 结束的年份获取变量并从那里估计系数。

提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。