Transformation du chi carré en distribution normale

8

La relation entre la normale normale et les distributions du chi carré est bien connue. Je me demandais cependant, y a-t-il une transformation qui peut conduire d'un à une distribution normale standard?χ2(1)

On peut facilement voir que la transformation de racine carrée ne fonctionne pas car sa plage n'est que des nombres positifs. Je crois que la distribution résultante est appelée pliée normale . Y a-t-il une astuce astucieuse qui fonctionne ici?

JohnK
la source

Réponses:

9

Une option consiste à exploiter le fait que pour toute variable aléatoire continue alors est uniforme (rectangulaire) sur [0, 1]. Ensuite, une deuxième transformation utilisant un CDF inverse peut produire une variable aléatoire continue avec la distribution souhaitée - rien de spécial à propos du chi au carré ici normal. @Glen_b a plus de détails dans sa réponse.XFX(X)

Si vous voulez faire quelque chose de bizarre et de merveilleux, entre ces deux transformations, vous pouvez appliquer une troisième transformation qui mappe des variables uniformes sur [0, 1] à d'autres variables uniformes sur [0, 1]. Par exemple, , ou pour tout , ou même pour et pour .u1uuu+kmod1kRuu+0.5u[0,0.5]u1uu(0.5,1]

Mais si nous voulons une transformation monotone de en alors nous avons besoin que leurs quantiles correspondants soient mappés les uns aux autres. Les graphiques suivants avec déciles ombrés illustrent ce point; notez que j'ai dû couper l'affichage de la densité près de zéro.Xχ12YN(0,1)χ12

Distribution du chi carré avec un degré de liberté et déciles ombrés Distribution normale standard avec déciles ombrés

Pour la transformation à augmentation monotone, qui mappe le rouge foncé au rouge foncé et ainsi de suite, vous utiliseriez . Pour la transformation décroissante monotone, qui mappe le rouge foncé au bleu foncé et ainsi de suite, vous pouvez utiliser le mappage avant d'appliquer le CDF inverse, donc . Voici à quoi ressemble la relation entre et pour la transformation croissante, ce qui donne également un indice sur la façon dont les quantiles pour la distribution du chi carré étaient à l'extrême gauche!Y=Φ1(Fχ12(X))u1uY=Φ1(1Fχ12(X))XY

Cartographie du chi carré avec 1 df à la normale standard

Si vous voulez récupérer la racine carrée transformée , une option est d'utiliser une variable aléatoire Rademacher . La distribution de Rademacher est discrète, avecXχ12W

P(W=1)=P(W=1)=12

C'est essentiellement un Bernoulli avec qui a été transformé par étirement d'un facteur d'échelle de deux puis soustraction de un. Maintenant, est normal normal - en fait, nous décidons au hasard s'il faut prendre la racine positive ou négative!p=12WX

C'est tricher un peu car c'est vraiment une transformation de pas seul. Mais j'ai pensé qu'il valait la peine d'être mentionné car cela semble dans l'esprit de la question, et un flux de variables Rademacher est assez facile à générer. Soit dit en passant, et seraient un autre exemple de variables normales non corrélées mais dépendantes. Voici un graphique montrant où les déciles du sont mappés; rappelez-vous que tout sur le côté droit de zéro est où et le côté gauche est . Notez comment les valeurs autour de zéro sont mappées à partir des valeurs faibles de et les queues (extrêmes gauche et droite) sont mappées à partir des grandes valeurs de(W,X)XZWZχ12W=1W=1XX .

Cartographie du chi carré à la distribution normale

Code pour les tracés ( voir aussi ce post Stack Overflow ):

require(ggplot2)
delta     <- 0.0001 #smaller for smoother curves but longer plot times
quantiles <- 10    #10 for deciles, 4 for quartiles, do play and have fun!

chisq.df <- data.frame(x = seq(from=0.01, to=5, by=delta)) #avoid near 0 due to spike in pdf
chisq.df$pdf <- dchisq(chisq.df$x, df=1)
chisq.df$qt <- cut(pchisq(chisq.df$x, df=1), breaks=quantiles, labels=F)
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=F)
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 as function of 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()

#because a chi-squared quartile maps to both left and right areas, take care with plotting order
z.df$qt2 <- cut(pchisq(z.df$x^2, df=1), breaks=quantiles, labels=F) 
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")
Silverfish
la source
1
C'est un truc très intelligent, j'aime ça :). Je vous remercie.
JohnK
5

[ Eh bien, je n'ai pas pu trouver le double que je pensais qu'il y avait; le plus près je suis venu était la mention du fait vers la fin de cette réponse . (Il est possible que cela n'ait été discuté que dans les commentaires sur une question, mais il y avait peut-être un doublon et je l'ai juste raté.) Je vais donner une réponse ici après tout. ]

Si est khi carré, avec comme CDF, et est le cdf de la normale, alors est normal. Ceci est évident car la transformée intégrale de probabilité de donne un uniforme, et est normal. Nous avons donc une transformation monotone du chi carré à la normale.XFΦΦ1(F(X))XΦ1(U)

La même astuce fonctionne avec deux variables continues quelconques.

Cela nous donne un contre-exemple soigné des différentes versions de la question "sont normales non corrélées Y, Z bivariées normales?" qui viennent, car si Z est normal normal et , alors sont tous les deux normaux et ils ne sont pas corrélés, mais ils sont certainement dépendant (et a une relation plutôt bivariée)Y=Φ1(Fχ12(Z2))Z,Y

La transformation :T(z)=Φ1(Fχ12(z2))

entrez la description de l'image ici

Histogramme d'un grand échantillon de valeurs :Z+Y

entrez la description de l'image ici

Glen_b -Reinstate Monica
la source
Pourriez-vous ajouter quelques mots à votre réponse pour expliquer pourquoi et sont pas corrélés? Ce n'est pas du tout évident pour moi, mais alors, je ne vois probablement pas les choses dans la bonne perspective. ZY
Dilip Sarwate
@Dilip est centré sur 0 et la transformation de nous appliquons pour obtenir est symétrique par rapport à 0. Donc . ZZYE(YZ)=0
Glen_b -Reinstate Monica
Eh bien, nous devons en montrer un peu plus pour être sûr que E (YZ) est fini, par exemple, mais cela ne poserait aucun problème.
Glen_b -Reinstate Monica
Le mappage peut également être bien vu dans les tracés de densité normale dans ma réponse - celui du bas (rouge au milieu) correspond à celui du haut (rouge à gauche), avec du rouge mappé au rouge et au bleu mappé au bleu. C'est une jolie relation! zT(z)
Silverfish