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/

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!