Variável categórica de regressão linear R valor "oculto"

10

Este é apenas um exemplo que encontrei várias vezes, portanto não tenho dados de amostra. Executando um modelo de regressão linear em R:

a.lm = lm(Y ~ x1 + x2)

x1é uma variável contínua. x2é categórico e possui três valores, por exemplo, "Baixo", "Médio" e "Alto". No entanto, a saída fornecida por R seria algo como:

summary(a.lm)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.521     0.20       1.446   0.19        
x1            -0.61     0.11       1.451   0.17
x2Low         -0.78     0.22       -2.34   0.005
x2Medium      -0.56     0.45       -2.34   0.005

Entendo que R introduz algum tipo de codificação fictícia em tais fatores ( x2sendo um fator). Estou apenas pensando, como interpretar o x2valor "Alto"? Por exemplo, que efeito os "Altos" x2têm sobre a variável de resposta no exemplo fornecido aqui?

Já vi exemplos disso em outros lugares (por exemplo, aqui ), mas não encontrei uma explicação que eu pudesse entender.

ttnphns
fonte
3
Você pode obter uma boa resposta aqui, mas vou sinalizar isso para a migração para stats.SE, pois a resposta a essa pergunta se resume basicamente a entender como a regressão linear funciona.
joran
Sim, isso é justo o suficiente. Seria melhor se eu a excluísse e a movesse? Ou isso é desnecessário?
11
Você não precisa fazer nada. Eu sinalizei, mas pode levar uma ou duas horas antes que um mod chegue, sendo domingo e tudo.
joran
3
Não fornecerei uma resposta aqui, porque a pergunta será movida. Mas você pode tentar algumas coisas para entender o que está acontecendo: 1. execute lm (Y ~ x1 + x2-1). o "-1" removerá a interceptação. 2. use relevel para alterar a categoria de referência de x2.
Manoel Galdino

Respostas:

14

P: "... como interpreto o valor x2" Alto "? Por exemplo, que efeito os x2s" altos "têm sobre a variável de resposta no exemplo dado aqui?

R: Sem dúvida, você notou que não há menção de x2 = "Alto" na saída. No momento, x2High é escolhido como o "caso base". Isso porque você ofereceu uma variável de fator com a codificação padrão para os níveis, apesar de uma ordem que teria sido L / M / H mais naturalmente para a mente humana. Mas "H", sendo lexicamente antes de "L" e "M" no alfabeto, foi escolhido por R como o caso base.

Como 'x2' não foi ordenado, cada um dos contrastes relatados foi relativo a x2 = "Alto" e, portanto, x2 == "Baixo" foi estimado em -0,78 em relação a x2 = "Alto". No momento, o Intercepto é o valor estimado de "Y" quando x2 = "Alto" e x1 = 0. Você provavelmente deseja executar novamente sua regressão depois de alterar a ordem dos níveis (mas não fazendo o fator ordenado).

x2a = factor(x2, levels=c("Low", "Medium", "High"))

Em seguida, suas estimativas "Média" e "Alta" estarão mais alinhadas com o que você espera.

Editar: existem arranjos de codificação alternativos (ou arranjos mais precisos da matriz do modelo.) A opção padrão para contrastes em R é "contrastes de tratamento" que especifica um nível de fator (ou uma combinação específica de níveis de fator) como o nível de referência e os relatórios diferenças médias estimadas para outros níveis ou combinações. No entanto, você pode ter o nível de referência como a média geral forçando o Intercept a ser 0 (não recomendado) ou usando uma das outras opções de contraste:

?contrasts
?C   # which also means you should _not_ use either "c" or "C" as variable names.

Você pode escolher diferentes contrastes para diferentes fatores, embora isso pareça impor uma carga interpretativa adicional. O S-Plus usa os contrastes de Helmert por padrão, e o SAS usa os contrastes de tratamento, mas escolhe o último nível de fator em vez do primeiro como o nível de referência.

DWin
fonte
Isso faz sentido. Suponho que obviamente x2não poderia ter "nenhum valor", pois deve ser "Alto", "Médio" ou "Baixo". Obrigado pela sua resposta.