Valore “nascosto” della variabile categoriale della regressione lineare


10

Questo è solo un esempio che ho riscontrato più volte, quindi non ho dati di esempio. Esecuzione di un modello di regressione lineare in R:

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

x1è una variabile continua. x2è categorico e ha tre valori, ad esempio "Basso", "Medio" e "Alto". Tuttavia, l'output fornito da R sarebbe simile a:

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

Capisco che R introduce una sorta di codifica fittizia su tali fattori ( x2essendo un fattore). Mi sto solo chiedendo, come interpreto il x2valore "Alto"? Ad esempio, che effetto hanno gli "High" x2sulla variabile di risposta nell'esempio fornito qui?

Ho visto esempi di questo altrove (ad esempio qui ) ma non ho trovato una spiegazione che potrei capire.

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
Puoi ottenere una buona risposta qui, ma lo segnalerò per la migrazione a stats.SE, poiché la risposta a questa domanda si riduce essenzialmente alla comprensione di come funziona la regressione lineare.
joran,

Sì, è abbastanza giusto. Sarebbe meglio se lo cancellassi e lo spostassi da solo? O non è necessario?

1
Non dovresti fare nulla. L'ho segnalato, ma potrebbero volerci un'ora o due prima che una mod ci arrivi, essendo una domenica e tutto il resto.
joran,

3
Non fornirò una risposta qui, perché la domanda verrà spostata. Ma puoi provare alcune cose per capire cosa sta succedendo: 1. esegui lm (Y ~ x1 + x2 - 1). "-1" rimuoverà l'intercettazione. 2. utilizzare la pertinel per cambiare la categoria di riferimento di x2.
Manoel Galdino,

Risposte:


14

D: "... come interpretare il valore x2" Alto "? Ad esempio, che effetto ha" Alto "x2s sulla variabile di risposta nell'esempio fornito qui ??

A: Senza dubbio hai notato che non c'è menzione di x2 = "High" nell'output. Al momento x2High è scelto come "caso base". Questo perché hai offerto una variabile fattore con la codifica predefinita per i livelli nonostante un ordine che sarebbe stato L / M / H più naturale per la mente umana. Ma "H" essendo lessicamente prima di "L" e "M" nell'alfabeto, è stato scelto da R come caso base.

Poiché "x2" non è stato ordinato, ciascuno dei contrasti riportati era relativo a x2 = "Alto" e quindi x2 == "Basso" è stato stimato a -0,78 rispetto a x2 = "Alto". Al momento, l'intercetta è il valore stimato di "Y" quando x2 = "Alto" e x1 = 0. Probabilmente si desidera rieseguire la regressione dopo aver modificato i livelli di ordinamento (ma non aver effettuato il fattore ordinato).

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

Quindi la stima "Media" e "Alta" sarà più in linea con ciò che ti aspetti.

Modifica: esistono disposizioni di codifica alternative (o disposizioni più precise della matrice del modello). La scelta predefinita per i contrasti in R è "contrasti di trattamento" che specifica un livello di fattore (o una particolare combinazione di livelli di fattore) come livello di riferimento e riporta differenze medie stimate per altri livelli o combinazioni. Tuttavia, è possibile impostare il livello di riferimento come media complessiva forzando l'intercetta su 0 (non consigliato) o utilizzando una delle altre opzioni di contrasto:

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

Puoi scegliere diversi contrasti per diversi fattori, anche se farlo sembrerebbe imporre un ulteriore onere interpretativo. S-Plus utilizza i contrasti di Helmert per impostazione predefinita e SAS utilizza i contrasti di trattamento, ma sceglie l'ultimo livello di fattore anziché il primo come livello di riferimento.


Questo ha senso. Suppongo che ovviamente x2non possa avere "nessun valore" poiché deve essere uno di "Alto", "Medio" o "Basso". Grazie per la tua risposta.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.