J'ai un modèle à effets mélangés (en fait, un modèle mélangé additif généralisé) qui me donne des prévisions pour une série temporelle. Pour contrer l'autocorrélation, j'utilise un modèle corCAR1, compte tenu du fait qu'il me manque des données. Les données sont supposées me donner une charge totale, je dois donc faire la somme sur tout l'intervalle de prédiction. Mais je devrais aussi obtenir une estimation de l’erreur type sur cette charge totale.
Si toutes les prédictions étaient indépendantes, cela pourrait être facilement résolu en:
V a r ( E [ X i ] ) = S E ( E [ X i ] ) 2 avec
Le problème, c'est que les valeurs prédites proviennent d'un modèle et que les données d'origine sont autocorrélées. Tout le problème conduit aux questions suivantes:
- Ai-je raison de supposer que la SE sur les prévisions calculées peut être interprétée comme la racine de la variance sur la valeur attendue de cette prévision? J'ai tendance à interpréter les prédictions comme des "prédictions moyennes", et donc à résumer tout un ensemble de moyens.
- Comment incorporer l'autocorrélation dans ce problème ou puis-je bien supposer que cela n'influencera pas trop les résultats?
Ceci est un exemple en R. Mon jeu de données réel contient environ 34 000 mesures, donc la scalabilité est un problème. C’est la raison pour laquelle je modélise l’autocorrélation tous les mois, sinon les calculs ne sont plus possibles. Ce n'est pas la solution la plus correcte, mais la plus correcte n'est pas réalisable.
set.seed(12)
require(mgcv)
Data <- data.frame(
dates = seq(as.Date("2011-1-1"),as.Date("2011-12-31"),by="day")
)
Data <- within(Data,{
X <- abs(rnorm(nrow(Data),3))
Y <- 2*X + X^2 + scale(Data$dates)^2
month <- as.POSIXlt(dates)$mon+1
mday <- as.POSIXlt(dates)$mday
})
model <- gamm(Y~s(X)+s(as.numeric(dates)),correlation=corCAR1(form=~mday|month),data=Data)
preds <- predict(model$gam,se=T)
Total <- sum(preds$fit)
Modifier :
Leçon à apprendre: parcourez d’abord tous les exemples de tous les fichiers d’aide avant de paniquer. Dans les fichiers d'aide de Predict.gam, je peux trouver:
#########################################################
## now get variance of sum of predictions using lpmatrix
#########################################################
Xp <- predict(b,newd,type="lpmatrix")
## Xp %*% coef(b) yields vector of predictions
a <- rep(1,31)
Xs <- t(a) %*% Xp ## Xs %*% coef(b) gives sum of predictions
var.sum <- Xs %*% b$Vp %*% t(Xs)
Ce qui semble être proche de ce que je veux faire. Cela ne me dit toujours pas exactement comment c'est fait. Je pourrais aller aussi loin sur le fait que cela est basé sur la matrice de prédicteur linéaire. Toutes les idées sont toujours les bienvenues.