Wie wende ich einen Koeffiziententerm für Faktoren und interaktive Terme in einer linearen Gleichung an?


9

Mit R habe ich ein lineares Modell für eine einzelne Antwortvariable aus einer Mischung von kontinuierlichen und diskreten Prädiktoren angepasst. Dies ist sehr einfach, aber ich habe Probleme zu verstehen, wie ein Koeffizient für einen diskreten Faktor funktioniert.

Konzept: Natürlich wird der Koeffizient der stetigen Variablen 'x' in der Form angewendet, y = coefx(varx) + interceptaber wie funktioniert das für einen Faktor z, wenn der Faktor nicht numerisch ist?y = coefx(varx) + coefz(factorz???) + intercept

Spezifisch: Ich habe ein Modell in R als lm(log(c) ~ log(d) + h + a + f + h:a)wo angepasst hund fsind diskrete, nicht numerische Faktoren. Die Koeffizienten sind:

Coefficients:
              Estimate 
(Intercept)  -0.679695 
log(d)        1.791294 
h1            0.870735  
h2           -0.447570  
h3            0.542033   
a             0.037362  
f1           -0.588362  
f2            0.816825 
f3            0.534440
h1:a         -0.085658
h2:a         -0.034970 
h3:a         -0.040637

Wie verwende ich diese, um die Vorhersagegleichung zu erstellen:

log(c) =  1.791294(log(d)) + 0.037362(a) + h??? + f???? + h:a???? + -0.679695

Oder mache ich es falsch?

Ich denke, dass dieses Konzept ist, wenn das Thema in die Kategorie fällt h1und f2die Gleichung wird:

log(c) =  1.791294(log(d)) + 0.037362(a) +  0.870735  + 0.816825  + h:a???? + -0.679695

Aber ich bin mir wirklich nicht sicher, wie der h:ainteraktive Begriff analysiert wird. Danke, dass du es mir leicht gemacht hast.

Antworten:


14

Dies ist kein spezifisches Problem für R. R verwendet eine herkömmliche Anzeige von Koeffizienten.

Wenn Sie eine solche Regressionsausgabe lesen (in einem Artikel, Lehrbuch oder einer Statistiksoftware), müssen Sie wissen, welche Variablen "kontinuierlich" und welche "kategorisch" sind:

  • Die "kontinuierlichen" sind explizit numerisch und ihre numerischen Werte wurden unverändert in der Regressionsanpassung verwendet.

  • Die "kategorialen" Variablen können von jedem Typ sein, einschließlich der numerischen! Was sie kategorisch macht, ist, dass die Software sie als "Faktoren" behandelt: Das heißt, jeder gefundene Wert wird als Indikator für etwas Besonderes angesehen.

    Die meisten Programme behandeln nicht numerische Werte (z. B. Zeichenfolgen) als Faktoren. Die meisten Programme können davon überzeugt werden, auch numerische Werte als Faktoren zu behandeln. Beispielsweise sieht eine Postleitzahl (Postleitzahl in den USA) wie eine Nummer aus, ist jedoch nur eine Vorwahl für eine Reihe von Postfächern. Es würde keinen Sinn machen, Postleitzahlen mit anderen Zahlen zu addieren, zu subtrahieren und zu multiplizieren! (Diese Flexibilität ist die Ursache für einen häufigen Fehler: Wenn Sie nicht vorsichtig oder unwissend sind, behandelt Ihre Software möglicherweise eine Variable, die Sie als kategorisch betrachten, als kontinuierlich oder umgekehrt. Seien Sie vorsichtig!)

    Trotzdem müssen kategoriale Variablen in irgendeiner Weise als Zahlen dargestellt werden, um die Anpassungsalgorithmen anzuwenden. Es gibt viele Möglichkeiten, sie zu codieren . Die Codes werden mit "Dummy-Variablen" erstellt. Weitere Informationen zur Dummy-Variablencodierung finden Sie auf dieser Website. Die Details spielen hier keine Rolle.

In der Frage wird uns das gesagt hund fes handelt sich um kategoriale ("diskrete") Werte. Standardmäßig log(d)und asind fortlaufend. Das ist alles was wir wissen müssen. Das Modell ist

y=- -0,679695+1,791294 Log(d)+0,870735 wenn h=h1- -0,447570 wenn h=h2+0,542033 wenn h=h3+0,037362 ein- -0,588362 wenn f=f1+0,816825 wenn f=f2+0,534440 wenn f=f3- -0,085658 ein wenn h=h1- -0,034970 ein wenn h=h2- -0,040637 ein wenn h=h3

Die hier angewendeten Regeln sind:

  • Der Begriff "Intercept" ist, falls er erscheint, eine additive Konstante (erste Zeile).

  • Kontinuierliche Variablen werden durch ihren Koeffizienten multipliziert, auch in „Wechselwirkungen“ wie die h1:a, h2:aund h3:aBegriffe. (Dies beantwortet die ursprüngliche Frage.)

  • Jede kategoriale Variable (oder jeder Faktor) ist nur in Fällen enthalten, in denen der Wert dieses Faktors angezeigt wird.

Log(d)=2h=h3ein=- -1f=f2

y^=- -0,6797+1,7913×(2)+0,5420+0,0374×(- -1)+0,8168- -0,0406×(- -1).

hh1h2h3(0,870735,- -0,447570,0,542033)h(- -0,085658,- -0,034970,- -0,040637)ah:aInteraktion; Ebenso gilt fin einem bestimmten Fall nur ein Koeffizient .


8

Dies ist nur ein Kommentar, aber er passt nicht als solcher in die begrenzten Bearbeitungsfelder, die uns zur Verfügung stehen.

L.EINT.E.X.

