1

私はvarsパッケージを使用しており、計算モデルからいくつかの値を予測したいと考えています:

# Get the model
x1 <- rnorm(15)
y1 <- x1 + rnorm(15)
trainFrame=data.frame(x1,y1);
model=VAR(trainFrame, p=3);
pr1=predict(model, trainFrame);
# Forecast values with new data
x2 <- rnorm(15)
y2 <- x2 + rnorm(15)
newFrame=data.frame(x2,y2);
pr2=predict(model, newFrame);

2 つの予測ベクトルpr1を比較すると、pr2それらが同じであることがわかります。トレーニング データからの予測ではなく、実際の予測値を取得するにはどうすればよいですか?

4

3 に答える 3

2

ここでは、 class 属性を持つオブジェクトの predict メソッドを呼び出しますvarest

predict(オブジェクト, ..., n.ahead = 10, ci = 0.95, dumvar = NULL)

n.ahead 予測は、推定 VAR に対して再帰的に計算されます。

予測するトレーニング フレームを指定する必要はありません。

  pr2=pr1=predict(model)
于 2012-12-26T09:14:16.560 に答える
1

私は同じ問題を抱えていたので(私は思う)、nステップ先の予測を計算するためにこの関数を書きました。ただし、エラー バンドや CI は表示されません。

VAR.pred <- function(x, varest, n.ahead = 10)
{
 k <- ncol(varest$y)
 p <- varest$p
 Atemp <- matrix(NA, k, k*p + 1)

 for(i in 1:k) Atemp[i, ] <- (coef(varest)[[i]])[, 1]

 Const <- as.matrix(Atemp[, ncol(Atemp)])
 A <- Atemp[, -ncol(Atemp)]

 fcast <- matrix(NA, n.ahead, k)
 spoint <- as.matrix(x[nrow(x):(nrow(x)- p + 1), ])

 for(l in 1:n.ahead)
 {
  ftemp <- A[, 1:k]%*%t(spoint)[, 1]
  for(j in 2:p)   ftemp <- ftemp + A[, (1 + k*(j-1)):(k*j)]%*%t(spoint)[, j]
  ftemp <- ftemp + Const

  fcast[l, ] <- t(ftemp) 

  spoint <- rbind(t(ftemp), spoint)[1:p, ]
 }

 fframe <- data.frame(fcast)
 names(fframe) <- dimnames(x)[[2]]

 return(fframe)
}

pr1を与える

VAR.pred(x = model$y, varest = model)

pr2を与える

VAR.pred(x = newFrame, varest = model)

私が助けてくれることを願っています。

于 2013-08-02T16:32:20.970 に答える