Regressionsmodellierung mit ungleicher Varianz

22

Ich würde gerne ein lineares Modell (lm) verwenden, bei dem die Varianz der Residuen eindeutig von der erklärenden Variablen abhängt.

Die Art und Weise, wie ich dies weiß, besteht darin, glm mit der Gamma-Familie zu verwenden, um die Varianz zu modellieren, und diese dann in die Gewichte der lm-Funktion umzuwandeln (Beispiel: http://nitro.biosci.arizona.edu/r/chapter31 .pdf )

Ich habe mich gewundert:

  • Ist das die einzige Technik?
  • Welche anderen Ansätze sind relevant?
  • Welche R-Pakete / Funktionen sind für diese Art der Modellierung relevant? (andere als glm, lm)
Tal Galili
quelle
4
Wo verwenden sie glm()dann lm()in dem Kapitel, auf das Sie verweisen? Mir scheint, das glm()ist alles, was dort benötigt und verwendet wird, aber ich habe vielleicht etwas verpasst. Sie können verallgemeinerte kleinste Quadrate ( gls()in nlme ) versuchen, mit denen Gewichtungen geschätzt werden können, um die Art der von Ihnen erwähnten Heteroskedastizität zu steuern. siehe ?varFuncund folge den links von dort. Das IIRC varFixed()wird tun, was Sie wollen.
Wiedereinsetzung von Monica - G. Simpson
In 'proc mixed' erzeugt 'subject = option' eine blockdiagonale Struktur in der Varianz-Kovarianz-Matrix der Residuen. Haben Sie sich daher ein allgemeines lineares Mischmodell überlegt, um die Hypothese der Homoskedastizität zu ändern?
15.
Danke Gavin, ich habe mir diese Funktionen etwas angesehen. Zwei Fragen: 1) Empfehlen Sie Tutorials? (Ich vermute, dass das MASS-Buch ein guter Anfang ist, aber ich habe mich gefragt, ob Sie darüber nachgedacht haben.) 2) Wie unterschiedlich wird die Schätzung sein, wenn die gls-Funktion verwendet wird, da das Modell, das ich anpasse, ein einfaches OLS ist? (Wenn ich mich richtig erinnere - nicht viel, da es sich um eine iterative Annäherung ersten Grades handeln sollte, aber ich bin mir da überhaupt nicht sicher). Ocram - danke, aber ich benutze kein SAS.
Tal Galili
In Abschnitt 2 wird erläutert, wie dies in STATA für die Quasipoisson-Regression durchgeführt wird: stata.com/meeting/fnasug08/gutierrez.pdf . Wenn jemand einen Weg vorschlagen könnte, dies in R umzukodieren, wäre ich sehr dankbar.
a11msp

Antworten:

17

Pillen gegen den "Megaphon-Effekt" umfassen (unter anderem):

  1. Verwendung log oder Quadratwurzel - Transformation . Dies ist nicht genau, aber manchmal zähmt es die Erweiterung.Y.
  2. Verwenden Sie die gewichtete Regression kleinster Quadrate . Bei diesem Ansatz erhält jede Beobachtung einen eigenen Varianzfaktor. Diese Antwort zeigt, wie WLSR in R verwendet wird (wenn beispielsweise die Varianz der Residuen proportional zum Mittelwert ist, können Sie die Inverse des angepassten Werts im ungewichteten Modell als Gewichtung angeben).
  3. Verwenden Sie eine robuste Regression. Die Funktion rlm()in dem MASSPaket von R führt eine M-Schätzung durch, die robust gegenüber Ungleichheit von Varianzen sein soll.

Juli 2017 bearbeiten: Es scheint, dass verallgemeinerte kleinste Quadrate, wie in der Antwort von Greg Snow vorgeschlagen, eine der besten Optionen ist.

gui11aume
quelle
2
Ich habe auf dieser Antwort für eine Stapelüberlauf-Frage aufgebaut .
Peter Ellis
1
Könnte es wert sein, auch auf die verallgemeinerte Option der kleinsten Fehlerquadrate hinzuweisen, wenn gls mit der Option weight auf varFixed () gesetzt wird - für mich scheint dies eine der eleganteren Optionen zu sein ...
Tom Wenseleers
@ TomWenseleers Ich stimme zu. Beachten Sie, dass dies die Antwort von Greg Snow ist.
gui11aume
9

Mit dem gamlss- Paket können Sie die Fehlerverteilung der Antwort als lineare, nicht lineare oder glatte Funktion der erklärenden Variablen modellieren. Dies scheint ein ziemlich wirkungsvoller Ansatz zu sein (ich habe viel über alle Möglichkeiten gelernt , die sich während des Modellauswahlprozesses ergeben könnten), und alles wird in mehreren Veröffentlichungen (einschließlich Büchern), auf die unter dem obigen Link verwiesen wird, gut erklärt.

ils
quelle
8

Die glsFunktion im nlmePaket für R kann gleichzeitig die Regression und die Beziehung zur Varianz schätzen. Siehe das weightsArgument und das 2. Beispiel auf der Hilfeseite.

Greg Snow
quelle