Varianz der Summe der vorhergesagten Werte aus einem gemischten Effektmodell auf einer Zeitreihe


32

Ich habe ein gemischtes Effektmodell (in der Tat ein verallgemeinertes additives gemischtes Modell), das mir Vorhersagen für eine Zeitreihe gibt. Um der Autokorrelation entgegenzuwirken, verwende ich ein corCAR1-Modell, da mir Daten fehlen. Die Daten sollen mir eine Gesamtlast geben, daher muss ich über das gesamte Vorhersageintervall summieren. Aber ich sollte auch eine Schätzung des Standardfehlers für diese Gesamtlast erhalten.

Wenn alle Vorhersagen unabhängig wären, könnte dies leicht gelöst werden durch:

Veinr(ich=1nE[Xich])=ich=1nVeinr(E[Xich]) mitVeinr(E[Xich])=SE(E[Xich])2

Das Problem ist, dass die vorhergesagten Werte von einem Modell stammen und die ursprünglichen Daten eine Autokorrelation aufweisen. Das ganze Problem führt zu folgenden Fragen:

  1. Bin ich in der Annahme richtig, dass die SE auf den berechneten Vorhersagen als die Wurzel der Varianz auf dem erwarteten Wert dieser Vorhersage interpretiert werden kann? Ich neige dazu, die Vorhersagen als "mittlere Vorhersagen" zu interpretieren und daher eine ganze Reihe von Mitteln zu summieren.
  2. Wie beziehe ich die Autokorrelation in dieses Problem ein oder kann ich davon ausgehen, dass sie die Ergebnisse nicht zu sehr beeinflusst?

Dies ist ein Beispiel in R. Mein realer Datensatz hat ungefähr 34.000 Messungen, daher ist die Skalierbarkeit ein Problem. Das ist der Grund, warum ich die Autokorrelation innerhalb eines Monats modelliere, sonst sind die Berechnungen nicht mehr möglich. Es ist nicht die richtigste Lösung, aber die richtigste ist nicht durchführbar.

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)

Bearbeiten:

Zu lernende Lektion: Lesen Sie zunächst alle Beispiele in allen Hilfedateien durch, bevor Sie in Panik geraten. In den Hilfedateien von predict.gam finde ich:

#########################################################
## 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)

Welches scheint in der Nähe zu sein, was ich tun möchte. Das sagt mir immer noch nicht genau, wie es gemacht wird. Ich könnte soweit kommen, dass es auf der linearen Vorhersagematrix basiert. Einsichten sind weiterhin willkommen.


6
veinr(ichE[Xich])=einTveinr(E[X])ein
einveinr(E[X])E[X]=(E[X1],,E[Xn])T

@probabilityislogic Genau das macht das r-Programm. Thx für die Mathematik
Joris Meys

2
@probabilityislogic Wenn du das in eine Antwort einwickeln kannst, kannst du mein +50 Kopfgeld nehmen. ;)
e-

E(Xich)=μichich=1nVeinr(E[Xich])=0

@ user52220 Da liegst du falsch. E (Xi) ist der erwartete Wert und damit eine Zufallsvariable, während mu_i der Mittelwert der Grundgesamtheit und damit eine feste Zahl ist. Var (mu) = 0, aber das Gleiche gilt nicht für E (Xi).
Joris Meys

Antworten:


1

In der Matrixnotation kann ein gemischtes Modell als dargestellt werden

y = X * beta + Z * u + epsilon

wobei X und Z bekannte Entwurfsmatrizen sind, die sich auf Beobachtungen mit festen Effekten bzw. zufälligen Effekten beziehen.

Ich würde eine einfache und angemessene (aber nicht die beste) Transformation anwenden, um die Autokorrelation zu korrigieren, bei der die erste Beobachtung verloren geht und der Spaltenvektor von [y1, y2, ... yn] durch einen kleineren ersetzt wird Beobachtungsspaltenvektor, nämlich: [y2 - rho * y1, y3 - rho * y2, ..., yn - rho * y (n-1)], wobei rho Ihr geschätzter Wert für die serielle Autokorrelation ist.

Dies kann durch Multiplizieren mit einer Matrix T durchgeführt werden, wobei T * y gebildet wird, wobei die erste Reihe von T wie folgt zusammengesetzt ist: [-rho, 1, 0, 0, ....], die zweite Reihe: [0, -rho, 1, 0, 0, ...] usw. In ähnlicher Weise werden die anderen Entwurfsmatrizen in T * X und T * Z geändert. Auch die Varianz-Kovarianz-Matrix der Fehlerterme wird jetzt mit unabhängigen Fehlertermen geändert.

Berechnen Sie jetzt einfach die Lösung mit den neuen Entwurfsmatrizen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.