我在具有多个位置的时间序列上运行VAR。假设loc1,loc2和loc3是时间序列数据的列名。
fitVAR = VAR(data,p=order,type = "both", ic = "AIC")
pred = predict(fitVAR,n.ahead = L)
我知道我可以通过pred$fcst$loc1[,1]
等获得预测。但是假设我想编写一个函数来执行此操作,将位置名称作为输入变量(例如LOC=c("loc1","loc2","loc3"))
。我怎么能那样做?
答案 0 :(得分:5)
您可以像这样使用lapply
:
lapply(predict(pp)$fcst[LOC],'[',,1)
例如:
data(Canada)
fit <- VAR(Canada, p = 2, type = "none")
LOC <- c('e','U')
lapply(predict(fit)$fcst[LOC],'[',,'fcst')
lapply(predict(fit)$fcst[LOC],'[',,1)
$e
[1] 962.3490 962.7852 963.1305 963.4016 963.6116 963.7742
963.9023 964.0081 964.1026 964.1954
$U
[1] 6.764097 6.751969 6.804301 6.900299 7.030548 7.184748
7.353441 7.528150 7.701521 7.867432
答案 1 :(得分:3)
如何使用:
locs <- sapply(pred$fcst[LOC], function (k) k[ , 1])
这个想法是pred$fcst
是一个命名列表。您已在LOC
中添加了所需的名称。现在我们可以收集名称在LOC
中的元素,然后将每个元素的第一列提取到locs
。