11 votos

Transformación de Chi-cuadrado a distribución normal

La relación entre las distribuciones normal estándar y chi-cuadrado es bien conocida. Sin embargo, me preguntaba si hay alguna transformación que pueda llevar de una distribución $\chi^2 (1)$ de vuelta a una distribución normal estándar.

Se puede ver fácilmente que la transformación de la raíz cuadrada no funciona, ya que su rango son solo números positivos. Creo que la distribución resultante se llama normal plegada. ¿Hay algún truco ingenioso que funcione aquí?

12voto

Silverfish Puntos 6909

Una opción es explotar el hecho de que para cualquier variable aleatoria continua $X$ entonces $F_X(X)$ es uniforme (rectangular) en [0, 1]. Luego, una segunda transformación usando una CDF invertida puede producir una variable aleatoria continua con la distribución deseada - nada especial acerca de la qui-cuadrado a normal aquí . @Glen_b tiene más detalles en su respuesta.

Si quieres hacer algo extraño y maravilloso, entre esas dos transformaciones podrías aplicar una tercera transformación que mapea variables uniformes en [0, 1] a otras variables uniformes en [0, 1]. Por ejemplo, $u \mapsto 1 - u$, o $u \mapsto u + k \mod 1$ para cualquier $k \in \mathbb{R}$, o incluso $u \mapsto u + 0.5$ para $u \in [0, 0.5]$ y $u \mapsto 1 - u$ para $u \in (0.5, 1]$.

Pero si queremos una transformación monótona de $X \sim \chi^2_1$ a $Y \sim \mathcal{N}(0,1)$ entonces necesitamos que sus cuantiles correspondientes se mapeen entre sí. Los siguientes gráficos con deciles sombreados ilustran el punto; ten en cuenta que tuve que recortar la visualización de la densidad de $\chi^2_1$ cerca de cero.

Distribución chi cuadrada con un grado de libertad y deciles sombreados

Distribución normal estándar con deciles sombreados

Para la transformación monótonamente creciente, que mapea el rojo oscuro al rojo oscuro y así sucesivamente, utilizarías $Y = \Phi^{-1}(F_{\chi^2_1}(X))$. Para la transformación monótonamente decreciente, que mapea el rojo oscuro al azul oscuro y así sucesivamente, podrías usar el mapeo $u \mapsto 1-u$ antes de aplicar la CDF inversa, entonces $Y = \Phi^{-1}(1 - F_{\chi^2_1}(X))$. Así es como se ve la relación entre $X$ y $Y$ para la transformación creciente, ¡lo que también da una pista de cuán apelotonados estaban los cuantiles de la distribución qui-cuadrado en la extrema izquierda!

Mapeo de chi cuadrado con 1 df a normal estándar

Si quieres rescatar la transformación de raíz cuadrada en $X \sim \chi^2_1$, una opción es usar una variable aleatoria de Rademacher $W$. La distribución de Rademacher es discreta, con $$\mathsf{P}(W = -1) = \mathsf{P}(W = 1) = \frac{1}{2}$$

Esencialmente, es una Bernoulli con $p = \frac{1}{2}$ que ha sido transformada estirándose por un factor de dos y luego restando uno. Ahora $W\sqrt{X}$ es normal estándar - ¡efectivamente estamos decidiendo al azar si tomar la raíz positiva o negativa!

Es un poco de trampa porque realmente es una transformación de $(W, X)$ no solamente de $X$. Pero pensé que valía la pena mencionarlo ya que parece estar en el espíritu de la pregunta, y una serie de variables de Rademacher es suficientemente fácil de generar. Por cierto, $Z$ y $WZ$ serían otro ejemplo de variables normales no correlacionadas pero dependientes. Aquí hay un gráfico que muestra dónde se mapean los deciles del $\chi^2_1$ original; recuerda que cualquier cosa en el lado derecho de cero es donde $W = 1$ y el lado izquierdo es $W = -1$. Ten en cuenta cómo los valores alrededor de cero se mapean desde valores bajos de $X$ y las colas (tanto los extremos izquierdo y derecho) se mapean desde los valores grandes de $X$.

Mapeo de chi cuadrado a distribución normal

Código para los gráficos (ver también esta publicación de Stack Overflow):

require(ggplot2)
delta     <- 0.0001 #más pequeño para curvas más suaves pero tiempos de trazado más largos
quantiles <- 10    #10 para deciles, 4 para cuartiles, ¡juega y diviértete!

