首页 > 解决方案 > DF中多个变量的单变量滚动窗口的R循环

问题描述

我敢肯定这很明显,但我是 R 的初学者,我花了一大半早上的时间试图解决这个问题......

所以,我有 24 个时间序列的 3410 个观测值的 DF。我想创建一个循环来进行滚动窗口回归。我想在滚动窗口中对因变量 DF[,1] 上的所有自变量 DF[,2:24] 进行回归,并及时提取 R2 的演变。

我尝试了以下代码,但它不起作用:

resultsList <- list()

for (i in 1:ncol(var)) {
  lmfit <- roll_regres(var[,1]~var[,i], var, 126, do_compute = c("sigmas", "r.squareds"))
  resultsList[[i]] <- summary(lmfit)
}

我收到以下错误:

Error in roll_cpp(Y = y, X = x, window = width, do_compute_R_sqs = do_compute_R_sqs,  : 
  'dchdd' failed with code 1

我还使用 rollapply 尝试了以下代码,但它也不起作用:

resultsList <- list()

for (i in 1:ncol(var)) {
  lmfit <- rollapply(var, width = 126, FUN = function(x) lm(var[, i] ~ var[,1]), by =1, align = "left")
  resultsList[[i]] <- summary(lmfit)
}

我收到以下错误:

Error in zoo(rval, index(x)[i]) : 
  “x” : attempt to define invalid zoo object

如果有人可以帮助我,我将非常感激。

提前感谢您提供的任何帮助。

标签: rtime-seriesregressionzoorolling-computation

解决方案


我解决了这个问题;这是代码:

#Loop RW 6 months
resultsList6M <- list()

for (i in 1:ncol(var)) {
  lmfit <- roll_regres(var[,i]~cu, var, 126,do_compute = c("r.squareds"))
  resultsList6M[[i]] <- lmfit["r.squareds"]
}

RS16m <- ts(as.numeric(as.character(unlist(resultsList6M[[1]]["r.squareds"]))),start = c(2007, 5), frequency = 252)
ts_plot(RS16m,
        title = "126 Days RW, CADUSD ~ EURUSD ",
        Xtitle = "Time",
        Ytitle = "RSQUARED",
        width = 1)

现在,我可以及时对 R2 进行图形分析,我计划在 6 个月、1 年和 3 年重复滚动窗口。


推荐阅读