Prévia do material em texto
Fatores na regressão linear Interpretação dos coeficientes das variáveis como fatores No caso de preditores quantitativos, estamos mais ou menos confortáveis com a interpretação do coeficiente do modelo linear como uma "inclinação" ou um "aumento unitário no resultado por unidade de aumento na covariável". Esta não é a interpretação certa para as variáveis de fatores. Em particular, a noção de inclinação ou mudança de unidade já não faz sentido quando se fala de uma variável categórica. Por exemplo, o que significa "aumento de unidade em especialidade" ao estudar o efeito da faculdade em ganancias futuras? Para entender o que os coeficientes realmente significam, vejamos dados do nascimento e tentemos ajustar o modelo com a variável resposta peso ao nascer e variáveis independentes a raça da mãe e a idade da mãe. # Ajuste do modelo de regressao birthwt.lm <- lm(birthwt.grams ~ race + mother.age, data = birthwt) # Regression model summary summary(birthwt.lm) Observe que existem dois coeficientes estimados para a variável de raca (raceother e racewhite). O que está acontecendo aqui? Quando você coloca uma variável de fatores em uma regressão, você está permitindo uma interceptação diferente em todos os níveis do fator. Nesse exemplo, você está dizendo que deseja modelar birthwt.grams como Essencialmente, você está dizendo que seus dados são divididos em 3 grupos raciais e você deseja modelar seus dados com a mesma inclinação que rege como o peso do nascimento muda com a idade da mãe, mas interceitos potencialmente diferentes. Veja um grafico sobre o que está acontecendo. # Calcula intercetos para específicas racas intercepts <- c(coef(birthwt.lm)["(Intercept)"], coef(birthwt.lm)["(Intercept)"] + coef(birthwt.lm)["raceother"], coef(birthwt.lm)["(Intercept)"] + coef(birthwt.lm) ["racewhite"]) lines.df <- data.frame(intercepts = intercepts, slopes = rep(coef(birthwt.lm) ["mother.age"], 3), race = levels(birthwt$race)) qplot(x = mother.age, y = birthwt.grams, color = race, data = birthwt) + geom_abline(aes(intercept = intercepts, slope = slopes, color = race), data = lines.df) Como interpretamos os 2 coeficientes da raça? Para variáveis categóricas, a interpretação é relativa à linha de base dada. A linha de base é apenas o nível que vem primeiro (aqui, "raça preta"). Por exemplo, a estimativa de “raceother” significa que o intercepto estimado é 80,2. Dito em outra forma, outras raças tem intercepto estimado de 80,2 a mais em comparação com as mães negras. Da mesma forma, o intercepto estimado é 365,7 maior para as mães brancas do que as mães negras. Outra maneira de interpretar é: entre mães da mesma idade, bebês de mães brancas nascem pesando em média 365.7g a mais do que bebês de mães negras. Como você já notou, não existe um coeficiente denominado "raceblack" no modelo estimado. Isso ocorre porque esse coeficiente é absorvido no termo geral (Intercepção). Olhemos debaixo do capô. Usando a função model.matrix () em nosso objeto de modelo linear, podemos obter a matriz de dados que está subjacente à nossa regressão. Aqui estão as primeiras 20 linhas. Usando a função model.matrix() em nosso objeto de modelo linear, podemos obter a matriz de dados que está subjacente à nossa regressão. Aqui estão as primeiras 20 linhas. Embora pensemos na regressão birthwt.grams ~ race + mother.age como sendo uma regressão em dois variáveis (e uma intercepção), é realmente uma regressão em 3 variáveis (e uma intercepção). Isso ocorre porque o a variável race é representada como duas variáveis simuladas: uma para a raça== outras(raceother), e outra para raça == branca(racewhite). Por que não há uma coluna para representar o indicador de raça == preto? Isso nos leva ao nosso problema de colinearidade. Por definição, temos Isso ocorre porque, para cada observação, uma e somente uma das variáveis dummy da raça(raceother) será igual a 1. Assim, o grupo de 4 variáveis {raceblack, raceother, racewhite, (Intercept)} é perfeitamente colinear, e não podemos incluir os 4 no modelo. O comportamento padrão em R é remover o dummy correspondente ao primeiro nível do fator (aqui, raceblack) e manter o resto. Termos de interação Voltemos ao gráfico de linha de regressão que geramos acima. qplot(x = mother.age, y = birthwt.grams, color = race, data = birthwt) + geom_abline(aes(intercept = intercepts, slope = slopes, color = race), data = lines.df) Compare o gráfico acima com o seguinte. qplot(x = mother.age, y = birthwt.grams, color = race, data = birthwt) + stat_smooth(method = "lm", se = FALSE, fullrange = TRUE) Neste caso, não temos apenas interceptos específicos da raça, mas também tangentes específicas para raça. O gráfico acima corresponde ao modelo: Para especificar este modelo de interação em R, usamos a seguinte sintaxe birthwt.lm.interact <- lm(birthwt.grams ~ race * mother.age, data = birthwt) summary(birthwt.lm.interact) Agora temos novos termos que aparecem. Termos como racewhite: mother.age são desvios da inclinação da linha de base (o coeficiente de mother.age no modelo) da mesma maneira que os termos como racewhite são desvios da intercepção de linha de base. Este modelo diz que: Em média, entre as mães negras, cada ano de idade adicional está associado a uma diminuição de 41,2 g no peso ao nascer do bebê. Para obter a inclinação para as mães brancas, precisamos adicionar o termo de interação à linha de base. slope(racewhite) = slope(raceblack) + racewhite:mother.age = mother.age + racewhite:mother.age = 21.4. Essa estimativa de inclinação é positiva, o que concorda com o gráfico de regressão acima.