在循环中添加 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。
如果我们想从list
rbind
,使用
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)
}
我有一个函数 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。
如果我们想从list
rbind
,使用
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)
}