Transformando variables para regresión múltiple en R

26

Estoy tratando de realizar una regresión múltiple en R. Sin embargo, mi variable dependiente tiene la siguiente gráfica:

DV

Aquí hay una matriz de diagrama de dispersión con todas mis variables ( WARes la variable dependiente):

SPLOM

Sé que necesito realizar una transformación en esta variable (¿y posiblemente las variables independientes?) Pero no estoy seguro de la transformación exacta requerida. ¿Alguien me puede apuntar en la dirección correcta? Me complace proporcionar cualquier información adicional sobre la relación entre las variables independientes y dependientes.

Los gráficos de diagnóstico de mi regresión son los siguientes:

Diagramas de diagnóstico

EDITAR

Después de transformar las variables dependientes e independientes usando las transformaciones de Yeo-Johnson, las gráficas de diagnóstico se ven así:

Después de transformar

Si uso un GLM con un enlace de registro, los gráficos de diagnóstico son:

GLM con log-link

zgall1
fuente
3
Hola @ zglaa1 y bienvenido. ¿Por qué crees que tienes que transformar las variables? El primer paso sería ajustar la regresión con los varibales originales y luego observar el ajuste (residuos, etc.). Los residuos deberían distribuirse aproximadamente normalmente, no las variables. Quizás encuentres esta publicación interesante.
COOLSerdash
Gracias por el enlace y la sugerencia. He ejecutado mi regresión y sé que las variables deben transformarse según el siguiente diagrama: i.imgur.com/rbmu14M.jpg Puedo ver imparcialidad y falta de variabilidad constante en los residuos. Además, no son normales.
zgall1
@COOLSerdash Eché un vistazo al enlace. Tengo una formación básica en estadística, así que entiendo la discusión. Sin embargo, mi problema es que tengo una experiencia limitada en la aplicación de las técnicas que he aprendido, así que me cuesta entender qué necesito hacer exactamente con mis datos (ya sea en Excel o R) para realizar las transformaciones necesarias.
zgall1
Gracias por el gráfico. Tiene toda la razón al decir que este ajuste es subóptimo. ¿Podría producir una matriz de diagrama de dispersión con el DV y IV en la regresión? Esto se puede hacer Rcon el comando pairs(my.data, lower.panel = panel.smooth)donde my.dataestaría su conjunto de datos.
COOLSerdash
2
lmboxcox(my.lm.model)MASSλ

Respuestas:

30

El libro de John Fox, Un compañero de R para la regresión aplicada, es un excelente recurso para el modelado de regresión aplicada R. El paquete carque utilizo en esta respuesta es el paquete que lo acompaña. El libro también tiene como sitio web con capítulos adicionales.


Transformando la respuesta (también conocida como variable dependiente, resultado)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Esto produce una trama como la siguiente:

Diagrama de lambda de Box-Cox

λλ

Para transformar su variable dependiente ahora, use la función yjPowerdel carpaquete:

depvar.transformed <- yjPower(my.dependent.variable, lambda)

lambdaλboxCox

Importante: en lugar de simplemente transformar por transformación la variable dependiente, debe considerar ajustar un GLM con un enlace de registro. Aquí hay algunas referencias que proporcionan más información: primero , segundo , tercero . Para hacer esto R, use glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

donde yes su variable dependiente y x1, x2etc. , son sus variables independientes.


Transformaciones de predictores.

Las transformaciones de predictores estrictamente positivos pueden estimarse por la máxima probabilidad después de la transformación de la variable dependiente. Para hacerlo, use la función boxTidwelldel carpaquete (para ver el documento original, consulte aquí ). Usarlo como que: boxTidwell(y~x1+x2, other.x=~x3+x4). Lo importante aquí es que esa opción other.xindica los términos de la regresión que no se deben transformar. Estas serían todas sus variables categóricas. La función produce una salida de la siguiente forma:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomeingresosnortemiw=1/ /ingresosolre

Otra publicación muy interesante en el sitio sobre la transformación de las variables independientes es esta .


Desventajas de las transformaciones

1/ /yλλ


Modelado de relaciones no lineales

Dos métodos bastante flexibles para ajustar relaciones no lineales son polinomios fraccionales y splines . Estos tres documentos ofrecen una muy buena introducción a ambos métodos: primero , segundo y tercero . También hay un libro completo sobre polinomios fraccionales y R. El R paquetemfp implementa polinomios fraccionales multivariables. Esta presentación puede ser informativa con respecto a los polinomios fraccionales. Para ajustar las splines, puede usar la función gam(modelos aditivos generalizados, vea aquí una excelente introducción con R) del paquetemgcv o las funcionesns(splines cúbicas naturales) y bs(splines B cúbicas) del paquete splines(vea aquí un ejemplo del uso de estas funciones). Usando gampuede especificar qué predictores desea ajustar usando splines usando la s()función:

my.gam <- gam(y~s(x1) + x2, family=gaussian())

aquí, x1se ajustaría usando una spline y x2linealmente como en una regresión lineal normal Dentro gampuede especificar la familia de distribución y la función de enlace como en glm. Así que para ajustarse a un modelo con una función logarítmica de enlace, se puede especificar la opción family=gaussian(link="log")de gamque en glm.

