Cómo realizar una transformación de Box-Cox en R (con ejemplos)

Una transformación box-cox es un método comúnmente utilizado para transformar un conjunto de datos que no se distribuye normalmente en uno con una distribución más normal .

La idea básica detrás de este método es encontrar algún valor para λ tal que los datos transformados estén lo más cerca posible de la distribución normal, utilizando la siguiente fórmula:

  • y (λ) = (y λ – 1) / λ si y ≠ 0
  • y (λ) = log (y) si y = 0

Podemos realizar una transformación box-cox en R usando la función boxcox () de la biblioteca MASS () . El siguiente ejemplo muestra cómo utilizar esta función en la práctica.

Consulte este artículo de la Universidad de Connecticut para obtener un buen resumen del desarrollo de la transformación Box-Cox.

Ejemplo: Transformación de Box-Cox en R

El siguiente código muestra cómo ajustar un modelo de regresión lineal a un conjunto de datos, luego use la función boxcox () para encontrar una lambda óptima para transformar la variable de respuesta y ajustar un nuevo modelo.

biblioteca (MASA)

#crear datos
y = c (1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8)
x = c (7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8)

#fit modelo de regresión lineal
modelo <- lm (y ~ x)

#encuentre el lambda óptimo para la transformación de Box-Cox 
bc <- boxcox (y ~ x)
(lambda <- bc $ x [which.max (bc $ y)])

[1] -0,4242424

#ajustar nuevo modelo de regresión lineal usando la transformación de Box-Cox
nuevo_modelo <- lm (((y ^ lambda-1) / lambda) ~ x)

Se encontró que la lambda óptima era -0,4242424 . Por lo tanto, el nuevo modelo de regresión reemplazó la variable de respuesta original y con la variable y = (y -0.4242424 – 1) / -0.4242424.

El siguiente código muestra cómo crear dos gráficos QQ en R para visualizar las diferencias en los residuos entre los dos modelos de regresión:

#define el área de trazado
op <- par (pty = "s", mfrow = c (1, 2))

Gráfico #QQ para el modelo original
qqnorm (modelo $ residuales)
qqline (modelo $ residuales)

Gráfico #QQ para el modelo transformado de Box-Cox
qqnorm (nuevo_modelo $ residuales)
qqline (nuevo_modelo $ residuales)

#muestra ambos gráficos QQ
par (op)

Gráfico QQ transformado de box-cox en R

Como regla general, si los puntos de datos caen a lo largo de una línea diagonal recta en una gráfica QQ, es probable que el conjunto de datos siga una distribución normal.

Observe cómo el modelo transformado de box-cox produce una gráfica QQ con una línea mucho más recta que el modelo de regresión original.

Esto es una indicación de que los residuos del modelo transformado de box-cox tienen una distribución mucho más normal, lo que satisface uno de los supuestos de la regresión lineal .

Recursos adicionales

Cómo transformar datos en R (logaritmo, raíz cuadrada, raíz cúbica)
Cómo crear e interpretar una gráfica QQ en R
Cómo realizar una prueba de normalidad de Shapiro-Wilk en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

Una puntuación z nos dice a cuántas desviaciones estándar se encuentra un valor de la media. Usamos la siguiente fórmula…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!