2013-06-26 75 views
4

我在多個位置的時間序列上運行VAR。假設loc1,loc2和loc3是時間序列數據的列名。如何從R預測中提取預測?

fitVAR = VAR(data,p=order,type = "both", ic = "AIC") 
pred = predict(fitVAR,n.ahead = L) 

我知道我可以通過pred$fcst$loc1[,1]等得到的天氣預報,但假設我要編寫一個函數來做到這一點這需要位置的名稱作爲一個輸入變量(例如,LOC=c("loc1","loc2","loc3"))。我該怎麼辦呢?

回答

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 
3

有關使用方法:。

locs <- sapply(pred$fcst[LOC], function (k) k[ , 1]) 

的想法是,pred$fcst被命名列表你已經把你LOC想要的名字現在我們可以收集他們的名字都在LOC元素和然後從每個提取第一列到locs