Regressione lineare con fattori in R


10

Sto cercando di capire come funzionano esattamente i fattori in R. Diciamo che voglio eseguire una regressione usando alcuni dati di esempio in R:

> 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  

Lo capisco TypeMississippie Treatmentchilledsono trattati come booleani: per ogni riga, l'assorbimento iniziale è 36.97e sottraggiamo 12.66se è di tipo Mississippi e 6.86se era freddo. Ho problemi a capire qualcosa del genere:

 > 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  

Cosa significa moltiplicare due fattori insieme in un lm?

Risposte:


17

Per approfondire la risposta di @ John: nelle formule di R, hai alcuni operatori che puoi applicare ai termini: "+" semplicemente li aggiunge, ":" significa che aggiungi un termine (o più termini) che si riferiscono alla loro interazione ( vedi sotto), "*" significa entrambi, ovvero: vengono aggiunti gli "effetti principali" e vengono aggiunti anche i termini di interazione.

Cosa significa questa interazione? Bene, nel caso di variabili continue, è effettivamente aggiunto un termine che è semplicemente il multiplo delle due variabili. Se avresti altezza e peso come predittori e utilizzi out ~ height * weightcome formula, il modello lineare conterrà quindi tre "variabili", vale a dire peso, altezza e il loro prodotto (contiene anche l'interazione ma qui è meno interessante).

Anche se suggerisco diversamente sopra: questo funziona esattamente allo stesso modo per le variabili categoriali, ma ora il 'prodotto' si applica alla (serie di) variabili fittizie per ciascuna variabile categoriale. Supponiamo che la tua altezza e peso siano ora categorici, ognuno con tre categorie (S (centro commerciale), M (edio) e L (arge)). Quindi nei modelli lineari, ognuno di questi è rappresentato da un insieme di due variabili fittizie che sono 0 o 1 (ci sono altri modi di codifica, ma questo è il valore predefinito in R e il più comunemente usato). Diciamo che usiamo S come categoria di riferimento per entrambi, quindi ogni volta abbiamo due manichini height.M e height.L (e simili per il peso).

Quindi ora, il modello out ~ height * weightora contiene i 4 manichini + tutti i prodotti di tutte le combinazioni fittizie (non sto scrivendo esplicitamente i coefficienti qui, sono impliciti):

(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.

Nella riga sopra, '*' ora fa di nuovo riferimento a un prodotto semplice, ma questa volta dei manichini, quindi ogni prodotto stesso è anche 1 (quando tutti i fattori sono 1) o 0 (quando almeno uno non lo è).

In questo caso le 8 "variabili" consentono risultati (medi) diversi in tutte le combinazioni delle due variabili: l'effetto di avere un peso elevato non è più lo stesso per le piccole persone (per loro l'effetto è semplicemente formato dal termine weight.L) in quanto per le persone di grandi dimensioni (qui, l'effetto è weight.L + height.L * weight.L)


7

Per dare seguito alla risposta di John, le formule in lm non usano la notazione aritmetica, stanno usando una notazione simbolica compatta per descrivere i modelli lineari (in particolare la notazione di Wilkinson-Rogers, c'è un buon breve riassunto qui http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

Fondamentalmente, includendo A * B nella formula del modello significa che stai adattando A, B e A: B (l'interazione di A e B). Se il termine di interazione è statisticamente significativo, suggerisce che l'effetto del trattamento è diverso per ciascuno dei tipi.


3

Forse cercare una "formula" in aiuto sarebbe di aiuto. Non stai moltiplicando, stai dicendo che vuoi anche i due effetti principali e la loro interazione.


1
(+1) anche se mi sembra più un commento.
Dmitrij Celov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.