Transformasi Chi-kuadrat ke Distribusi normal

8

Hubungan antara distribusi normal normal dan distribusi kuadrat diketahui. Saya bertanya-tanya, apakah ada transformasi yang dapat mengarah dari kembali ke distribusi normal standar?χ2(1)

Dapat dengan mudah dilihat bahwa transformasi akar kuadrat tidak berfungsi karena jangkauannya hanya angka positif. Saya percaya distribusi yang dihasilkan disebut normal terlipat . Apakah ada trik pintar yang berhasil di sini?

JohnK
sumber

Jawaban:

9

Salah satu opsi adalah untuk mengeksploitasi fakta bahwa untuk setiap variabel acak kontinu maka seragam (persegi panjang) pada [0, 1]. Kemudian transformasi kedua menggunakan CDF terbalik dapat menghasilkan variabel acak kontinu dengan distribusi yang diinginkan - tidak ada yang istimewa tentang chi kuadrat ke normal di sini. @ Glen_b memiliki lebih detail dalam jawabannya.XFX(X)

Jika Anda ingin melakukan sesuatu yang aneh dan luar biasa, di antara kedua transformasi tersebut Anda bisa menerapkan transformasi ketiga yang memetakan variabel seragam pada [0, 1] ke variabel seragam lainnya pada [0, 1]. Misalnya, , atau untuk setiap , atau bahkan untuk dan for .u1uuu+kmod1kRuu+0.5u[0,0.5]u1uu(0.5,1]

Tetapi jika kita ingin transformasi monoton dari ke maka kita perlu kuantil yang sesuai untuk dipetakan satu sama lain. Grafik berikut dengan desil berbayang menggambarkan titik; perhatikan bahwa saya harus memotong tampilan kerapatan mendekati nol.Xχ12YN(0,1)χ12

Chi kuadrat distribusi dengan satu derajat kebebasan dan desil yang diarsir Distribusi normal standar dengan desil yang diarsir

Untuk transformasi yang meningkat secara monoton, yang memetakan merah gelap menjadi merah gelap dan seterusnya, Anda akan menggunakan . Untuk transformasi yang menurun secara monoton, yang memetakan merah gelap menjadi biru tua dan seterusnya, Anda dapat menggunakan pemetaan sebelum menerapkan CDF terbalik, jadi . Inilah hubungan antara dan untuk transformasi yang semakin meningkat, yang juga memberikan petunjuk bagaimana mengelompokkan kuantil untuk distribusi chi-kuadrat berada di paling kiri!Y=Φ1(Fχ12(X))u1uY=Φ1(1Fχ12(X))XY

Pemetaan dari chi kuadrat dengan 1 df ke standar normal

Jika Anda ingin menyelamatkan akar kuadrat transformasi pada , salah satu pilihan adalah dengan menggunakan Rademacher variabel acak . Distribusi Rademacher adalah diskrit, denganXχ12W

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

Ini pada dasarnya adalah Bernoulli dengan yang telah diubah oleh peregangan dengan faktor skala dua kemudian mengurangi satu. Sekarang adalah standar normal - secara efektif kami memutuskan secara acak apakah akan mengambil root positif atau negatif!hal=12WX

Ini sedikit curang karena ini benar-benar merupakan transformasi dari bukan saja. Tapi saya pikir itu layak disebutkan karena tampaknya dalam semangat pertanyaan, dan aliran variabel Rademacher cukup mudah untuk dihasilkan. Kebetulan, dan akan menjadi contoh lain dari variabel normal tidak berkorelasi tetapi tergantung. Berikut adalah grafik yang menunjukkan di mana decile dari dokumen asli dipetakan ke; ingat bahwa apa pun di sisi kanan nol adalah di mana dan sisi kiri adalah . Perhatikan bagaimana nilai di sekitar nol dipetakan dari nilai rendah dan ekor (ekstrem kiri dan kanan) dipetakan dari nilai besar(W,X)XZWZχ12W=1W=-1XX .

Memetakan chi-squared ke distribusi normal

Kode untuk plot ( lihat juga pos Stack Overflow ini ):

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")
Gegat
sumber
1
Ini adalah trik yang sangat pintar, saya suka :). Terima kasih.
JohnK
5

[ Yah, saya tidak bisa menemukan duplikat yang saya pikir ada; yang paling dekat dengan saya adalah penyebutan fakta menjelang akhir jawaban ini . (Mungkin saja itu hanya dibahas dalam komentar pada beberapa pertanyaan, tapi mungkin ada duplikat dan saya hanya melewatkannya.) Bagaimanapun juga, saya akan memberikan jawaban. ]

Jika X adalah chi-square, dengan Fsebagai CDF-nya, dan adalah cdf dari normal, maka normal. Ini jelas karena kemungkinan transformasi integral memberikan seragam, dan normal. Jadi kita memiliki transformasi monotonik dari kuadrat-ke normal.ΦΦ-1(F(X))XΦ-1(U)

Trik yang sama berfungsi dengan dua variabel kontinu.

Ini memberi kita contoh tandingan yang rapi untuk berbagai versi pertanyaan "apakah Y tidak normal berkorelasi, Z normal bivariat?" yang muncul, karena jika Z adalah standar normal dan , maka keduanya normal dan tidak berkorelasi, tetapi keduanya pasti tergantung (dan memiliki hubungan bivariat yang cukup cantik)Y=Φ-1(Fχ12(Z2))Z,Y

Transformasi :T(z)=Φ-1(Fχ12(z2))

masukkan deskripsi gambar di sini

Histogram sampel besar nilai :Z+Y

masukkan deskripsi gambar di sini

Glen_b -Reinstate Monica
sumber
Bisakah Anda menambahkan beberapa kata saja ke jawaban Anda untuk menjelaskan mengapa dan tidak berkorelasi? Sama sekali tidak jelas bagi saya, tetapi kemudian, mungkin saya hanya tidak melihat sesuatu dari perspektif yang benar. ZY
Dilip Sarwate
@Dilip berpusat pada 0 dan transformasi kita terapkan untuk mendapatkan simetris tentang 0. Jadi . ZZYE(YZ)=0
Glen_b -Reinstate Monica
Yah, kita perlu menunjukkan sedikit lebih untuk memastikan E (YZ) terbatas, misalnya, tapi itu tidak akan menimbulkan masalah.
Glen_b -Reinstate Monica
Pemetaan zT(z)juga dapat dilihat dengan baik di plot kerapatan normal dalam jawaban saya - yang di bawah (merah di tengah) memetakan ke atas (merah di kiri), dengan merah dipetakan ke merah dan biru dipetakan ke biru. Itu adalah hubungan yang cantik!
Silverfish