J'essaie d'écrire un modeste programme pour comparer les résultats en prédiction de 2 modèles, l'un linéaire (lm) et l'autre de type arima avec régresseurs externes (arima).
J'essaie de le faire de façon dynamique, en augmentant séquentiellement la taille de l'échantillon de modélisation et en calculant l'erreur de prévision sur le reste des points (cas d'une série temporelle).
Mon pogramme est le suivant :
xshort est l'échantillon d'apprentissage
xnext celui de prévision
Code : Tout sélectionner
## Reference models
model <- Y ~ X1 + X2 +X3 + X4
k <- 60 # minimum data length for fitting a model
n <- nrow(D)
mae.lm <- mae.arima <- matrix(NA,n-k-1)
D <- ts(D, frequency = 1)
for(i in 1:(n-k-1))
{
xshort <- window(D, end= k+i)
xnext <- window(D, start= k+(i+1), end= n)
fit1 <- lm(model, data=xshort)
fit2 <- arima(xshort[,"Y"], order = c(1,0,0), xreg = xshort[,2:5], method = "ML", include.mean = FALSE)
fcast1 <- predict(fit1, newdata = xnext)
fcast2 <- predict(fit2, newxreg = xnext[,2:5])
mae.lm[i] <- mean(abs(fcast1-xnext[,"Y"]))
mae.arima[i] <- mean(abs(fcast2$pred-xnext[,"Y"]))
}
Ca fonctionne pour le modèle linéaire, je récupère une estimation séquentielle du MAE dans mae.lm.
Mais dès que j'intègre le modèle avec arima, j'ai le message d'erreur suivant :
Code : Tout sélectionner
Erreur dans predict.Arima(fit2, newxreg = xnext[, 2:5]) :
'xreg' et 'newxreg' ont des nombres de colonnes différents
Or je ne comprends, dans 'arima' et dans 'predict', j'ai exactement les mêmes indices [,2:5]...
Quelqu'un aurait une idée ??? Je suis un peu confus...
Merci beaucoup
Michel[/code]