31 votos

Transformación de variables para la regresión múltiple en R

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

DV

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

SPLOM

Sé que tengo que realizar una transformación en esta variable (¿y posiblemente en las variables independientes?) pero no estoy seguro de la transformación exacta necesaria. ¿Puede alguien indicarme la dirección correcta? Estoy dispuesto a 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:

Diagnostic plots

EDITAR

Después de transformar las variables dependientes e independientes utilizando las transformaciones de Yeo-Johnson, los gráficos de diagnóstico tienen este aspecto:

After transforming

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

GLM with log-link

4 votos

Hola @zglaa1 y bienvenido. Por qué crees que hay que transformar las variables? El primer paso sería ajustar la regresión con las varibales originales y luego mirar el ajuste (residuos, etc). Los residuos deberían tener una distribución aproximadamente normal, no las variables. Tal vez encuentres este puesto interesante.

0 votos

Gracias por el enlace y la sugerencia. He ejecutado mi regresión y sé que las variables necesitan ser transformadas en base al siguiente gráfico: i.imgur.com/rbmu14M.jpg Puedo ver la insesgadez y la falta de variabilidad constante en los residuos. Además, no son normales.

0 votos

@COOLSerdash He echado 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 poca experiencia en la aplicación real de las técnicas que he aprendido por lo que lucho para averiguar qué es exactamente lo que tengo que hacer con mis datos (ya sea en Excel o R) para realizar realmente las transformaciones necesarias.

35voto

mehturt Puntos 13

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


Transformación de la respuesta (variable dependiente, resultado)

Transformaciones Box-Cox ofrecen una posible vía para elegir una transformación de la respuesta. Después de ajustar su modelo de regresión que contiene variables no transformadas con la R función lm puede utilizar la función boxCox de la car paquete para estimar λ (es decir, el parámetro de potencia) por máxima verosimilitud. Como su variable dependiente no es estrictamente positiva, las transformaciones Box-Cox no funcionarán y hay que especificar la opción family="yjPower" para utilizar el Transformaciones Yeo-Johnson (véase el documento original aquí y esto post relacionado ):

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

Esto produce un gráfico como el siguiente:

Box-Cox lambdaplot

La mejor estimación de λ es el valor que maximiza la probabilidad del perfil, que en este ejemplo es de aproximadamente 0,2. Normalmente, la estimación de λ se redondea a un valor familiar que todavía está dentro del intervalo de confianza del 95%, como -1, -1/2, 0, 1/3, 1/2, 1 o 2.

Para transformar su variable dependiente ahora, utilice la función yjPower de la car paquete:

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

En la función, el lambda debe ser el redondeado λ que ha encontrado antes de utilizar boxCox . A continuación, ajuste la regresión de nuevo con la variable dependiente transformada.

Es importante: En lugar de limitarse a realizar una transformación logarítmica de la variable dependiente, debería considerar la posibilidad de ajustar un MLG con un enlace logarítmico. Aquí hay algunas referencias que proporcionan más información: primero , segundo , tercera . Para hacer esto en R Utilizar glm :

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

donde y es su variable dependiente y x1 , x2 etc. son sus variables independientes.


Transformaciones de los predictores

Transformaciones de predictores estrictamente positivos puede estimarse por máxima verosimilitud tras la transformación de la variable dependiente. Para ello, utilice la función boxTidwell de la car (para el documento original, véase aquí ). Úsalo así: boxTidwell(y~x1+x2, other.x=~x3+x4) . Lo importante aquí es que la opción other.x indica los términos de la regresión que son no para ser transformado. Esto sería 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

En ese caso, la prueba de puntuación sugiere que la variable income debe transformarse. Las estimaciones de máxima verosimilitud de λ para income es -0,348. Esto podría redondearse a -0,5, lo que es análogo a la transformación incomenew=1/incomeold .

Otro post muy interesante en el sitio sobre la transformación de las variables independientes es este .


Desventajas de las transformaciones

Mientras que las variables dependientes y/o independientes transformadas logarítmicamente pueden ser interpretado con relativa facilidad La interpretación de otras transformaciones más complicadas es menos intuitiva (al menos para mí). ¿Cómo interpretarías, por ejemplo, los coeficientes de regresión después de que las variables dependientes hayan sido transformadas por 1/y ? Hay bastantes posts en este sitio que tratan exactamente de esa cuestión: primero , segundo , tercera , cuarto . Si utiliza el λ de Box-Cox directamente, sin redondear (por ejemplo λ =-0,382), resulta aún más difícil interpretar los coeficientes de regresión.


