Una opción es explotar el hecho de que para cualquier variable aleatoria continua X entonces FX(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↦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")