3 votos

Efecto del factor de referencia en la significación de la prueba T para la regresión lineal en R

Actualmente estoy intentando crear un modelo lineal en R con algunas variables categóricas y otras continuas como las siguientes:

lm(Cost ~ factor(Factor1) + factor(Factor2) + Continuousvariable)

Soy consciente de que cuando se utilizan factores (variables categóricas) el valor por defecto en R elige el primer factor alfanumérico para ser el factor de referencia (es decir, coeficiente de 0 en el modelo).

He comprobado que en mi modelo particular, al ordenar los factores de una manera, estos factores tienen valores de significación bastante altos (Pr(>|t|)), sin embargo, si invierto el orden de los factores cambiando el factor de referencia, los valores de significación disminuyen considerablemente.

Vea los ejemplos de resultados más abajo:

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       89.644      7.739  11.584  < 2e-16 ***
factor(Factor1)2                  19.252      8.908   2.161  0.03184 *  
factor(Factor1)3                  48.936      7.714   6.344 1.42e-09 ***
factor(Factor2)2                  13.234     10.323   1.282  0.20132    
factor(Factor2)3                  29.701     10.362   2.866  0.00459 ** 
factor(Factor2)4                  66.499     10.849   6.129 4.49e-09 ***
factor(Factor2)5                 117.743     11.364  10.361  < 2e-16 ***
factor(Factor2)6                 155.489     10.077  15.429  < 2e-16 ***

Ahora se recodifica para invertir las etiquetas de los factores:

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      319.832      6.933  46.135  < 2e-16 ***
factor(Factor1)2                 -29.684      9.208  -3.224 0.001474 ** 
factor(Factor1)3                 -48.936      7.714  -6.344 1.42e-09 ***
factor(Factor2)2                 -37.746     10.369  -3.640 0.000345 ***
factor(Factor2)3                 -88.990      9.725  -9.150  < 2e-16 ***
factor(Factor2)4                -125.788      9.911 -12.692  < 2e-16 ***
factor(Factor2)5                -142.256      9.690 -14.681  < 2e-16 ***
factor(Factor2)6                -155.489     10.077 -15.429  < 2e-16 ***

Mi pregunta es ¿cuál es el razonamiento que hay detrás de esto y hay una regla general a la hora de ordenar los factores para mejorar la importancia de los factores en mi modelo?

Espero que tenga sentido, ¡gracias de antemano!

1voto

mdewey Puntos 579

Centrémonos en el factor 1. Supongamos que tus tres niveles son A, B y C. Si lo ajustas así, el intercepto es A, y los coeficientes de B y C lo comparan con A. Si ahora lo inviertes, los coeficientes comparan B y A con C. Hasta aquí todo bien, ya que esto parecerá diferente pero, sospecho, comprensible. Ahora bien, si añades otro factor (D, E, F, G, H, I) como el que tienes, se vuelve más complejo, ya que la referencia es ahora AD o CI, dependiendo de la forma en que tengas los factores. Sin embargo, tenga en cuenta que para los niveles que está cambiando los coeficientes sólo se invierten en el signo entre los dos modelos. Si ejecuta predict en ambos modelos deberías obtener las mismas predicciones. La moraleja es que la comprobación de la significación de los coeficientes individuales puede estar plagada de problemas.

1voto

Pointy Puntos 141

Como indica el título de su pregunta, al cambiar la forma de nivelar un factor se modifica el nivel de referencia en la regresión (es decir, el nivel con el que se comparan todos los demás niveles).

Imagine un caso sencillo con un factor de tres niveles, con los niveles A, B y C

A <- rep(c(0,1,0), 10)
B <- rep(c(0,0,1), 10)
y <- rnorm(30, 10 + 10*A + 10*B, 2)
x <- factor(rep(c("A","B","C"),10))

Que parece

enter image description here

Quiero saber si existe una relación entre este factor y mi resultado, así que utilizo una regresión lineal con A como nivel de referencia

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.8230 -1.4590 -0.6435  1.5663  4.6133 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   9.9215     0.7175  13.828 9.07e-14 ***
xB            9.9643     1.0147   9.820 2.09e-10 ***
xC            8.5194     1.0147   8.396 5.24e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

A es el nivel de referencia, por lo que la segunda variable (después del intercepto) nos habla de A frente a B, que es significativo, y de A frente a C, también significativo. Esto coincide con lo que podríamos adivinar en el gráfico.

Ahora cambiemos el nivel de referencia a C, y volvamos a ejecutar la regresión.

Call:
lm(formula = y ~ relevel(x, "C"))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.8230 -1.4590 -0.6435  1.5663  4.6133 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)       18.4409     0.7175  25.701  < 2e-16 ***
relevel(x, "C")A  -8.5194     1.0147  -8.396 5.24e-09 ***
relevel(x, "C")B   1.4449     1.0147   1.424    0.166    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Aquí, la segunda variable nos habla de C frente a A, que es significativa, mientras que la tercera nos habla de C frente a B, que no lo es. De nuevo, esto se parece al gráfico.

En ambos casos, los resultados que obtenemos coinciden con lo que podríamos esperar dados los datos, pero vemos un patrón diferente de valores p porque las dos regresiones están haciendo comparaciones diferentes.

En la medida en que hay una regla general, la regla general debería ser que la forma de codificar sus variables (que incluye el nivel de referencia) debería corresponder lo más estrechamente posible a las hipótesis que desea probar con la regresión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X