Transformation Chi-Quadrat zur Normalverteilung

8

Die Beziehung zwischen der Standardnormalverteilung und der Chi-Quadrat-Verteilung ist bekannt. Ich habe mich allerdings gefragt, ob es eine Transformation gibt, die von einer zurück zu einer Standardnormalverteilung führen kann.χ2(1)

Es ist leicht zu erkennen, dass die Quadratwurzeltransformation nicht funktioniert, da ihr Bereich nur aus positiven Zahlen besteht. Ich glaube, die resultierende Verteilung wird als gefaltete Normalen bezeichnet . Gibt es einen cleveren Trick, der hier funktioniert?

JohnK
quelle

Antworten:

9

Eine Möglichkeit ist , die Tatsache auszunutzen , daß für jede kontinuierliche Zufallsvariable X dann FX(X) ist gleichförmig (rechteckig) auf [0, 1]. Dann kann eine zweite Transformation unter Verwendung einer inversen CDF eine kontinuierliche Zufallsvariable mit der gewünschten Verteilung erzeugen - nichts Besonderes an Chi, das hier normal ist. @Glen_b hat mehr Details in seiner Antwort.

Wenn Sie etwas Seltsames und Wundervolles tun möchten, können Sie zwischen diesen beiden Transformationen eine dritte Transformation anwenden, die einheitliche Variablen auf [0, 1] auf andere einheitliche Variablen auf [0, 1] abbildet. Zum Beispiel oder für jedes oder sogar für und für .u1uk R u u + 0,5 u [ 0 , 0,5 ] u 1 - u u ( 0,5 , 1 ]uu+kmod1kRuu+0.5u[0,0.5]u1uu(0.5,1]

Wenn wir jedoch eine monotone Transformation von nach wünschen, müssen die entsprechenden Quantile aufeinander abgebildet werden. Die folgenden Grafiken mit schattierten Dezilen veranschaulichen den Punkt. Beachten Sie, dass ich die Anzeige der Dichte nahe Null . Y ~ N ( 0 , 1 ) & khgr; 2 1Xχ12YN(0,1)χ12

Chi-Quadrat-Verteilung mit einem Freiheitsgrad und Dezilen im Schatten Standardnormalverteilung mit schattierten Dezilen

Für die monoton zunehmende Transformation, die Dunkelrot auf Dunkelrot usw. abbildet, würden Sie . Für die monoton abnehmende Transformation, die Dunkelrot auf Dunkelblau usw. abbildet, können Sie das Mapping bevor Sie die inverse CDF anwenden, also . So sieht die Beziehung zwischen und für die zunehmende Transformation aus, die auch einen Hinweis darauf gibt, wie gebündelt die Quantile für die Chi-Quadrat-Verteilung ganz links waren!u 1 - u Y = Φ - 1 ( 1 - F χ 2 1 ( X ) ) X Y.Y=Φ1(Fχ12(X))u1uY=Φ1(1Fχ12(X))XY

Abbildung vom Chi-Quadrat mit 1 df auf Standardnormal

Wenn Sie die Quadratwurzeltransformation auf , können Sie eine Rademacher-Zufallsvariable . Die Rademacher-Verteilung ist diskret mit W P ( W = - 1 ) = P ( W = 1 ) = 1Xχ12W

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

Es ist im Wesentlichen ein Bernoulli mit , das durch Strecken um einen Skalierungsfaktor von zwei und anschließendes Subtrahieren von eins transformiert wurde. Jetzt ist Standard normal - effektiv entscheiden wir zufällig, ob wir die positive oder negative Wurzel ziehen wollen! Wp=12WX

Es betrügt ein wenig, da es wirklich eine Transformation von nicht allein. Aber ich fand es erwähnenswert, da es im Geiste der Frage zu sein scheint und ein Strom von Rademacher-Variablen leicht zu generieren ist. Übrigens wären und ein weiteres Beispiel für unkorrelierte, aber abhängige Normalvariablen. Hier ist eine Grafik, die zeigt, wo die Dezile des ursprünglichen abgebildet werden. Denken Sie daran, dass auf der rechten Seite von Null und auf der linken Seite . Beachten Sie, wie Werte um Null aus niedrigen Werten von und die Schwänze (sowohl das linke als auch das rechte Extrem) aus den großen Werten von werdenX Z W Z χ 2 1 W = 1 W = - 1 X X.(W,X)XZWZχ12W=1W=1XX .

Abbildung des Chi-Quadrats auf die Normalverteilung

Code für Diagramme ( siehe auch diesen Beitrag zum Stapelüberlauf ):

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")
Silberfisch
quelle
1
Das ist ein sehr kluger Trick, ich mag es :). Vielen Dank.
JohnK
5

[ Nun, ich konnte das Duplikat nicht finden, von dem ich dachte, dass es es gibt; Das nächste, was ich kam, war die Erwähnung der Tatsache gegen Ende dieser Antwort . (Es ist möglich, dass es nur in Kommentaren zu einer Frage besprochen wurde, aber vielleicht gab es ein Duplikat und ich habe es einfach verpasst.) Ich werde hier doch eine Antwort geben. ]]

Wenn ein Chi-Quadrat mit als CDF ist und das cdf der Normalen ist, dann ist normal. Dies ist offensichtlich, da die Wahrscheinlichkeitsintegraltransformation von eine Uniform ergibt und normal ist. Wir haben also eine monotone Transformation des Chi-Quadrats zum Normalen.F ΦXFΦΦ1(F(X))XΦ1(U)

Der gleiche Trick funktioniert mit zwei beliebigen kontinuierlichen Variablen.

Dies gibt uns ein gutes Gegenbeispiel zu den verschiedenen Versionen der Frage "Sind unkorrelierte Normalen Y, Z bivariate Normalen?" das kommt auf, denn wenn Z Standardnormal ist und , dann sind beide normal und sie sind nicht korreliert, aber sie sind definitiv abhängig (und haben eine ziemlich hübsche bivariate Beziehung)Y=Φ1(Fχ12(Z2))Z,Y

Die Transformation :T(z)=Φ1(Fχ12(z2))

Geben Sie hier die Bildbeschreibung ein

Histogramm einer großen Stichprobe von Werten:Z+Y

Geben Sie hier die Bildbeschreibung ein

Glen_b -Reinstate Monica
quelle
Könnten Sie Ihrer Antwort nur ein paar Worte hinzufügen, um zu erklären, warum und nicht korreliert sind? Es ist mir überhaupt nicht klar, aber dann sehe ich die Dinge wahrscheinlich einfach nicht aus der richtigen Perspektive. Y.ZY
Dilip Sarwate
@Dilip ist bei 0 zentriert und die Transformation von wir anwenden, um zu erhalten, ist um 0 symmetrisch. Also ist . Z Y E ( Y Z ) = 0ZZYE(YZ)=0
Glen_b -State Monica
Nun, wir müssen etwas mehr zeigen, um sicherzugehen, dass E (YZ) zum Beispiel endlich ist, aber das wäre kein Problem.
Glen_b -Reinstate Monica
Die Abbildung ist auch in den normalen Dichtediagrammen in meiner Antwort gut zu sehen - die untere (rot in der Mitte) ist der oberen (rot links) zugeordnet, wobei rot auf rot und blau abgebildet ist zu blau. Es ist eine hübsche Beziehung! zT(z)
Silverfish