Lineare Regression mit Faktoren in R.

10

Ich versuche zu verstehen, wie genau Faktoren in R funktionieren. Angenommen, ich möchte eine Regression mit einigen Beispieldaten in R ausführen:

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

Ich verstehe das TypeMississippiund werde Treatmentchilledals Boolescher Wert behandelt: Für jede Zeile gilt die anfängliche Aufnahme 36.97, und wir subtrahieren, 12.66ob sie vom Typ Mississippi ist und 6.86gekühlt wurde. Ich habe Probleme, so etwas zu verstehen:

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

Was bedeutet es, zwei Faktoren in einem zu multiplizieren lm?

Sylowtheorems
quelle

Antworten:

17

Um die Antwort von @ John näher zu erläutern: In den Formeln von R gibt es einige Operatoren, die Sie auf die Begriffe anwenden können: "+" fügt sie einfach hinzu, ":" bedeutet, dass Sie einen Begriff (oder mehrere Begriffe) hinzufügen, die sich auf ihre Interaktion beziehen ( siehe unten), "*" bedeutet beides, dh die "Haupteffekte" werden hinzugefügt, und die Interaktionsterme werden ebenfalls hinzugefügt.

Was bedeutet diese Interaktion? Nun, im Fall von kontinuierlichen Variablen ist es tatsächlich ein Begriff, der hinzugefügt wird, der einfach das Vielfache der beiden Variablen ist. Wenn Sie Größe und Gewicht als Prädiktoren haben und out ~ height * weightals Formel verwenden möchten, enthält das lineare Modell drei "Variablen", nämlich Gewicht, Größe und deren Produkt (es enthält auch die Interaktion, aber das ist hier weniger interessant).

Obwohl ich oben etwas anderes vorschlage: Dies funktioniert genauso für kategoriale Variablen, aber jetzt gilt das 'Produkt' für die (Menge von) Dummy-Variablen für jede kategoriale Variable. Angenommen, Ihre Größe und Ihr Gewicht sind jetzt kategorisch und enthalten jeweils drei Kategorien (S (Einkaufszentrum), M (Edium) und L (Arge)). In linearen Modellen wird jede dieser Variablen durch einen Satz von zwei Dummy-Variablen dargestellt, die entweder 0 oder 1 sind (es gibt andere Codierungsmethoden, dies ist jedoch die Standardeinstellung in R und die am häufigsten verwendete). Nehmen wir an, wir verwenden S als Referenzkategorie für beide, dann haben wir jedes Mal zwei Dummies height.M und height.L (und ähnlich für das Gewicht).

Das Modell out ~ height * weightenthält nun die 4 Dummies + alle Produkte aller Dummy-Kombinationen (ich schreibe die Koeffizienten hier nicht explizit, sie sind impliziert):

(intercept) + height.M + height.L + weight.M + weight.L + height.M * weight.M + height.L * weight.M + height.M * weight.L + height.L * weight.L.

In der obigen Zeile bezieht sich '*' jetzt wieder auf ein einfaches Produkt, diesmal jedoch auf die Dummies, sodass jedes Produkt selbst entweder 1 (wenn alle Faktoren 1 sind) oder 0 (wenn mindestens einer nicht ist) ist.

In diesem Fall ermöglichen die 8 'Variablen' unterschiedliche (mittlere) Ergebnisse in allen Kombinationen der beiden Variablen: Der Effekt eines großen Gewichts ist jetzt für kleine Menschen nicht mehr der gleiche (für sie wird der Effekt einfach durch den Begriff gebildet weight.L) als für große Leute (hier ist der Effekt weight.L + height.L * weight.L)

Nick Sabbe
quelle
7

Um Johns Antwort zu folgen, verwenden die Formeln in lm keine arithmetische Notation, sondern eine kompakte symbolische Notation zur Beschreibung linearer Modelle (speziell die Wilkinson-Rogers-Notation, hier gibt es eine gute kurze Zusammenfassung http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

Wenn Sie A * B in die Modellformel aufnehmen, bedeutet dies im Grunde, dass Sie A, B und A: B anpassen (die Wechselwirkung von A und B). Wenn der Interaktionsterm statistisch signifikant ist, deutet dies darauf hin, dass die Wirkung der Behandlung für jeden Typ unterschiedlich ist.

Marius
quelle
3

Vielleicht wäre es hilfreich, in der Hilfe nach einer Formel zu suchen. Sie multiplizieren nicht, Sie sagen, Sie möchten auch die beiden Haupteffekte und ihre Interaktion.

John
quelle
1
(+1) obwohl es mir eher wie ein Kommentar erscheint.
Dmitrij Celov