Scostamento sulla somma dei valori previsti da un modello di effetti misti in una serie temporale


32

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:

Vun'r(Σio=1nE[Xio])=Σio=1nVun'r(E[Xio]) conVun'r(E[Xio])=SE(E[Xio])2

Il problema è che i valori previsti provengono da un modello e i dati originali hanno autocorrelazione. L'intero problema porta alle seguenti domande:

  1. 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.
  2. 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.


6
Non sono sicuro di cosa stia facendo il programma r ma abbiamo Dove è un vettore colonna di uni e è la covarianza matrice per . questo aiuta?
vun'r(ΣioE[Xio])=un'Tvun'r(E[X])un'
un'vun'r(E[X])E[X]=(E[X1],...,E[Xn])T
probabilityislogic

@probabilityislogic Questo è fondamentalmente ciò che sta facendo il programma r. Grazie per la matematica
Joris Meys,

2
@probabilityislogic Se riesci a racchiuderlo in una risposta, puoi prendere la mia taglia +50. ;)
e-sushi,

Un problema che vedo e forse sto solo fraintendendo la tua notazione ma che è una costante quindi è qui che sono principalmente confusoE(Xio)=μioΣio=1nVun'r(E[Xio])=0
user52220

@ user52220 Ecco dove ti sbagli. E (Xi) è il valore atteso e quindi una variabile casuale, mentre mu_i è la media della popolazione e quindi un numero fisso. Var (mu) = 0, ma lo stesso non è corretto per E (Xi).
Joris Meys,

Risposte:


1

Nella notazione matriciale un modello misto può essere rappresentato come

y = X * beta + Z * u + epsilon

dove X e Z sono noti matrici di progetto relative rispettivamente agli effetti fissi e alle osservazioni di effetti casuali.

Vorrei applicare una trasformazione semplice e adeguata (ma non la migliore) per correggere l'auto-correlazione che comporta la perdita della prima osservazione e sostituire il vettore di colonna di [y1, y2, ... yn] con uno più piccolo di uno vettore della colonna di osservazione, ovvero: [y2 - rho * y1, y3 - rho * y2, ..., yn - rho * y (n-1)], dove rho è il valore stimato per l'auto-correlazione seriale.

Questo può essere eseguito moltiplicando per una matrice T, formando T * y, dove la 1a fila di T è composta come segue: [-rho, 1, 0, 0, ....], la 2a fila: [0, -rho, 1, 0, 0, ...], ecc. Analogamente, le altre matrici di disegno vengono cambiate in T * X e T * Z. Inoltre, viene modificata anche la matrice varianza-covarianza dei termini di errore, ora con termini di errore indipendenti.

Ora, basta calcolare la soluzione con le nuove matrici di design.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.