Ho un modello a effetti misti (in effetti un modello misto additivo generalizzato) che mi dà previsioni per una serie. Per contrastare l'autocorrelazione, uso un modello corCAR1, dato che ho dei dati mancanti. I dati dovrebbero darmi un carico totale, quindi devo sommare l'intero intervallo di previsione. Ma dovrei anche ottenere una stima dell'errore standard su quel carico totale.
Se tutte le previsioni fossero indipendenti, questo potrebbe essere facilmente risolto da:
con
Il problema è che i valori previsti provengono da un modello e i dati originali hanno autocorrelazione. L'intero problema porta alle seguenti domande:
- Sono corretto nel ritenere che la SE sulle previsioni calcolate possa essere interpretata come la radice della varianza sul valore atteso di tale previsione? Tendo a interpretare le previsioni come "previsioni di media", e quindi sommare un intero insieme di mezzi.
- Come posso incorporare l'autocorrelazione in questo problema o posso tranquillamente supporre che non influenzerebbe troppo i risultati?
Questo è un esempio in R. Il mio set di dati reale ha circa 34.000 misurazioni, quindi la scalabilità è un problema. Questo è il motivo per cui modello l'autocorrelazione entro ogni mese, altrimenti i calcoli non sono più possibili. Non è la soluzione più corretta, ma la più corretta non è fattibile.
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)
Modificare :
Lezione da imparare: prima di tutto, esamina tutti i campioni in tutti i file della guida prima di andare nel panico. Nei file di aiuto di predict.gam, posso trovare:
#########################################################
## 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)
Il che sembra essere vicino a quello che voglio fare. Questo non mi dice ancora esattamente come è fatto. Potrei arrivare fino al fatto che si basa sulla matrice predittiva lineare. Eventuali approfondimenti sono ancora ben accetti.