Echa un vistazo a esta publicación del sitio.

COOLSerdash
fuente
1
Buena explicación. No sé si Box-Cox explícito es realmente el método más común para elegir una transformación. Si cuentas a las personas que simplemente eligen registros de cualquier manera, mi conjetura es que es un método minoritario. Ese punto exigente no afecta a nada más, naturalmente.
Nick Cox
@NickCox Gracias (+1 por su respuesta, por cierto). La afirmación de que Box-Cox es el método más común proviene del libro de John Fox. Lo tomé al pie de la letra ya que no tengo suficiente experiencia para juzgar la declaración. Eliminaré la declaración.
COOLSerdash
Muchas gracias por la explicación detallada. Intentaré aplicarlo a mis datos ahora.
zgall1
@COOLSerdash Utilizando su tutorial detallado, apliqué la transformación de Box Cox a mis variables dependientes y luego independientes y tengo la siguiente gráfica de mis variables de diagnóstico: i.imgur.com/eO01djl.jpg Claramente, hay una mejora, pero todavía parece haber Hay problemas con la variabilidad constante y la imparcialidad y definitivamente hay un problema con la normalidad. ¿A dónde puedo ir desde aquí?
zgall1
1
@ zgall1 Gracias por sus comentarios, lo agradezco. Hm, sí, las transformaciones no parecen haber ayudado mucho :). En este punto, probablemente trataría de usar splines para los predictores que usan modelos aditivos generalizados (GAM) con el mgcvpaquete y gam. Si eso no ayuda, tengo miedo. Aquí hay personas que tienen mucha más experiencia que yo y tal vez puedan darle más consejos. Tampoco conozco el béisbol. Quizás haya un modelo más lógico que tenga sentido con estos datos.
COOLSerdash
8

Debe contarnos más sobre la naturaleza de su variable de respuesta (resultado, dependiente). Desde su primer gráfico, está fuertemente sesgado positivamente con muchos valores cercanos a cero y algunos negativos. A partir de eso, es posible, pero no inevitable, que la transformación lo ayude, pero la pregunta más importante es si la transformación acercaría sus datos a una relación lineal.

Tenga en cuenta que los valores negativos para la respuesta descartan la transformación logarítmica directa, pero no logaritmo (respuesta + constante), y no un modelo lineal generalizado con enlace logarítmico.

Hay muchas respuestas en este sitio sobre el registro (respuesta + constante), que divide a las personas estadísticas: a algunas personas no les gusta que sean ad hoc y difíciles de trabajar, mientras que otras lo consideran un dispositivo legítimo.

Todavía es posible un GLM con enlace de registro.

Alternativamente, puede ser que su modelo refleje algún tipo de proceso mixto, en cuyo caso un modelo personalizado que refleje el proceso de generación de datos más de cerca sería una buena idea.

(MÁS TARDE)

El OP tiene una variable dependiente WAR con valores que oscilan aproximadamente entre 100 y -2. Para superar los problemas con la toma de logaritmos de cero o valores negativos, OP propone una combinación de ceros y negativos a 0.000001. Ahora en una escala logarítmica (base 10) esos valores varían desde aproximadamente 2 (100 más o menos) hasta -6 (0.000001). La minoría de puntos falsificados en una escala logarítmica son ahora una minoría de valores atípicos masivos. Trace log_10 (WAR fudged) contra cualquier otra cosa para ver esto.

Nick Cox
fuente
Como puede ver en el diagrama de dispersión publicado anteriormente, estoy usando un conjunto de datos de estadísticas de béisbol. La variable independiente, WAR, es esencialmente una medida acumulativa del valor aportado por un jugador a lo largo de su carrera en el nivel de las grandes ligas. Las variables independientes, AdjSLG, SOPct y BBPct son estadísticas de ligas menores que comúnmente se cree que predicen el éxito a nivel de las grandes ligas. La variable Edad es la edad a la que el jugador produjo las estadísticas de las ligas menores. Las variables ficticias se utilizan para indicar el nivel de liga menor en el que se produjeron las estadísticas.
zgall1
Con respecto al problema de la variable independiente negativa (WAR), por razones que son un poco complejas, es razonable volver a codificarlas como ceros si eso facilita el proceso de transformación. Dentro del marco de este conjunto de datos, este es un procedimiento justificable. Si desea que le dé más detalles (advertencia, se requiere jerga de béisbol), estoy feliz de hacerlo.
zgall1
1
Parece que WAR es tu variable dependiente . Usted proporciona evidencia de mi afirmación, disputada en otra parte de este sitio, de que los dos términos a menudo se confunden. Mi consejo no es recodificar valores negativos a ceros (maltrata los datos) sino usar un GLM con enlace de registro. Por favor, asuma cero interés o conocimiento de las minucias de béisbol de mi lado.
Nick Cox
Tienes razón en que WAR es mi variable dependiente. Buscaré un GLM con un enlace de registro. Gracias por el consejo.
zgall1
1
Podría ser útil saber cómo se calcula entonces WAR de carrera (también conocido como el proceso de generación de datos).
Affine