Modelización de relaciones no lineales

Dos métodos bastante flexibles para ajustar relaciones no lineales son polinomios fraccionarios y splines . Estos tres documentos ofrecen una muy buena introducción a ambos métodos: Primero , segundo y tercera . También hay toda una libro sobre polinomios fraccionarios y R . El R paquete mfp implementa polinomios fraccionarios multivariables. Esta presentación puede ser informativa respecto a los polinomios fraccionarios. Para ajustar los splines, se puede utilizar la función gam (modelos aditivos generalizados, véase aquí para una excelente introducción con R ) del paquete mgcv o las funciones ns (splines cúbicos naturales) y bs (B-splines cúbicos) del paquete splines (ver aquí para ver un ejemplo del uso de estas funciones). Uso de gam puede especificar qué predictores desea ajustar mediante splines utilizando la opción s() función:

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

aquí, x1 se ajustaría mediante una spline y x2 linealmente como en una regresión lineal normal. Dentro de gam puede especificar la familia de distribución y la función de enlace como en glm . Así, para ajustar un modelo con una función de enlace logarítmico, puede especificar la opción family=gaussian(link="log") en gam como en glm .

Echa un vistazo a este puesto del sitio.

1 votos

Buena explicación. No sé si el Box-Cox explícito es realmente el método más común para elegir una transformación. Si se cuenta la gente que simplemente elige los troncos de cualquier manera, mi propia suposición salvaje es que es un método minoritario. Ese punto tan delicado no afecta a nada más, naturalmente.

0 votos

@NickCox Gracias (+1 por tu 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 afirmación. Eliminaré la afirmación.

0 votos

Muchas gracias por la detallada explicación. Voy a intentar aplicarlo a mis datos ahora.

8voto

Nick Cox Puntos 22819

Debería decirnos más sobre la naturaleza de su variable de respuesta (resultado, dependiente). Según su primer gráfico, está fuertemente sesgada positivamente, con muchos valores cercanos a cero y algunos negativos. A partir de esto es posible, pero no inevitable, que la transformación le ayude, pero la pregunta más importante es si la transformación haría que sus datos se acercaran más a una relación lineal.

Obsérvese que los valores negativos de la respuesta descartan una transformación logarítmica directa, pero no log(respuesta + constante), y no un modelo lineal generalizado con enlace logarítmico.

Hay muchas respuestas en este sitio en las que se discute el log(respuesta + constante), que divide a los estadísticos: a algunos no les gusta por ser ad hoc y difícil de trabajar, mientras que otros lo consideran un dispositivo legítimo.

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

Otra posibilidad es que su modelo refleje algún tipo de proceso mixto, en cuyo caso sería conveniente un modelo personalizado que reflejara mejor el proceso de generación de datos.

(LATERAL)

El OP tiene una variable dependiente WAR con valores que van aproximadamente de 100 a -2. Para superar los problemas con la toma de logaritmos de valores cero o negativos, el OP propone un fudge de ceros y negativos a 0,000001. Ahora, en una escala logarítmica (base 10) esos valores van desde aproximadamente 2 (100 más o menos) hasta -6 (0,000001). La minoría de puntos falsos en una escala logarítmica son ahora una minoría de valores atípicos masivos. Para comprobarlo, trace log_10(WAR falseada) contra cualquier otra cosa.

0 votos

Como puede deducirse del gráfico de dispersión publicado más arriba, estoy utilizando un conjunto de datos estadísticos 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 las grandes ligas. Las variables independientes, AdjSLG, SOPct y BBPct son estadísticas de las ligas menores que comúnmente se piensa que predicen el éxito a nivel de las ligas mayores. 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.

0 votos

En cuanto al tema de la variable independiente negativa (WAR), por razones un poco complejas, es razonable recodificarlas como ceros si eso facilita el proceso de transformación. En el marco de este conjunto de datos, es un procedimiento justificable. Si desea que entre en más detalles (advertencia: se requiere jerga de béisbol), estaré encantado de hacerlo.

1 votos

Parece que WAR es su dependiente variable. Usted aporta pruebas de mi afirmación, discutida en otro lugar de este sitio, de que ambos términos se confunden a menudo. Mi consejo es no recodificar los valores negativos a ceros (maltrata los datos), sino utilizar un GLM con enlace logarítmico. Por favor, asuma que no hay ningún interés o conocimiento de las minucias del béisbol por mi parte.

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