Apakah ini benar ? (Menghasilkan Gaussian Terpotong-norma-multivarian)


10

Jika XRn, XN(0_,σ2I) yaitu,

fX(x)=1(2πσ2)n/2exp(-||x||22σ2)

Saya ingin versi analog dari distribusi terpotong-normal dalam kasus multivarian.

Lebih tepatnya, saya ingin menghasilkan norma-dibatasi (untuk nilai Sebuah ) multivariat Gaussian Y st

fY(y)={c.fX(y), if ||y||a0, otherwise .
dimana c=1Prob{||X||a}

Sekarang saya perhatikan yang berikut:

Jika x=(x1,x2,,xn) , ||x||Sebuah

|xn|Tmax(0,(a21n1xi2))

Oleh karena itu dengan memilih sebagai sampel , orang dapat membatasi sebagai sampel dari distribusi terpotong-normal (mengikuti distribusi Gaussian-tail ) , kecuali untuk tanda yang dipilih secara acak dengan probabilitas . x nT N T ( 0 , σ 2 ) 1 / 2x1,,xn1xnTNT(0,σ2)1/2

Sekarang pertanyaan saya adalah ini,

Jika saya membuat setiap sampel vektor dari( X 1 , ... , X n )(x1,,xn)(X1,,Xn) sebagai,

x1,,xn1N(0,σ2)

dan

Z 1{ ± 1 w.p. 1 / 2 } Z 2 ~ N T ( 0 , σ 2 ) T ( x 1 , ... , x n - 1 ) xn=Z1Z2  mana, , , (yaitu a RV terpotong-skalar-normal dengan Z1{±1 w.p. 1/2}Z2NT(0,σ2)T(x1,,xn1)max(0,(a21n1xi2))

Akankah menjadi norma-dibatasi ( ) Gaussian multivarian? (Yaitu sama dengan didefinisikan di atas). Bagaimana saya harus memverifikasi? Ada saran lain jika ini bukan jalannya?a Y(X1,X2,,Xn)aY

EDIT:

Berikut ini adalah sebar-plot poin dalam kasus 2D dengan norma terpotong ke nilai di atas "1" Gaussian multivariat terpotong-normal

Catatan: Ada beberapa jawaban bagus di bawah ini, tetapi alasan mengapa proposal ini salah tidak ada. Sebenarnya, itulah poin utama dari pertanyaan ini.


1
@ Xi'an Terima kasih atas permintaan & minat Anda. Inilah alasan saya untuk poin Anda: Algoritme yang dimaksud membutuhkan RVs , yang merupakan Gaussians dan Gaussian yang Dipotong saat mereka dilihat per sampel ; lebih khusus, salah satu distribusi bervariasi setiap sampel. Mereka bukan marginal masing-masing. Karena, setiap muncul dalam dua istilah: dan ; dan jelas waktu bervariasi karena ambang pemotongan bervariasi untuk setiap sampel. Bukti penguraian yang Anda berikan memiliki masalah dalam arti yang persis sama. Marginal tidak tersedia. n - 1 x i , i = 1 , ... , n - 1 x i x n x nX1Xnn1xi,i=1,,n1xixnxn
Mencintai Probabilitas

Algoritma (salah) Anda menghasilkan pertama dan kemudian diberikan . Oleh karena itu, generasi pertama adalah dari marginal dan generasi kedua dari yang bersyarat. Bukti saya menunjukkan bahwa marginal bukan distribusi Gaussian (n-1) dimensi.
X1,,Xn1N(0,σ2)
XnNT(0,σ2)
X1,,Xn1
Xi'an

@ Xi'an Conditional Gaussian bukan berarti Marginal Gaussian !!
Loves Probability

@ Xi'an Oke, maksud saya adalah ini. Ketika dihasilkan sebagai Gaussians, dan istilah selanjutnya bergantung pada nilai-nilai ini, marginal dari tidak akan menjadi Gaussians. Apa yang Anda katakan persis sama. Mereka mungkin "Gaussian Kondisional" tapi jelas bukan "Gaussian marginal". Komentar saya sebelumnya berarti itu. X1,,Xn1X1,,Xn1
Loves Probability

1
@ Xi'an Terima kasih banyak atas jawaban pasien Anda. Saya akhirnya mengerti kesalahan saya dengan rangsangan Anda, dan saya juga telah menulis jawaban terperinci saya yang menjelaskan hal yang sama. Tapi maaf, harap Anda tidak keberatan, saya mungkin harus menerima jawaban Whuber untuk penjelasan rinci yang membantu dalam benar-benar menyelesaikan masalah.
Loves Probability

Jawaban:


11

Distribusi normal multivariat adalah simetris berbentuk bola. Distribusi yang Anda cari memotong radius di bawah pada . Karena kriteria ini hanya bergantung pada panjang , distribusi terpotong tetap simetris bulat. Karena tidak tergantung pada sudut bulatdan memiliki distribusi , karena itu Anda dapat menghasilkan nilai-nilai dari distribusi dipotong hanya dalam beberapa langkah sederhana:ρ = | | X | | 2 a X ρ X / | | X | | ρXρ=||X||2aXρX/||X||χ ( n )ρσχ(n)

  1. Hasilkan .XN(0,In)

  2. Hasilkan sebagai akar kuadrat dari a terpotong di .χ 2 ( d ) ( a / σ ) 2Pχ2(d)(a/σ)2

  3. Biarkan.Y=σPX/||X||

Pada langkah 1, diperoleh sebagai urutan realisasi independen dari variabel normal standar.dXd

Pada langkah 2, adalah mudah dihasilkan dengan membalik fungsi kuantil dari Distribusi: menghasilkan variabel seragam didukung dalam kisaran (dari quantiles) antara dan dan set .PF1χ2(d)UF((a/σ)2)1P=F(U)

Berikut adalah histogram realisasi independen seperti σ P untuk σ = 3 dalam n = 11 dimensi, terpotong di bawah pada a = 7 . Butuh sekitar satu detik untuk menghasilkan, membuktikan efisiensi algoritma.105σPσ=3n=11a=7

Angka

Kurva merah adalah kepadatan distribusi terpotong diskalakan dengan σ = 3 . Kecocokan yang dekat dengan histogram adalah bukti validitas teknik ini.χ(11)σ=3

Untuk mendapatkan intuisi untuk pemotongan, pertimbangkan case , σ = 1 in n = 2 dimensi. Berikut adalah sebar dari Y 2 terhadap Y 1 (untuk 10 4 realisasi independen). Ini jelas menunjukkan lubang di jari - jari a :a=3σ=1n=2Y2Y1104a

Gambar 2

Akhirnya, perhatikan bahwa (1) komponen harus memiliki distribusi yang identik (karena simetri bola) dan (2) kecuali ketika a = 0 , distribusi umum tersebut tidak Normal. Bahkan, sebagai sebuah tumbuh besar, penurunan yang cepat dari (univariat) distribusi normal menyebabkan sebagian besar probabilitas multivariat berbentuk bola dipotong yang normal untuk cluster dekat permukaan n - 1 -sphere (jari-jari a ). Distribusi marginal karenanya harus mendekati Beta simetris berskala ( ( n - 1 ) / 2 , ( n -Xia=0an1a distribusi terkonsentrasi dalam interval ( - a , a ) . Ini terlihat dalam sebar sebelumnya, di mana a = 3 σ sudah besar dalam dua dimensi: titik membatasi cincin (a 2 - 1- bola) dari jari-jari 3 σ .((n1)/2,(n1)/2)(a,a)a=3σ213σ

Berikut adalah histogram distribusi marjinal dari simulasi ukuran dalam 3 dimensi dengan a = 10 , σ = 1 (untuk yang mendekati Beta ( 1 , 1 ) distribusi seragam):1053a=10σ=1(1,1)

Gambar 3

Karena marjinal pertama dari prosedur yang dijelaskan dalam pertanyaan adalah normal (berdasarkan konstruksi), prosedur tersebut tidak dapat benar.n1


RKode berikut menghasilkan angka pertama. Hal ini dibangun untuk langkah paralel 1-3 untuk menghasilkan . Hal ini dimodifikasi untuk menghasilkan angka kedua dengan mengubah variabel , , , dan kemudian mengeluarkan perintah plot setelah dihasilkan.Yadnsigmaplot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010")y

Generasi dimodifikasi dalam kode untuk resolusi numerik yang lebih tinggi: kode benar-benar menghasilkan 1 - U dan menggunakan itu untuk menghitung P .U1UP

Teknik yang sama dalam mensimulasikan data menurut algoritma yang diduga, meringkasnya dengan histogram, dan melapiskan histogram dapat digunakan untuk menguji metode yang dijelaskan dalam pertanyaan. Ini akan mengkonfirmasi bahwa metode tidak berfungsi seperti yang diharapkan.

a <- 7      # Lower threshold
d <- 11     # Dimensions
n <- 1e5    # Sample size
sigma <- 3  # Original SD
#
# The algorithm.
#
set.seed(17)
u.max <- pchisq((a/sigma)^2, d, lower.tail=FALSE)
if (u.max == 0) stop("The threshold is too large.")
u <- runif(n, 0, u.max)
rho <- sigma * sqrt(qchisq(u, d, lower.tail=FALSE)) 
x <- matrix(rnorm(n*d, 0, 1), ncol=d)
y <- t(x * rho / apply(x, 1, function(y) sqrt(sum(y*y))))
#
# Draw histograms of the marginal distributions.
#
h <- function(z) {
  s <- sd(z)
  hist(z, freq=FALSE, ylim=c(0, 1/sqrt(2*pi*s^2)),
       main="Marginal Histogram",
       sub="Best Normal Fit Superimposed")
  curve(dnorm(x, mean(z), s), add=TRUE, lwd=2, col="Red")
}
par(mfrow=c(1, min(d, 4)))
invisible(apply(y, 1, h))
#
# Draw a nice histogram of the distances.
#
#plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010") # For figure 2
rho.max <- min(qchisq(1 - 0.001*pchisq(a/sigma, d, lower.tail=FALSE), d)*sigma, 
               max(rho), na.rm=TRUE)
k <- ceiling(rho.max/a)
hist(rho, freq=FALSE, xlim=c(0, rho.max),  
     breaks=seq(0, max(rho)+a, by=a/ceiling(50/k)))
#
# Superimpose the theoretical distribution.
#
dchi <- function(x, d) {
  exp((d-1)*log(x) + (1-d/2)*log(2) - x^2/2 - lgamma(d/2))
}
curve((x >= a)*dchi(x/sigma, d) / (1-pchisq((a/sigma)^2, d))/sigma, add=TRUE, 
      lwd=2, col="Red", n=257)

1
Itu jawaban yang bagus! Tapi, bisakah Anda juga menjelaskan mengapa proposal yang diajukan gagal? (Jawaban Xi'an tidak cukup memuaskan, saya melihat beberapa masalah dengan argumennya misalnya ketika dia mengintegrasikan)
Loves Probability

1
Terima kasih banyak. Tetapi, bolehkah saya juga meminta Anda untuk menjawab komentar pertama saya di atas? Sepertinya, proposal saya juga memberikan histogram yang cukup dekat. Saya bingung!! Dimana kesalahannya? Perhatikan bahwa, ini adalah poin utama dari pertanyaan dan JIKA BENAR , metode ini hanya membutuhkan satu sampel "terpotong-Gaussian" PLUS Dengan ketersediaan algoritma cepat yang ada, itu mengarah pada penghematan besar (menghindari pembagian dan perkalian, di samping menghindari kebutuhan yang relatif lebih kompleks terpotong-ChiSquare)
Loves Probability

2
Sejauh yang saya tahu, Anda mengusulkan menggambar iid dari distribusi Normal dan X n dari Normal terpotong dua sisi. Itu jelas bukan distribusi MVN terpotong, seperti sebar untuk n = 2 akan dengan mudah mengungkapkan, bahwa saya yakin saya tidak dapat memahami bagian itu pertanyaan Anda. Lebih umum, beban pertanyaan yang bertanya mengapa sesuatu tidak tidak bekerja adalah pada penanya untuk memberikan bukti bahwa itu tidak bekerja. Mungkin jika Anda memberikan bukti seperti itu, sifat pertanyaan Anda akan menjadi jelas. X1,,Xn1Xnn=2
whuber

1
Terima kasih untuk detailnya. Saya menambahkan plot pencar 2-D seperti yang Anda katakan dan memperbaiki beberapa kalimat. Ngomong-ngomong, maaf aku tidak benar-benar bermaksud untuk mentransfer seluruh beban pembuktian kepadamu. Proposal saya tampaknya berfungsi dengan baik dengan semua pemeriksaan sederhana, oleh karena itu saya ingin tahu mengapa itu salah, yang juga merupakan tujuan utama dari pertanyaan ini.
Loves Probability

1
Melihat distribusi marginal adalah cara paling mudah yang bisa saya temukan untuk menggambarkan perbedaan dalam prosedur. Saya menambahkan angka dan beberapa kode untuk menunjukkan marginal ini.
whuber

7

Saya telah menulis ini dengan asumsi bahwa Anda tidak ingin ada poin yang memiliki || y || > a, yang merupakan analog dari pemotongan satu dimensi yang biasa. Namun, Anda telah menulis bahwa Anda ingin agar poin tetap memiliki | y || > = a dan membuang yang lain. Namun demikian, penyesuaian yang jelas untuk solusi saya dapat dilakukan jika Anda benar-benar ingin mempertahankan poin | | | | > = a.

Cara paling mudah, yang kebetulan merupakan teknik yang sangat umum, adalah dengan menggunakan Acceptance-Rejection https://en.wikipedia.org/wiki/Rejection_sampling . Ini akan cukup cepat selama Prob (|| X ||> a) cukup rendah, karena dengan begitu tidak akan ada banyak penolakan.

Hasilkan nilai sampel x dari Multivariate Normal yang tidak dibatasi (meskipun masalah Anda menyatakan bahwa Multivariate Normal berbentuk bulat, teknik ini dapat diterapkan meskipun tidak). Jika || x || <= a, terima, yaitu, gunakan x, jika tidak tolak dan hasilkan sampel baru. Ulangi proses ini sampai Anda memiliki sampel yang diterima sebanyak yang Anda butuhkan. Efek dari penerapan prosedur ini adalah untuk menghasilkan y sedemikian rupa sehingga densitasnya adalah c * f_X (y), jika || y || <= a, dan 0 jika || y || > a, per koreksi saya ke bagian pembukaan pertanyaan Anda. Anda tidak perlu menghitung c; efeknya ditentukan secara otomatis oleh algoritma berdasarkan frekuensi penolakan sampel.


3
+1 Saya suka bahwa proposal Anda bekerja dengan MVN non-bola simetris, yang telah Anda jelaskan dengan jelas di mana itu akan efektif, dan bahwa Anda menekankan perlunya menilai tingkat penolakan ketika memutuskan apakah akan menggunakan sampel penolakan.
whuber

2
Ya, dan juga perhatikan bahwa itu dapat bekerja untuk wilayah penerimaan yang dibentuk secara sewenang-wenang, tidak hanya 2-norma berada di atas atau di bawah ambang batas seperti di sini.
Mark L. Stone

5

fX(x)1(2πσ2)n/2exp(||x||22σ2)I||x||>a=1(2πσ2)n/2exp(x12++xn22σ2)I||x||>a
fX(x)1(2πσ2)(n1)/2exp(||xn||22σ2)1(2πσ2)1/2exp(xn22σ2)I||x||>a
=1(2πσ2)(n1)/2exp(||xn||22σ2)1(2πσ2)1/2exp(xn22σ2)I||xn||2+xn2>a2
=P(Xn2>a2||xn||2)(2πσ2)(n1)/2exp(||xn||22σ2)
×P(Xn2>a2||xn||2)1(2πσ2)1/2exp(xn22σ2)Ixn2>a||xn||2
fXn(xn)P(Xn2>a2||xn||2)(2πσ2)(n1)/2exp(||xn||22σ2)
xn
  1. XnXn
  2. XnP(Xn2>a2||xn||2)

Satu-satunya cara saya dapat melihat dalam mengambil keuntungan dari properti ini adalah menjalankan Gibbs sampler, satu komponen pada satu waktu, menggunakan distribusi bersyarat normal terpotong.


1
fX(x)

3

Pertanyaannya berasal dari ide untuk menggunakan - dekomposisi kondisional dasar dari distribusi bersama - untuk menggambar sampel vektor.

X

Masalah(||X||>Sebuah)TYX.saya||X||>Sebuah

fY(y)=1T1(2πσ2)n/2exp(||y||22σ2)I||y||>a=1T1(2πσ2)n/2exp(y12++yn22σ2)I||y||>a=(i=1n112πσ2exp(yi22σ2))(1T12πσ2exp(yn22σ2)I||y||>a)=(i=1n112πσ2exp(yi22σ2))Gaussians(1T12πσ2exp(yn22σ2)Iyn2>(a2y12yn12))Truncated Gaussian??

Jawaban terpendek adalah bahwa faktor terakhir bukanlah Gaussian terpotong, (lebih penting) bahkan bukan distribusi.


Inilah penjelasan terperinci mengapa faktorisasi di atas itu sendiri memiliki beberapa kelemahan mendasar. Dalam satu kalimat: setiap faktorisasi bersyarat dari distribusi bersama yang diberikan harus memenuhi beberapa sifat yang sangat mendasar, dan faktorisasi di atas tidak memuaskan mereka (Lihat di bawah).

fXY(x,y)=fX(x)fY|X(y|x)fX(x)XfY|X(y|x)Y

  1. f(x,y)fX(x)
  2. fY|X(y|x)x

Yn|(Y1Yn1)

(Y1Yn1)


Proposal algoritma semacam itu mungkin merupakan hasil dari kesalahpahaman berikut: Setelah distribusi secara alami keluar dari distribusi bersama (seperti Gaussians di atas), itu mengarah ke faktorisasi bersyarat. ---- Tidak! ---- Faktor (kedua) lainnya juga harus baik.


Catatan: Ada jawaban yang bagus oleh @whuber sebelumnya, yang sebenarnya memecahkan masalah menghasilkan norma Gaussian multivarian terpotong. Saya menerima jawabannya. Jawaban ini hanya untuk menjelaskan & berbagi pemahaman saya sendiri dan asal usul pertanyaan.


2
+1 Terima kasih telah berbagi pemikiran Anda: mereka menambah wawasan berharga ke utas ini.
whuber
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.