Deixe-me elaborar um exemplo simples para você explicar o conceito, para que possamos compará-lo com seus coeficientes.
Observe que, incluindo a variável dummy "A / B" e o termo de interação, você efetivamente concede ao seu modelo a flexibilidade de ajustar uma interceptação diferente (usando o dummy) e a inclinação (usando a interação) nos dados "A" e os dados "B". A seguir, realmente não importa se o outro preditor é uma variável contínua ou, como no seu caso, outra variável dummy. Se eu falar em termos de "interceptação" e "inclinação", isso pode ser interpretado como "nível quando o manequim é zero" e "mudança de nível quando o manequim é alterado de 0 para 1 ", se você preferir.x0 01
Suponhamos que os OLS modelo montados nos dados de "A" por si só é y = 12 + 5 x e sobre os dados "B" por si só é y = 11 + 7 x . Os dados podem ficar assim:y^= 12 + 5 xy^= 11 + 7 x
Agora, suponha que tomemos "A" como nosso nível de referência e use uma variável dummy para que b = 1 para observações no Grupo B, mas b = 0 no Grupo A. O modelo ajustado em todo o conjunto de dados ébb = 1b = 0
y^Eu= β^0 0+ β^1xEu+ β^2bEu+ β^3xEubEu
Para as observações do Grupo A que tem y i = β 0 + β 1 x i e que pode minimizar a sua soma dos residuais quadrados ajustando β 0 = 12 e β 1 = 5 . Para os dados de grupo B, y i = ( β 0 + β 2 ) + ( β 1 + β 3 ) x iy^Eu= β^0 0+ β^1xEuβ^0 0= 12β^1= 5y^Eu= ( β^0 0+ β^2) + ( β^1+ β^3) xEue que pode minimizar a sua soma dos residuais quadrados tomando β 0 + β 2 = 11 e β 1 + β 3 = 7 . É claro que podemos minimizar a soma dos resíduos quadrados na regressão geral, minimizando as somas para ambos os grupos, e que isso pode ser conseguido através da criação β 0 = 12 e p 1 = 5 (do Grupo A) e β 2 = - 1 e ββ^0 0+ β^2= 11β^1+ β^3= 7β^0 0= 12β^1= 5β^2= - 1 (já que os dados "B" devem ter um intercepto um mais baixo e uma inclinação dois mais alto). Observe como a presença de um termo de interação foi necessária para termos flexibilidade suficiente para minimizar a soma dos resíduos quadráticos deambos os grupos ao mesmo tempo. Meu modelo ajustado será:β^3= 2
y^Eu= 12 + 5 xEu- 1 bEu+ 2 xEubEu
Alterne tudo isso para que "B" seja o nível de referência e seja uma variável fictícia que codifica para o Grupo A. Você pode ver que agora devo ajustar o modelouma
y^Eu= 11 + 7 xEu+ 1 aEu- 2 xEuumaEu
117
Vamos comparar isso com a sua saída. Em uma notação semelhante à anterior, seu primeiro modelo ajustado com a linha de base "A" é:
y^Eu= 100,7484158 + 0,9030541 bEu- 0,8693598 xEu+ 0,8709116 xEubEu
Seu segundo modelo ajustado com a linha de base "B" é:
y^Eu= 101.651469922 - 0.903054145 aEu+ 0,001551843 xEu- 0,870911601 xEuumaEu
bEu= 1 - aEu
y^Eu= 100,7484158 + 0,9030541 ( 1 - aEu) - 0,8693598 xEu+ 0,8709116 xEu( 1 - aEu)
Isso simplifica para:
y^Eu= ( 100.7484158 + 0.9030541 ) - 0.9030541 aEu+ ( - 0,8693598 + 0,8709116 ) xEu- 0,8709116 xEuumaEu
Uma rápida aritmética confirma que é o mesmo que o segundo modelo ajustado; além disso, agora deve ficar claro quais coeficientes trocaram de sinal e quais foram simplesmente ajustados à outra linha de base!
y^Eu= 100,7484158 - 0,8693598 xEuy^Eu= 101,651469922 + 0,001551843 xEubEu= 1umaEu= 1
x = 0x = 1x = 0x = 1xxy^
y^
#Make data set with desired conditional means
data.df <- data.frame(
x = c(0,0,0, 1,1,1, 0,0,0, 1,1,1),
b = c(0,0,0, 0,0,0, 1,1,1, 1,1,1),
y = c(11.8,12,12.2, 16.8,17,17.2, 10.8,11,11.2, 17.8,18,18.2)
)
data.df$a <- 1 - data.df$b
baselineA.lm <- lm(y ~ x * b, data.df)
summary(baselineA.lm) #check this matches y = 12 + 5x - 1b + 2xb
baselineB.lm <- lm(y ~ x * a, data.df)
summary(baselineB.lm) #check this matches y = 11 + 7x + 1a - 2xa
fitted(baselineA.lm)
fitted(baselineB.lm) #check the two models give the same fitted values for y...
with(data.df, tapply(y, interaction(x, b), mean)) #...which are the group sample means
colorSet <- c("red", "blue")
symbolSet <- c(19,17)
with(data.df, plot(x, y, yaxt="n", col=colorSet[b+1], pch=symbolSet[b+1],
main="Response y against other predictor x",
panel.first = {
axis(2, at=10:20)
abline(h = 10:20, col="gray70")
abline(v = 0:1, col="gray70")
}))
abline(lm(y ~ x, data.df[data.df$b==0,]), col=colorSet[1])
abline(lm(y ~ x, data.df[data.df$b==1,]), col=colorSet[2])
legend(0.1, 17, c("Group A", "Group B"), col = colorSet,
pch = symbolSet, bg = "gray95")