在循环中添加 xts 对象

Adding xts objects in a loop

我有一个函数 ugmfit return是一个 xts 对象。 现在我想编写一个包含循环的函数 out_of_sample_f。在每次迭代的那个循环中, fit$est_vol_oos 给出一个具有唯一日期的 xts。我想将它们全部加在一起,这样 out_of_sample_f 可以 return 所有预测中的一个 xts

如何在该循环中迭代合并这些 xts,以便 out_of_sample_f return 只是一个 xts 对象?不知道我的做法对不对?我正在考虑通过在开始时初始化 oosf 可能无法解决带有日期的问题。

out_of_sample_f <- function(rtrn, r_w, re_est_w, exog) {


  oosf = xts(as.numeric(0), as.Date("2013-04-08"))
  
  for (i in 0:(length(rtrn) - r_w)) {
    if(i%%re_est_w == 0){
      mv_m<-mv_into_mat(rtrn[(i + 1):(i + r_w)],exog,K=12,"monthly")
      fit<-ugmfit(model="GM",skew="NO",distribution="norm",rtrn[(i + 1):(i+r_w)],mv_m,K=12, out_of_sample = re_est_w)
      oosf = c(oosf, fit$est_vol_oos)

    }
  }
  oosf <- oosf[-1,]


  return(oosf)
}

fit$est_vol_oos 是特定 window 的 xts。我想遍历我的数据并连续添加我的预测。

后来我将这个“合并的”xts 用于其他东西,其中构建了这个 xts 和另一个 xts 之间的差异,但我得到了两个数组不一致的错误。 编辑: 我后来使用这个 xts 形式 out_of_sample_f 和一个原始的 return 系列作为另一个函数的输入。那里说: *.default((tau - dummies), (realized - evaluated)) 错误: 不一致的数组

实现的是原始 return 系列,评估的是来自 out_of_sample_f 的 xts。

如果我们想从listrbind,使用

do.call(rbind, lst1)

其中 lst1 是存储在 list

中的 out_of_sample_f 的输出

在OP的代码中,有一行

oosf = c(oosf, fit$est_vol_oos)

这将是

oosf = rbind(oosf, fit$est_vol_oos)
out_of_sample_f <- function(rtrn, r_w, re_est_w, exog) {


  oosf = xts(as.numeric(0), as.Date("2013-04-08"))
  
  for (i in 0:(length(rtrn) - r_w)) {
    if(i%%re_est_w == 0){
      mv_m<-mv_into_mat(rtrn[(i + 1):(i + r_w)],exog,K=12,"monthly")
      fit<-ugmfit(model="GM",skew="NO",distribution="norm",rtrn[(i + 1):(i+r_w)],mv_m,K=12, out_of_sample = re_est_w)
      oosf = rbind(oosf, fit$est_vol_oos)

    }
  }
  oosf <- oosf[-1,]


  return(oosf)
}