3 votos

¿Por qué los modelos basados en variables codificadas (-1,1, etc.) y no codificadas (tal como son) son muy diferentes? ¿Qué debo utilizar para las publicaciones?

Estoy haciendo experimentos factoriales en R . Me he dado cuenta de que cuando utilizo mis variables tal y como están frente a codificarlas en -1,1, son muy diferentes. Aquí está mi código de muestra. Este conjunto de datos está adaptado de la Experimentación para mejorar curso online en Coursera.

#Example 1: Non-coded, as they are
runner1 <- data.frame(
  A = c(5, 10, 5, 10, 5, 10, 5, 10), 
  B = c(4, 4, 9, 9, 4, 4, 9, 9), 
  C = c(400, 400, 400, 400, 500, 500, 500, 500), 
  Y= c(39, 35, 40, 41, 40, 38, 41, 42))
runner1
runner1lm <- lm(runner1$Y ~ runner1$A*runner1$B*runner1$C)
runner1lm

#Example 2:Coded (-1, 1)

runner2 <- data.frame(
  A = c(-1, 1, -1, 1, -1, 1, -1, 1), 
  B = c(-1, -1, 1, 1, -1, -1, 1, 1),
  C = c(-1, -1, -1, -1, 1, 1, 1, 1), 
  Y= c(39, 35, 40, 41, 40, 38, 41, 42))
runner2
runner2lm <- lm(runner2$Y ~ runner2$A*runner2$B*runner2$C)
runner2lm

¿Qué debo utilizar? ¿El codificado o el no codificado? Además, ¿cómo puedo transformar todo mi conjunto de datos de codificado a no codificado, si es que lo hago? ¿Necesito un paquete para ello? Estaba pensando en introducir los parámetros de codificación (por ejemplo, los 5 de la columna A serán -1, los 10 serán 1, y así sucesivamente) y luego dejar que R y, ¡bum!, tengo un marco de datos transformado lleno de variables codificadas (excepto la variable dependiente Y, por supuesto). Básicamente estoy preguntando si hay algún código o paquete que pueda convertir mágicamente al corredor1 en el corredor2.

8voto

EdM Puntos 5716

En el primer modelo, tienes una diferencia de 5 unidades entre los dos tipos de casos para los predictores A y B, y 100 unidades para el predictor C. En el segundo modelo, acabas de escalar todos los predictores para tener una diferencia de 2 unidades entre los tipos de casos.

Los modelos no son fundamentalmente diferentes. Sólo utilizan diferentes escalas para las variables de predicción. Es como utilizar la distancia como predictor, pero con un modelo que mide la distancia en milímetros y otro en kilómetros. Las escalas y los coeficientes relativos están relacionados de forma inversa.

Si sus variables predictoras son fundamentalmente continuas, generalmente malas prácticas para convertirlos en categorías como parece que estás haciendo en tu pregunta. Eso también elimina la interpretación natural de los coeficientes de regresión como un cambio en el resultado por unidad de cambio de un valor predictor en su escala original. Desde esa perspectiva, no veo la necesidad de transformar los datos de la manera necesaria para producir un modelo como runner2lm .

7voto

jldugger Puntos 7490

Los modelos son idénticos.

Una forma de ver esto (aunque no es una prueba ) es comparar sus predicciones y observar que son iguales.

rbind(`First model`=predict(runner1lm), `Second model`=predict(runner2lm))
              1  2  3  4  5  6  7  8
First model  39 35 40 41 40 38 41 42
Second model 39 35 40 41 40 38 41 42

Por supuesto, el coeficientes difieren porque has utilizado diferentes métodos para expresar los datos con números.

Sin embargo, es de esperar que las salidas sean interconvertibles. Se puede averiguar cómo escribiendo las predicciones del modelo como fórmulas. Sea $A,B,C$ sea el $\pm 1$ códigos utilizados en el segundo modelo. En este modelo, la ampliación de las interacciones da

