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.
la source
Réponses:
En notation matricielle, un modèle mixte peut être représenté par
y = X * bêta + Z * u + epsilon
où X et Z sont des matrices de conception connues relatives aux observations à effets fixes et aux observations à effets aléatoires, respectivement.
J'appliquerais une transformation simple et adéquate (mais pas la meilleure) pour corriger l'auto-corrélation impliquant la perte de la première observation et remplacer le vecteur colonne de [y1, y2, ... yn] par une plus petite de un vecteur de colonne d'observation, à savoir: [y2 - rho * y1, y3 - rho * y2, ..., yn - rho * y (n-1)], où rho est votre valeur estimée pour l'auto-corrélation en série.
Ceci peut être effectué en multipliant par une matrice T, formant T * y, où la 1ère ligne de T est composée comme suit: [-rho, 1, 0, 0, ....], la 2e ligne: [0, -rho, 1, 0, 0, ...], etc. De même, les autres matrices de conception sont modifiées en T * X et T * Z. En outre, la matrice de variance-covariance des termes d'erreur est également modifiée, désormais avec des termes d'erreur indépendants.
Maintenant, calculez simplement la solution avec les nouvelles matrices de conception.
la source