Diversi modi per scrivere termini di interazione in lm?


42

Ho una domanda su quale sia il modo migliore per specificare un'interazione in un modello di regressione. Considera i seguenti dati:

d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
     class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L, 
     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
     1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
    .Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"), 
     y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
     15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
     25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
     31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
     41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
     49.247505535468)), .Names = c("r","s", "rs", "y"), 
     row.names = c(NA, -20L), class = "data.frame")

Due modi equivalenti per specificare il modello con le interazioni sono:

lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

La mia domanda è se potrei specificare l'interazione considerando una nuova variabile (rs) con gli stessi livelli di interazione:

lm2 <- lm(y ~ r + s + rs, data=d)

Quali vantaggi / svantaggi hanno questo approccio? E perché i risultati di questi due approcci sono diversi?

summary(lm1)

lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          3.82     2.07  
rr2:ss2      4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87


summary(lm2)

lm(formula = y ~ r + s + rs, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87

Vuoi dire che rsè definito come interaction(r, s)?
chl

Forse potresti mostrarci il codice che ha creato rsr1s2?
jbowman,

Il fattore rs è stato definito manualmente (semplicemente incolla i fattori r e s). Vedi il set di dati.
Manuel Ramón,

1
Immagino sia correlato il modo in cui le variabili sono correlate, vedi attr(terms(lm1),"factors")eattr(terms(lm2),"factors")
Galled,

Risposte:


8

I risultati sono diversi perché il modo in cui lm imposta il modello con l'interazione è diverso da come è impostato quando lo configuri tu stesso. Se guardi il sd residuo, è lo stesso, che indica (non definitivamente) che i modelli sottostanti sono gli stessi, espressi in modo diverso (agli interni).

Se definisci la tua interazione come paste(d$s, d$r)invece del paste(d$r, d$s)tuo parametro, le stime cambieranno di nuovo, in modi interessanti.

Si noti come nel riepilogo del modello per lm1 la stima del coefficiente per ss2 sia 4,94 inferiore rispetto al riepilogo per lm2, con il coefficiente per rr2: ss2 pari a 4,95 (se si stampa con 3 cifre decimali, la differenza scompare). Questa è un'altra indicazione che si è verificato un riarrangiamento interno dei termini.

Non riesco a pensare a nessun vantaggio nel farlo da solo, ma potrebbe essercene uno con modelli più complessi in cui non si desidera un termine di interazione completo, ma solo alcuni dei termini nella "croce" tra due o più fattori.


L'unico vantaggio che vedo per definire le interazioni come in lm2 è che è facile eseguire più confronti per il termine di interazione. Ciò che non capisco del tutto è il motivo per cui si ottengono risultati diversi se, in linea di principio, sembra che i 2 approcci siano gli stessi.
Manuel Ramón,

5
Gli approcci sono gli stessi, ma le esatte parametrizzazioni del modello stimato sono diverse, quindi i risultati appaiono diversi. Considera un modello con due regressori binari e un'interazione. Hai quattro categorie, ma puoi scrivere il modello in diversi modi, ad esempio, lascia che 1 sia un termine costante, con variabili o o altri. Le variabili sono solo combinazioni lineari tra loro. Le stime dei coefficienti saranno diverse, ma il modello è davvero lo stesso.x1,x2(1,x1,x2,x1x2)(x1,x2,x1x2,(1x1)(1x2)
jbowman,

Pertanto, sebbene diversi, entrambi gli approcci sono corretti, non è vero?
Manuel Ramón,

Destra. Matematicamente le matrici di variabili indipendenti nelle varie formulazioni sono solo trasformazioni lineari tra loro, quindi le stime dei parametri di un modello possono essere calcolate dalle stime dei parametri di un altro se si sa come sono stati effettivamente impostati i due modelli.
jbowman,

9

È possibile comprendere meglio questo comportamento se si osservano le matrici del modello.

 model.matrix(lm1 <- lm(y ~ r*s, data=d))
 model.matrix(lm2 <- lm(y ~ r + s + rs, data=d))

Quando guardi queste matrici, puoi confrontare le costellazioni di s2=1con le altre variabili (cioè quando s2=1, quali valori prendono le altre variabili?). Vedrai che queste costellazioni differiscono leggermente, il che significa che la categoria di base è diversa. Tutto il resto è essenzialmente lo stesso. In particolare, nota che nel tuo lm1, il coefficiente on è ss2uguale ai coefficienti ss2+rsr1s2di lm2, cioè 3,82 = 8,76-4,95, a corto di errori di arrotondamento.

Ad esempio, l'esecuzione del codice seguente fornisce esattamente lo stesso output dell'utilizzo dell'impostazione automatica di R:

  d$rs <- relevel(d$rs, "r1s1")
  summary(lm1 <- lm(y~ factor(r) + factor(s) + factor(rs), data=d))

Ciò fornisce anche una risposta rapida alla tua domanda: l'unica vera ragione per cambiare il modo in cui sono impostati i fattori è fornire chiarezza espositiva. Considera il seguente esempio: Supponi di regredire il salario su un manichino per il completamento delle superiori interagendo con un fattore che indica se appartieni a una minoranza.

Cioè:wage=α+β edu+γ eduminority+ϵ

Se detto fattore di minoranza assume valore 1 se si appartiene a una minoranza, il coefficiente può essere interpretato come una differenza salariale per gli individui di minoranza che hanno completato il liceo. Se questo è il tuo coefficiente di interesse, allora dovresti codificarlo come tale. Altrimenti, supponiamo che il fattore di minoranza abbia il valore di 1 se non appartieni a una minoranza. Quindi, per vedere quanto più individui non appartenenti a minoranze guadagnano quando completano il liceo, dovresti calcolare " " manualmente . Si noti tuttavia che tutte le informazioni sono contenute nelle stime e che i risultati sostanziali non cambiano impostando i fattori in modo diverso!ββ+γ

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.