Lassen Sie uns zuerst einige Daten simulieren,

n <- 200
x1 <- runif(n)
x2 <- runif(n)
x3 <- runif(n)
g1 <- gl(2, 100, n, labels=letters[1:2])
g2 <- cut2(runif(n), g=4)
y <- x1 + x2 + rnorm(200)

dann ein Regressionsmodell anpassen,

f <- ols(y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

was die folgenden Ergebnisse ergibt:

Linear Regression Model

ols(formula = y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

                Model Likelihood     Discrimination    
                   Ratio Test           Indexes        
Obs      200    LR chi2     35.22    R2       0.161    
sigma 0.9887    d.f.            8    R2 adj   0.126    
d.f.     191    Pr(> chi2) 0.0000    g        0.487    

Residuals

    Min      1Q  Median      3Q     Max 
-3.1642 -0.7109  0.1015  0.7363  2.7342 

                   Coef    S.E.   t     Pr(>|t|)
Intercept           0.0540 0.2932  0.18 0.8541  
x1                  1.1414 0.3642  3.13 0.0020  
x2                  0.8546 0.2331  3.67 0.0003  
x3                 -0.0048 0.2472 -0.02 0.9844  
g1=b                0.2099 0.2895  0.73 0.4692  
g2=[0.23278,0.553)  0.0609 0.1988  0.31 0.7598  
g2=[0.55315,0.777) -0.2615 0.1987 -1.32 0.1896  
g2=[0.77742,0.985] -0.2107 0.1986 -1.06 0.2901  
x1 * g1=b          -0.2354 0.5020 -0.47 0.6396  

Um die entsprechende Regressionsgleichung zu drucken, verwenden Sie einfach die generische latexFunktion wie folgt :

latex(f)

Bei der Konvertierung des DVI in PNG sollten Sie so etwas erhalten

Geben Sie hier die Bildbeschreibung ein

IMO, dies hat den Vorteil, zu zeigen, wie vorhergesagte Werte in Abhängigkeit von tatsächlichen oder ausgewählten Werten für numerische und kategoriale Prädiktoren berechnet werden. Für letztere sind die Faktorwerte in Klammern nahe dem entsprechenden Koeffizienten angegeben.


1
+0,2099013{b}}g1{b}}G1=bbb01

1
@whuber Das obige Bild wurde zugeschnitten, aber es gibt eine Art Fußnote, die daran erinnert, dass "{c} = 1, wenn sich das Thema in Gruppe c befindet, andernfalls 0" (die Auswahl von ckann in diesem speziellen Fall verwirrend sein, da ich zwei Buchstaben für wähle stellen g1-Ebenen dar, aber normalerweise ist es ziemlich intuitiv - und das ist reines tex, damit wir die Quelldatei danach noch bearbeiten können). Im Anhang finden Sie eine weitere Zusammenfassung, die ich geändert habe, g1sodass es sich nun um einen vierstufigen Faktor handelt. Bei 0/1-Labels ist dies jedoch möglicherweise verwirrender .
Chl

5

Sie können überprüfen, ob Ihre "Kontraste" die Standardeinstellungen sind options()und suchen nach:

$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly" 

Wenn Ihre ungeordneten Kontraste als festgelegt sind contr.treatment(wie es sein sollte, sofern Sie sie nicht geändert haben), wird die erste Ebene jedes Ihrer Faktoren als Basis festgelegt. Sie erhalten nur Schätzungen für die Koeffizienten vor den Dummy-Variablen, die für andere Ebenen des Faktors erstellt wurden. Tatsächlich sind diese Koeffizienten "wie unterschiedlich die Antwortvariable auf dieser Ebene des Faktors im Durchschnitt im Vergleich zur Basislinie des Faktors ist, nachdem alles andere im Modell kontrolliert wurde".

Ich vermute aus Ihrer Ausgabe, dass es ein h0und f0gibt, die die Grundlinienpegel für h und f sind (es sei denn, Sie haben eine nicht standardmäßige Option für Kontraste. In diesem Fall gibt es mehrere Möglichkeiten; versuchen Sie ?contr.treatmentetwas Hilfe).

Ähnlich verhält es sich mit der Interaktion. Wenn mein vorheriger Absatz korrekt ist, ist die Schätzung für awirklich die Steigung für awann h=h0. Die in der Zusammenfassung angegebenen Schätzungen, die für die Wechselwirkungen gelten, geben an, um wie viel sich diese Steigung für verschiedene Ebenen von ändert h.

Versuchen Sie in Ihrem Beispiel mit h = h1 und f = f2 Folgendes:

log(c) =  1.791294(log(d)) + (0.037362 - 0.085658) (a) +  0.870735  + 0.816825  -0.679695

Oh, und Sie können predict()auch viele nützliche Dinge tun ... wenn Sie tatsächlich etwas vorhersagen möchten (anstatt die Gleichung für einen Bericht aufzuschreiben). Versuchen Sie ?predict.lmzu sehen, was predict()mit einem von erstellten Objekt geschieht lm.


+1 (eigentlich habe ich das vor einem Monat positiv bewertet und lese es gerade wieder) auf jeden Fall fällt mir ein, dass Sie empfehlen, den Kontrasttyp durch zu überprüfen options(). Sie müssen durch viel Müll scrollen, um zu finden, was Sie brauchen. Sie könnten versuchen options()$contrasts, das nur auszugeben, was Sie wollen.
Gung - Reinstate Monica

Guter Vorschlag, mein Gehirn muss geschlafen haben.
Peter Ellis

Weißt du, ich beantworte oft Fragen zum Lebenslauf, kurz bevor ich ins Bett gehe ...
gung - Reinstate Monica
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.