Unsere Daten sind also wie folgt strukturiert:
Wir haben Teilnehmer, jeder Teilnehmer kann in 3 Gruppen eingeteilt werden ( G ), und für jeden Teilnehmer haben wir Stichproben einer kontinuierlichen Variablen. Und wir versuchen, Werte vorherzusagen, die entweder 0 oder 1 sind.∈ A , B , C.
Wie würden wir matlab verwenden, um eine Interaktion zwischen der kontinuierlichen Variablen und der kategorialen Variablen bei der Vorhersage dieser Werte zu testen?
logistic
matlab
interaction
mpacer
quelle
quelle
Antworten:
Der einfachste Weg, IMO, besteht darin, die Entwurfsmatrix selbst zu erstellen, dax g g=1,2,3
glmfit
entweder eine Matrix aus rohen (beobachteten) Werten oder eine Entwurfsmatrix akzeptiert wird. Das Codieren eines Interaktionsbegriffs ist nicht so schwierig, wenn Sie das vollständige Modell geschrieben haben. Nehmen wir an, wir haben zwei Prädiktoren, (stetig) und (kategorisch, mit drei ungeordneten Ebenen, sagen wir ). Unter Verwendung der Wilkinson-Notation würden wir dieses Modell unter Vernachlässigung der linken Seite schreiben (für ein Binomialergebnis würden wir eine Logit-Link-Funktion verwenden). Wir benötigen nur zwei Dummy-Vektoren, um die Ebenen zu codieren (als vorhanden / nicht vorhanden für eine bestimmte Beobachtung), sodass wir 5 Regressionskoeffizienten plus einen Intercept-Term haben. Dies kann zusammengefasst werden alsy ~ x + g + x:g
g
Dabei steht für eine Indikatormatrix, die die Ebene von codiert .I g
In Matlab würde ich anhand des Online-Beispiels Folgendes tun:
Ich habe keine Spalte mit Einsen für den Achsenabschnitt eingefügt, da diese standardmäßig enthalten ist. Die Designmatrix sieht aus wie
und Sie können sehen, dass die Interaktionsterme nur als Produkt von
x
mit der entsprechenden Spalte vong
(g = 2 und g = 3, da wir die erste Ebene nicht benötigen) codiert sind .Die Ergebnisse sind nachstehend als Koeffizienten, Standardfehler, Statistik und p-Wert (aus der
stats
Struktur) angegeben:Das Testen der Interaktion kann nun durchgeführt werden, indem der Unterschied in der Abweichung vom obigen vollständigen Modell und einem reduzierten Modell berechnet wird (wobei der Interaktionsterm weggelassen wird, dh die letzten beiden Spalten der Entwurfsmatrix). Dies kann manuell oder mithilfe der
lratiotest
Funktion erfolgen, die den Likelihood-Ratio-Hypothesentest bereitstellt. Die Abweichung für das vollständige Modell beträgt 4,3122 (dev
), während sie für das Modell ohne Interaktion 6,4200 (von mir verwendetglmfit(X(:,1:3), [y n], 'binomial', 'link', 'probit');
) beträgt und der zugehörige LR-Test zwei Freiheitsgrade aufweist (die Differenz in der Anzahl der Parameter zwischen den beiden Modellen). Da die skalierte Abweichung nur das Zweifache der Log-Wahrscheinlichkeit für GLMs beträgt, können wir sie verwendenwobei die Statistik als mit 2 df verteilt ist (der kritische Wert ist dann 5,9915, siehe ). Die Ausgabe zeigt ein nicht signifikantes Ergebnis an: Wir können nicht auf eine Wechselwirkung zwischen und in der beobachteten Probe schließen.χ2
chi2inv(0.95, 2)
x
g
Ich denke, Sie können die oben genannten Schritte in einer praktischen Funktion Ihrer Wahl abschließen. (Beachten Sie, dass der LR-Test in sehr wenigen Befehlen von Hand durchgeführt werden kann!)
Ich habe diese Ergebnisse mit der R-Ausgabe verglichen, die als nächstes angegeben wird.
Hier ist der R-Code:
Hier sind die Ergebnisse für die Koeffizienten im vollständigen Modell:
Für den Vergleich der beiden verschachtelten Modelle habe ich die folgenden Befehle verwendet:
was die folgende "Abweichungstabelle" ergibt:
quelle