62 votos

Box-Cox-al igual que la transformación de las variables independientes?

Hay un Box-Cox-al igual que la transformación de las variables independientes? Es decir, una transformación que optimiza el valor de $x$ variable, por lo que el y~f(x) le haga un ajuste razonable para un modelo lineal?

Si es así, hay una función para realizar esta con R?

87voto

jldugger Puntos 7490

John Tukey defendido su "tres método de punto" para la búsqueda de re-expresiones de variables para alinear las relaciones.

Voy a ilustrar con un ejercicio de su libro, el Análisis Exploratorio de Datos. Estas son las de vapor de mercurio de presión de datos de un experimento en el que se varió la temperatura y la presión de vapor se mide.

pressure <- c(0.0004, 0.0013, 0.006, 0.03, 0.09, 0.28, 0.8, 1.85, 4.4, 
              9.2, 18.3, 33.7, 59, 98, 156, 246, 371, 548, 790) # mm Hg
temperature <- seq(0, 360, 20) # Degrees C

La relación es fuertemente no lineal: ver el panel de la izquierda en la ilustración.

Plots

Debido a que este es un exploratoria ejercicio, esperamos que sea interactivo. El analista se le pide a comenzar con la identificación de tres "típicos" de los puntos de la trama: uno cerca de cada extremo y uno en el medio. Yo lo he hecho aquí y marcado en rojo. (La primera vez que hice este ejercicio hace mucho tiempo, he utilizado un conjunto diferente de puntos, pero llegado a los mismos resultados.)

En los tres métodos de punto, una de registros-por fuerza bruta o de otro tipo, para un Box-Cox de transformación que, cuando se aplica a una de las coordenadas-o y o x--(a) lugar de la típica puntos aproximadamente en una línea y (b) utiliza un "agradable" de energía, que normalmente se elige a partir de una "escalera" de los poderes que pueden ser interpretables por el analista.

Por razones que se hará evidente más adelante, he ampliado el Box-Cox de la familia, al permitir que un "offset" de modo que las transformaciones en la forma

$$x \a \frac{(x + \alpha)^\lambda - 1}{\lambda}.$$

He aquí una rápida y sucia R de ejecución. Se busca en primer lugar un óptimo $(\lambda\alpha)$ solución, entonces rondas $\lambda$ a el valor más próximo en la escalera y, sujeto a la restricción, optimiza $\alpha$ (dentro de límites razonables). Es increíblemente rápido porque todos los cálculos se basan sólo en esos tres puntos típicos de la del conjunto de datos original. (Se puede hacer con lápiz y papel, incluso, que es exactamente lo Tukey).

box.cox <- function(x, parms=c(1,0)) {
  lambda <- parms[1]
  offset <- parms[2]
  if (lambda==0) log(x+offset) else ((x+offset)^lambda - 1)/lambda
}
threepoint <- function(x, y, ladder=c(1, 1/2, 1/3, 0, -1/2, -1)) {
  # x and y are length-three samples from a dataset.
  dx <- diff(x)
  f <- function(parms) (diff(diff(box.cox(y, parms)) / dx))^2
  fit <- nlm(f, c(1,0))
  parms <- fit$estimate #$
  lambda <- ladder[which.min(abs(parms[1] - ladder))]
  if (lambda==0) offset = 0 else {
    do <- diff(range(y))
    offset <- optimize(function(x) f(c(lambda, x)), 
                       c(max(-min(x), parms[2]-do), parms[2]+do))$minimum    
  }
  c(lambda, offset)
}

Cuando los tres puntos de método se aplica a la presión (y) los valores en la de vapor de mercurio conjunto de datos, se obtiene el panel central de las parcelas.

data <- cbind(temperature, pressure)
n <- dim(data)[1]
i3 <- c(2, floor((n+1)/2), n-1)
parms <- threepoint(temperature[i3], pressure[i3])
y <- box.cox(pressure, parms)

En este caso, parms resulta igual a $(0,0)$: el método que se elige para iniciar la transformación de la presión.

