Kontext
Diese Frage verwendet R, bezieht sich jedoch auf allgemeine statistische Fragen.
Ich analysiere die Auswirkungen von Mortalitätsfaktoren (% Mortalität aufgrund von Krankheit und Parasitismus) auf die Wachstumsrate der Mottenpopulation im Laufe der Zeit, wobei Larvenpopulationen 8 Jahre lang einmal pro Jahr an 12 Standorten beprobt wurden. Die Daten zur Bevölkerungswachstumsrate zeigen einen klaren, aber unregelmäßigen zyklischen Trend im Zeitverlauf.
Die Residuen eines einfachen verallgemeinerten linearen Modells (Wachstumsrate ~% Krankheit +% Parasitismus + Jahr) zeigten über die Zeit einen ähnlich klaren, aber unregelmäßigen zyklischen Trend. Daher wurden auch verallgemeinerte Modelle der kleinsten Quadrate derselben Form mit geeigneten Korrelationsstrukturen an die Daten angepasst, um die zeitliche Autokorrelation zu behandeln, z. B. Verbindungssymmetrie, autoregressive Prozessreihenfolge 1 und autoregressive Korrelationsstrukturen mit gleitendem Durchschnitt.
Alle Modelle enthielten dieselben festen Effekte, wurden mit AIC verglichen und mit REML angepasst (um den Vergleich verschiedener Korrelationsstrukturen mit AIC zu ermöglichen). Ich benutze das R-Paket nlme und die gls-Funktion.
Frage 1
Die Residuen der GLS-Modelle zeigen im Zeitverlauf immer noch nahezu identische zyklische Muster. Bleiben solche Muster auch in Modellen, die die Autokorrelationsstruktur genau berücksichtigen, immer erhalten?
Ich habe einige vereinfachte, aber ähnliche Daten in R unter meiner zweiten Frage simuliert. Dies zeigt das Problem auf der Grundlage meines gegenwärtigen Verständnisses der Methoden, die zur Beurteilung von zeitlich autokorrelierten Mustern in Modellresten erforderlich sind , von denen ich weiß, dass sie falsch sind (siehe Antwort).
Frage 2
Ich habe GLS-Modelle mit allen möglichen plausiblen Korrelationsstrukturen an meine Daten angepasst, aber keine passt wesentlich besser als die GLM ohne Korrelationsstruktur: Nur ein GLS-Modell ist geringfügig besser (AIC-Score = 1,8 niedriger), während alle anderen dies tun höhere AIC-Werte. Dies ist jedoch nur dann der Fall, wenn alle Modelle von REML angepasst werden, nicht von ML, wenn GLS-Modelle eindeutig besser sind. Ich verstehe jedoch, dass Sie aus statistischen Büchern REML nur verwenden müssen, um Modelle mit unterschiedlichen Korrelationsstrukturen und denselben festen Effekten aus Gründen zu vergleichen Ich werde hier nicht näher darauf eingehen.
In Anbetracht der eindeutig zeitlich automatisch korrelierten Natur der Daten ist, wenn kein Modell sogar mäßig besser als das einfache GLM ist, die am besten geeignete Methode, um zu entscheiden, welches Modell für die Schlussfolgerung verwendet werden soll, vorausgesetzt, ich verwende eine geeignete Methode (die ich schließlich verwenden möchte) AIC zum Vergleichen verschiedener Variablenkombinationen)?
Q1 'Simulation' zur Untersuchung von Restmustern in Modellen mit und ohne entsprechende Korrelationsstrukturen
Generieren Sie eine simulierte Antwortvariable mit einem zyklischen Effekt von 'Zeit' und einem positiven linearen Effekt von 'x':
time <- 1:50
x <- sample(rep(1:25,each=2),50)
y <- rnorm(50,5,5) + (5 + 15*sin(2*pi*time/25)) + (x/1)
y sollte einen zyklischen Trend über die Zeit mit zufälliger Variation anzeigen:
plot(time,y)
Und eine positive lineare Beziehung zu 'x' mit zufälliger Variation:
plot(x,y)
Erstellen Sie ein einfaches lineares additives Modell von "y ~ time + x":
require(nlme)
m1 <- gls(y ~ time + x, method="REML")
Das Modell zeigt, wie zu erwarten, klare zyklische Muster in den Residuen, wenn es gegen die "Zeit" aufgetragen wird:
plot(time, m1$residuals)
Und was sollte ein schönes, klares Fehlen von Mustern oder Trends in den Residuen sein, wenn gegen 'x' gezeichnet wird:
plot(x, m1$residuals)
Ein einfaches Modell von "y ~ time + x", das eine autoregressive Korrelationsstruktur der Ordnung 1 enthält, sollte aufgrund der Autokorrelationsstruktur viel besser zu den Daten passen als das vorherige Modell, wenn es mit AIC bewertet wird:
m2 <- gls(y ~ time + x, correlation = corAR1(form=~time), method="REML")
AIC(m1,m2)
Das Modell sollte jedoch weiterhin nahezu identische "zeitlich" autokorrelierte Residuen anzeigen:
plot(time, m2$residuals)
Vielen Dank für jeden Rat.
Antworten:
Q1
Sie machen hier zwei Dinge falsch. Das erste ist im Allgemeinen eine schlechte Sache; Tauchen Sie im Allgemeinen nicht in Modellobjekte ein und zerreißen Sie Komponenten. In diesem Fall lernen Sie, die Extraktorfunktionen zu verwenden
resid()
. In diesem Fall erhalten Sie etwas Nützliches, aber wenn Sie einen anderen Typ von Modellobjekt hatten, wie z. B. ein GLM vonglm()
, dannmod$residuals
würden funktionierende Residuen der letzten IRLS-Iteration enthalten und sind etwas, das Sie im Allgemeinen nicht wollen!Das zweite, was du falsch machst, hat mich auch erwischt. Die Residuen, die Sie extrahiert haben (und die Sie auch extrahiert hätten, wenn Sie sie verwendet hätten
resid()
), sind die Roh- oder Antwort-Residuen. Dies ist im Wesentlichen die Differenz zwischen den angepassten Werten und den beobachteten Werten der Reaktion, wobei nur die Terme mit festen Effekten berücksichtigt werden . Diese Werte enthalten dieselbe verbleibende Autokorrelation wie die von,m1
da die festen Effekte (oder, wenn Sie es vorziehen, der lineare Prädiktor) in beiden Modellen gleich sind (~ time + x
).Um Residuen zu erhalten, die den von Ihnen angegebenen Korrelationsterm enthalten, benötigen Sie die normalisierten Residuen. Sie erhalten diese durch:
Diese (und andere verfügbare Arten von Residuen) werden beschrieben in
?residuals.gls
:Zum Vergleich sind hier die ACFs der rohen (Antwort) und der normalisierten Residuen
Um zu sehen, warum dies geschieht und wo die rohen Residuen den Korrelationsterm nicht enthalten, ziehen Sie das von Ihnen angepasste Modell in Betracht
wo
und ist eine Korrelationsmatrix, die durch ein AR (1) mit dem Parameter wobei die nichtdiagonalen Elemente der Matrix mit Werten gefüllt sind , wobei die positive ganze Zahl ist Trennung in Zeiteinheiten von Residuenpaaren.& rgr; & rgr; | d | dΛ ρ^ ρ| d| d
Die rohen Residuen, von denen der Standardwert zurückgegeben wird,
resid(m2)
stammen nur aus dem linearen Prädiktorteil, daher aus diesem Bitund daher enthalten sie keine der Informationen zu den in enthaltenen Korrelationstermen .Λ
Q2
Es scheint, dass Sie versuchen, einen nichtlinearen Trend mit einer linearen Funktion von
time
und einer mangelnden Anpassung an den "Trend" mit einem AR (1) (oder anderen Strukturen) anzupassen. Wenn Ihre Daten in etwa den hier angegebenen Beispieldaten entsprechen, würde ich ein GAM anpassen, um eine reibungslose Funktion der Kovariaten zu ermöglichen. Dieses Modell wäreund anfangs werden wir die gleiche Verteilung wie für den GLS annehmen, außer dass wir anfangs annehmen werden, dass (eine Identitätsmatrix, also unabhängige Residuen). Dieses Modell kann mit montiert werdenΛ = ich
Dabei wird
select = TRUE
eine zusätzliche Schrumpfung angewendet, damit das Modell einen der Begriffe aus dem Modell entfernen kann.Dieses Modell gibt
und hat glatte Begriffe, die so aussehen:
Die Residuen aus diesem Modell verhalten sich auch besser (rohe Residuen)
Nun ein Wort der Vorsicht; Es gibt ein Problem mit der Glättung von Zeitreihen, da die Methoden, die entscheiden, wie glatt oder verwackelt die Funktionen sind, davon ausgehen, dass die Daten unabhängig sind. In der Praxis bedeutet dies, dass die glatte Funktion von time (
s(time)
) für Informationen geeignet sein kann, bei denen es sich um zufällige autokorrelierte Fehler und nicht nur um den zugrunde liegenden Trend handelt. Daher sollten Sie beim Anpassen von Glättungselementen an Zeitreihendaten sehr vorsichtig sein.Es gibt eine Reihe von Möglichkeiten, um dies zu umgehen. Eine Möglichkeit besteht jedoch darin, auf die Anpassung des Modells umzuschalten, über
gamm()
die Aufrufelme()
intern ausgeführt werden und mit der Sie dascorrelation
Argument verwenden können, das Sie für dasgls()
Modell verwendet haben. Hier ist ein BeispielBeachten Sie, dass ich die Freiheitsgrade festlegen muss,ρ = 0 ρ > > 0,5
s(time)
da bei diesen Daten ein Identifizierungsproblem vorliegt. Das Modell könnte ein verwackelters(time)
und kein AR (1) ( ) oder ein linearer (1 Freiheitsgrad) und ein starker AR (1) ( ) sein. Daher vermute ich die Komplexität des zugrunde liegenden Trends. (Beachten Sie, dass ich nicht viel Zeit mit diesen Dummy-Daten verbracht habe, aber Sie sollten die Daten überprüfen und Ihr vorhandenes Wissen über die Variabilität in der Zeit nutzen, um eine angemessene Anzahl von Freiheitsgraden für den Spline zu bestimmen.)ρ > > 0,5s(time)
Das Modell mit dem AR (1) stellt keine signifikante Verbesserung gegenüber dem Modell ohne das AR (1) dar:
Wenn wir uns die Schätzung für $ \ hat {\ rho}} ansehen, sehen wir
woρ ρ
Phi
ist das, was ich genannt . Daher ist 0 ein möglicher Wert für . Die Schätzung ist geringfügig größer als Null und hat daher vernachlässigbare Auswirkungen auf die Modellanpassung. Daher möchten Sie sie möglicherweise im Modell belassen, wenn ein wichtiger Grund für die Annahme einer verbleibenden Autokorrelation besteht.ρquelle