$$y = \beta_0 + \beta_A A + \beta_B B + \beta_C C + \beta_{AB} A\times B + \beta_{AC}A\times C + \beta_{BC} B\times C + \beta_{ABC}A\times B \times C.$$

Hay que estimar ocho coeficientes. Sus estimaciones, en el orden indicado, son

$$(\beta_0, \beta_A, \ldots, \beta_{ABC}) = \left(39\frac{1}{2}, -\frac{1}{2}, 1\frac{1}{2}, \frac{3}{4}, 1, \frac{1}{4}, -\frac{1}{4}, -\frac{1}{4}\right),$$

como se vio cuando se imprimió runner2lm al final de su código.

Por ejemplo, en el primer registro donde $(A,B,C)=(-1,-1,-1),$ la predicción es

$$y = 39\frac{1}{2} -\frac{1}{2}(-1) + \cdots + -\frac{1}{4}(-1)(-1)(-1) = 39.$$

El primer modelo cambia la forma en que $A,$ $B,$ y $C$ se expresan. Llamemos a estas variables $a,b,$ y $c.$ Las relaciones son

$$\left\{\begin{aligned} a &= \frac{15}{2} + \frac{5}{2}A;&\quad A &= (2a - 15)/5\\ b &= \frac{13}{2} + \frac{5}{2}B;&\quad B &= (2b - 13)/5\\ c &= 450 + 50C &\quad C &= (c - 450)/50. \end{aligned}\right.$$

Si se introducen estas expresiones para $A,B,C$ en el modelo da

$$y = \beta_0 + \beta_A(2a-15)/5 + \cdots + \beta_{ABC}\left((2a-15)/5\right)\left((2b-13)/5\right)\left((c-450)/50\right).$$

Después de expandir todos estos productos y hacer bastante álgebra, se encuentran los coeficientes correspondientes para el primer modelo. Por ejemplo, el coeficiente de $abc$ es $$\beta_{ABC}(2/5)(2/5)(1/50) = -4/(4\times 5\times 5\times 50) = 1/1250 = 0.0008.$$

Puede inspeccionar esto directamente:

tail(coefficients(runner1lm), 1)
runner1$A:runner1$B:runner1$C 
                       -8e-04

-8e-04 es un ordenador para $8\times 10^{-4} = 0.0008,$ que está de acuerdo con el cálculo.

Merece la pena comprobar algunos de los otros coeficientes de la misma manera: inspeccionar el coeficiente en un modelo; hacer el álgebra para calcular cuál debe ser en el otro modelo; y luego confirmarlo mediante la inspección. Repite este ejercicio hasta que sientas que realmente entiendes las relaciones entre estos dos formularios de la mismo modelo.

Si te quedas atascado, simplifica tu ejemplo. Comience con un modelo de la forma $y = \beta_0 + \beta_A A,$ con una variable explicativa. A continuación, pase a un modelo con dos variables y un término de interacción. Después de eso, deberías tener el control.

Moral

Cuando informe de las estimaciones del modelo, asegúrese de explicar cómo ha elegido los números para expresar todas las variables implicadas.

Algunos métodos de expresión numérica ("codificación") se prestan mejor a la interpretación que otros, pero cualquier método que cree una correspondencia uno a uno matemáticamente predecible, como la examinada anteriormente, funcionará.

Bonificación informática

Como las relaciones entre estas formas de expresión numérica pueden calcularse algebraicamente, permiten una transformación fácil y eficaz entre los marcos de datos. Por ejemplo, la expresión

15/2 + (5/2)*runner2$A

convierte el A variable en runner2 (al que llamé $A$ en las fórmulas anteriores) a la A variable en runner1 (al que llamé $a$ ). Así, no es necesario crear ninguna tabla de conversión ni utilizar ningún paquete especial: la suma y la multiplicación se encargan de todo.

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