Hemos llegado a un punto análogo al contexto de la pregunta: por la razón que sea (por lo general para estabilizar la varianza residual), hemos re-expresado el dependiente de la variable, pero nos encontramos con que la relación con una variable independiente es no lineal. Así que ahora nos dirigimos a la re-expresión de la variable independiente en un esfuerzo para alinear la relación. Esto se hace de la misma manera, simplemente invirtiendo los papeles de x y y:

parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)

Los valores de parms para la variable independiente (la temperatura) se encuentran $(-1, 253.75)$: en otras palabras, debemos expresar que la temperatura en grados Centígrados por encima de los $-254$C y el uso de su recíproca ($-1$ power). (Por razones técnicas, el Box-Cox transformación más agrega $1$ para el resultado). La relación resultante se muestra en el panel de la derecha.


Por ahora, cualquier persona con el mínimo de ciencias de fondo ha reconocido que los datos están "diciendo" nosotros para el uso absoluto de temperaturas--donde el desplazamiento es de $273$ en vez de $254$--porque esos serán físicamente significativa. (Cuando la última trama es re-dibujado con un desplazamiento de $273$ en vez de $254$, hay poco cambio visible. Un físico, a continuación, la etiqueta del eje x con $1/(1-x)$: es decir, el recíproco de la temperatura absoluta.)

Este es un buen ejemplo de cómo la exploración estadística necesita interactuar con la comprensión del objeto de investigación. De hecho, el recíproco de la temperatura absoluta se muestran todo el tiempo en las leyes de la física. En consecuencia, el uso de simples EDA métodos para explorar este siglo-viejo, simple, conjunto de datos, hemos redescubierto el Clausius-Clapeyron relación: el logaritmo de la presión de vapor es una función lineal de la recíproco de la temperatura absoluta. No sólo eso, tenemos una no muy mala estimación de cero absoluto ($-254$ grados C), a partir de la pendiente de la derecha de la parcela se puede calcular la entalpía específica de la vaporización, y--como resulta-un análisis cuidadoso de los residuos identifica un valor atípico (el valor a una temperatura de 0 $$ grados C), nos muestra cómo la enthalphy de vaporización varía (muy poco) con la temperatura (violando la Ley de los Gases Ideales), y en última instancia nos puede dar información precisa sobre el radio efectivo de el mercurio moléculas de gas! Todos los que desde el 19 de puntos de datos y algunas habilidades básicas en el EDA.

12voto

Devon_C_Miller Puntos 126

Echa un vistazo a estas diapositivas sobre "la Regresión de diagnóstico" por John Fox (disponible a partir de aquí, se completa con referencias), que discutir brevemente el tema de la transformación de la no linealidad. Se cubre de Tukey "protrusión de la regla" para la selección de la potencia de las transformaciones (dirigida por el aceptado la respuesta), pero también se menciona el de Box-Cox y Yeo-Johnson familias de transformaciones. Consulte la Sección 3.6 de las diapositivas. Para más formal tomar por el mismo autor véase J. Fox, Aplica el Análisis de Regresión y Modelos Lineales Generalizados, Segunda Edición (Salvia, 2008).

Como para real I paquetes de ayuda con esto, absolutamente echa un vistazo al coche de paquete, escrito por J. Fox y S. Weisberg. Este paquete acompaña J. Fox y S. Weisberg, Un R Compañero de la aplicación de la Regresión, Segunda Edición, (Salvia, 2011), otro que hay que leer. El uso de este paquete usted puede comenzar desde basicPower() (transformaciones simples de energía), bcPower() (Box-Cox transformaciones) y yjPower() (Yeo-Johnson transformaciones). También hay powerTransform():

La función powerTransform se utiliza para estimar la normalización de las transformaciones de un univariante o multivariante variable aleatoria.

Compruebe ambos libros para más detalles sobre la teoría detrás de estas transformaciones y en los enfoques computacionales.

10voto

dan90266 Puntos 609

Hay muchas ventajas para hacer la estimación de la covariable transformaciones de una parte formal del proceso de estimación. Este reconocerá el número de parámetros que intervienen y hacen un buen intervalo de confianza de la cobertura y el error tipo I de preservación. La regresión de las estrías del son algunos de los mejores enfoques. Y splines trabajará con cero y negativos los valores de $X$, a diferencia logarítmica de los enfoques.

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