chisq.df <- data.frame(x = seq(from=0.01, to=5, by=delta)) 
    # evitar cerca de 0 debido a pico en pdf
chisq.df$pdf <- dchisq(chisq.df$x, df=1)
chisq.df$qt <- cut(pchisq(chisq.df$x, df=1), breaks=quantiles, 
                   labels=FALSE)
ggplot(chisq.df, aes(x=x, y=pdf)) +
  geom_area(aes(group=qt, fill=qt), color="black", size = 0.5) +
  scale_fill_gradient2(midpoint=median(unique(chisq.df$qt)), 
  guide="none") +
  theme_bw() + xlab("x")

z.df     <- data.frame(x = seq(from=-3, to=3, by=delta))
z.df$pdf <- dnorm(z.df$x)
z.df$qt  <- cut(pnorm(z.df$x), breaks=quantiles, labels=FALSE)
ggplot(z.df, aes(x=x,y=pdf)) +
  geom_area(aes(group=qt, fill=qt), color="black", size = 0.5) +
  scale_fill_gradient2(midpoint=median(unique(z.df$qt)), 
         guide="none") + theme_bw() + xlab("y")

# y como función de x
data.df <- data.frame(x=c(seq(from=0, to=6, by=delta)))
data.df$y <- qnorm(pchisq(data.df$x, df=1))
ggplot(data.df, aes(x,y)) + theme_bw() + geom_line()

# como un cuartil de chi-cuadrado mapea a ambas áreas izquierda y derecha, 
# tener cuidado con el orden de trazado
z.df$qt2 <- cut(pchisq(z.df$x^2, df=1), breaks=quantiles, 
                labels=FALSE) 
z.df$w <- as.factor(ifelse(z.df$x >= 0, 1, -1))
ggplot(z.df, aes(x=x,y=pdf)) +
  geom_area(data=z.df[z.df$x > 0 | z.df$qt2 == 1,], aes(group=qt2, 
  fill=qt2), color="black", size = 0.5) +
  geom_area(data=z.df[z.df$x <0 & z.df$qt2 > 1,], aes(group=qt2, 
  fill=qt2), color="black", size = 0.5) +
  scale_fill_gradient2(midpoint=median(unique(z.df$qt)), 
  guide="none") +
  theme_bw() + xlab("y")

1 votos

Este es un truco muy inteligente, ¡me gusta :). Gracias.

6voto

AdamSane Puntos 1825

[Bueno, no pude encontrar el duplicado que pensaba que había; lo más cercano que llegué fue la mención del hecho hacia el final de esta respuesta. (Es posible que solo se haya discutido en comentarios en alguna pregunta, pero tal vez hubo un duplicado y simplemente no lo vi). De todas formas, daré una respuesta aquí.]

Si $X$ es chi-cuadrado, con $F$ como su función de distribución acumulada, y $$ es la función de distribución acumulada de la normal, entonces $^{1}(F(X))$ es normal. Esto es obvio ya que la transformación integral de probabilidad de $X$ da una uniforme, y $^{1}(U)$ es normal. Así que tenemos una transformación monótona del chi-cuadrado a la normal.

El mismo truco funciona con cualquier par de variables continuas.

Esto nos da un contraejemplo ingenioso a las diversas versiones de la pregunta "¿son Y, Z bivariadas normales no correlacionadas?" que surgen, ya que si Z es normal estándar y $Y=^{1}(F_{^2_1}(Z^2))$, entonces $Z, Y$ son ambos normales y no están correlacionados, pero definitivamente están relacionados (y tienen una relación bivariada bastante bonita)

La transformación $T(z)=^{1}(F_{^2_1}(z^2)):

introducir descripción de la imagen aquí

Histograma de una gran muestra de los valores de $Z+Y$:

introducir descripción de la imagen aquí

0 votos

¿Podrías agregar solo unas pocas palabras a tu respuesta para explicar por qué $Z$ y $Y$ son incorrelacionados? No me resulta obvio en absoluto, pero probablemente simplemente no estoy viendo las cosas desde la perspectiva correcta.

0 votos

@Dilip $Z$ está centrado en 0 y la transformación de $Z$ que aplicamos para obtener $Y$ es simétrica respecto a 0. Por lo tanto, $E(YZ)=0$.

0 votos

Bueno, necesitamos mostrar un poco más para estar seguros de que E(YZ) es finito, por ejemplo, pero eso no presentaría ningún problema.

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