Diferentes maneiras de escrever termos de interação no lm?


42

Eu tenho uma pergunta sobre qual é a melhor maneira de especificar uma interação em um modelo de regressão. Considere os seguintes dados:

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")

Duas maneiras equivalentes de especificar o modelo com interações são:

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

Minha pergunta é se eu poderia especificar a interação considerando uma nova variável (rs) com os mesmos níveis de interação:

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

Que vantagens / desvantagens dessa abordagem? E por que os resultados dessas duas abordagens são diferentes?

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

Você quer dizer que rsé definido como interaction(r, s)?
chl

Talvez você possa nos mostrar o código que criou o rsr1s2?
jbowman

O fator rs foi definido manualmente (basta colar os fatores re). Veja o conjunto de dados.
Manuel Ramón

1
Eu acho que está relacionado a maneira como as variáveis são jurídicos atinentes ver attr(terms(lm1),"factors")eattr(terms(lm2),"factors")
galhas

Respostas:


8

Os resultados são diferentes porque a maneira como o lm configura o modelo com a interação é diferente de como é configurado quando você o configura. Se você observar o sd residual, é o mesmo, o que indica (não definitivamente) que os modelos subjacentes são os mesmos, apenas expressos (para os lm internos) de maneira diferente.

Se você definir sua interação como, em paste(d$s, d$r)vez de paste(d$r, d$s)suas estimativas, os parâmetros mudarão novamente, de maneiras interessantes.

Observe como no resumo do modelo para lm1 a estimativa do coeficiente para ss2 é 4,94 menor que no resumo para lm2, com o coeficiente para rr2: ss2 sendo 4,95 (se você imprimir com 3 casas decimais, a diferença desaparecerá). Essa é outra indicação de que ocorreu um rearranjo interno dos termos.

Não consigo pensar em nenhuma vantagem em fazer isso sozinho, mas pode haver um com modelos mais complexos em que você não deseja um termo de interação completo, mas apenas alguns dos termos na "cruzada" entre dois ou mais fatores.


A única vantagem que vejo para definir as interações como em lm2 é que é fácil executar várias comparações para o termo de interação. O que não entendo direito é por que resultados diferentes são obtidos se, em princípio, parece que as duas abordagens são iguais.
Manuel Ramón

5
x1,x2(1,x1,x2,x1x2)(x1,x2,x1x2,(1x1)(1x2)

Portanto, embora diferentes, ambas as abordagens estão corretas, não é?
Manuel Ramón

Direita. Matematicamente, as matrizes de variáveis ​​independentes nas várias formulações são apenas transformações lineares umas das outras, de modo que as estimativas de parâmetros de um modelo podem ser calculadas a partir das estimativas de parâmetros de outro, se soubermos como os dois modelos foram realmente configurados.
jbowman

9

Você pode entender melhor esse comportamento se observar as matrizes do modelo.

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

Quando você olha para essas matrizes, pode comparar as constelações de s2=1com as outras variáveis ​​(ou seja s2=1, quando , quais valores as outras variáveis ​​levam?). Você verá que essas constelações diferem ligeiramente, o que significa apenas que a categoria base é diferente. Tudo o resto é essencialmente o mesmo. Em particular, observe que no seu caso lm1, o coeficiente em ss2é igual aos coeficientes ss2+rsr1s2de lm2, isto é, 3,82 = 8,76-4,95, com exceção dos erros de arredondamento.

Por exemplo, a execução do código a seguir fornece exatamente a mesma saída que a configuração automática de R:

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

Isso também fornece uma resposta rápida à sua pergunta: o único motivo realmente para mudar a maneira como os fatores são configurados é fornecer clareza expositiva. Considere o seguinte exemplo: suponha que você regride o salário de um manequim para concluir o ensino médio interagindo com um fator que indica se você pertence a uma minoria.

wage=α+β edu+γ eduminority+ϵ

ββ+γ

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.