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.

r  regression  categorical-data  regression-coefficients  categorical-encoding  machine-learning  random-forest  anova  spss  r  self-study  bootstrap  monte-carlo  r  multiple-regression  partitioning  neural-networks  normalization  machine-learning  svm  kernel-trick  self-study  survival  cox-model  repeated-measures  survey  likert  correlation  variance  sampling  meta-analysis  anova  independence  sample  assumptions  bayesian  covariance  r  regression  time-series  mathematical-statistics  graphical-model  machine-learning  linear-model  kernel-trick  linear-algebra  self-study  moments  function  correlation  spss  probability  confidence-interval  sampling  mean  population  r  generalized-linear-model  prediction  offset  data-visualization  clustering  sas  cart  binning  sas  logistic  causality  regression  self-study  standard-error  r  distributions  r  regression  time-series  multiple-regression  python  chi-squared  independence  sample  clustering  data-mining  rapidminer  probability  stochastic-processes  clustering  binary-data  dimensionality-reduction  svd  correspondence-analysis  data-visualization  excel  c#  hypothesis-testing  econometrics  survey  rating  composite  regression  least-squares  mcmc  markov-process  kullback-leibler  convergence  predictive-models  r  regression  anova  confidence-interval  survival  cox-model  hazard  normal-distribution  autoregressive  mixed-model  r  mixed-model  sas  hypothesis-testing  mediation  interaction 

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.


Isso faz sentido. Suponho que obviamente x2não poderia ter "nenhum valor", pois deve ser "Alto", "Médio" ou "Baixo". Obrigado pela sua resposta.
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.