Por que algumas estimativas de regressão diferem por uma mudança de sinal, mas outras não, quando eu mudo o nível de referência?

8

Suponha que eu tenha um resultado contínuo ye dois fatores preditores fatoriais, cada um com dois níveis. Um dos meus preditores categóricos,, drugpode ter dois níveis ("A" ou "B"), o outro é smokeYes. Quando executo um modelo de regressão, posso escolher a linha de base ou o nível de referência drugcomo "A", como fiz em model1:

set.seed(123)
y<-rnorm(100, 100, 10)
drug.ab<-factor(sample(c("A", "B"), 100, T), levels=c("A", "B"))
drug.ba<-factor(drug.ab, levels=c("B", "A"))
smoke<-factor(sample(c("Yes", "No"), 100, T), levels=c("No", "Yes"))

#model1:
coef(summary(lm(y~drug.ab*smoke)))
                     Estimate Std. Error    t value     Pr(>|t|)
(Intercept)       100.7484158   2.065091 48.7864379 1.465848e-69
drug.abB            0.9030541   2.796146  0.3229639 7.474250e-01
smokeYes           -0.8693598   2.632484 -0.3302431 7.419359e-01
drug.abB:smokeYes   0.8709116   3.746684  0.2324487 8.166844e-01

Ou posso definir a linha de base como "B", como fiz em model2:

#model2:
coef(summary(lm(y~drug.ba*smoke)))
                       Estimate Std. Error       t value     Pr(>|t|)
(Intercept)       101.651469922   1.885161 53.9218978856 1.377147e-73
drug.baA           -0.903054145   2.796146 -0.3229638818 7.474250e-01
smokeYes            0.001551843   2.666021  0.0005820821 9.995368e-01
drug.baA:smokeYes  -0.870911601   3.746684 -0.2324486531 8.166844e-01

Minha pergunta é por que a estimativa para smokeYesdifere entre model1e model2? Por que não difere por uma mudança de sinal drug.baAe pelo termo de interação?

David Z
fonte
3
Procure uma boa explicação sobre o contraste do tratamento. Em resumo, se você calcular a previsão para droga B e fumaça Sim: (mod1) 100,75 + 0,90 - 0,87 + 0,87 = 101,65 | (mod2) 101,65 + 0,00 = 101,65 #
Roland #
Eu pensei que era indiscutivelmente on-tema para então quando eu vi a questão duplicado lá, uma vez que existe uma linha de R muito simples de código que calcula todos os meios do grupo: tapply( y, interaction( drug.ab, smoke) ,mean). Uma explicação mais extensa pode envolver demonstrar a diferença entre contrastes de tratamento e contrastes de soma.
DWin
@ Dwin, mesmo com as duas respostas já postadas, acho que certamente há espaço para outra resposta que aborda precisamente questões de contraste. Espero que alguém poste uma resposta adotando essa abordagem.
Silverfish

Respostas:

8

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+5xy^=11+7x

Gráfico de dispersão para dois grupos

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 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+5xEu-1bEu+2xEubEu

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+7xEu+1umaEu-2xEuumaEu

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.9030541bEu-0.8693598xEu+0.8709116xEubEu

Seu segundo modelo ajustado com a linha de base "B" é:

y^Eu=101.651469922-0.903054145umaEu+0,001551843xEu-0.870911601xEuumaEu

bEu=1-umaEu

y^Eu=100.7484158+0.9030541(1-umaEu)-0.8693598xEu+0.8709116xEu(1-umaEu)

Isso simplifica para:

y^Eu=(100.7484158+0.9030541)-0.9030541umaEu+(-0.8693598+0.8709116)xEu-0.8709116xEuumaEu

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.8693598xEuy^Eu=101.651469922+0,001551843xEubEu=1umaEu=1

x=0 0x=1x=0 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")
Silverfish
fonte
Sim, ótima explicação, então vou votar a favor!
JonB
x
3

Isso tem a ver com a forma como a interceptação é definida. No primeiro exemplo, a interceptação é definida como aqueles que não fumam e que têm a droga A. Os fumantes, que também têm a droga A, terão um valor de 100,75 - 0,87 = 99,9 enquanto os fumantes que têm a droga B terão uma valor de 100,75 + 0,90 - 0,87 + 0,87 = 101,65.

No segundo exemplo, a interceptação é definida como aqueles que não fumam e usam a droga B. Os fumantes com a droga B terão um valor de 101,65 + 0,001 = 101,65, e os fumantes com a droga A terão um valor de 100,65 - 0,90 + 0,001-0,87 = 99,9.

Então, tudo isso aumenta, é apenas uma questão de como a interceptação é definida, ou seja, o nível em que todos os fatores são definidos para a categoria de referência.

JonB
fonte