Uji apakah distribusi multidimensi adalah sama

15

Katakanlah saya memiliki dua atau lebih populasi sampel vektor bernilai kontinu n-dimensi. Apakah ada cara nonparametrik untuk menguji apakah sampel ini dari distribusi yang sama? Jika demikian, apakah ada fungsi dalam R atau python untuk ini?

mbc
sumber
2
Tes Kolmogorov-Smirnov adalah alat non-parametrik khas untuk menguji apakah dua distribusi adalah sama. Saya tidak terbiasa dengan itu, tetapi wikipedia merujuk pada Justel, A., Peña, D. dan Zamar, R. (1997) Sebuah uji multivariat Kolmogorov-Smirnov tentang goodness of fit, Statistics & Probability Letters, 35 (3), 251-259 . untuk perpanjangan multivarian dari tes ini.
Makro
1
Ada pertanyaan CV yang membahas hal ini dalam dua dimensi: stats.stackexchange.com/questions/25946/… . Bahkan dalam dua dimensi, tidak ada cara standar untuk melakukannya.
Flounderer

Jawaban:

8

Saya baru saja melakukan banyak penelitian pada multivariat dua tes sampel ketika saya menyadari bahwa tes Kolmogorov-Smirnov bukan multivariat. Jadi saya melihat tes Chi, kriteria Hotelling's T ^ 2, Anderson-Darling, Cramer-von Mises, Shapiro-Wilk, dll. Anda harus berhati-hati karena beberapa tes ini bergantung pada vektor yang dibandingkan dengan yang sama. panjangnya. Lainnya hanya digunakan untuk menolak asumsi normalitas, bukan untuk membandingkan dua distribusi sampel.

Solusi utama tampaknya membandingkan fungsi distribusi kumulatif dua sampel dengan semua kemungkinan pemesanan yang, seperti yang Anda duga, sangat intensif secara komputasi, berdasarkan urutan menit untuk sekali pakai sampel yang berisi beberapa ribu catatan:

https://cran.r-project.org/web/packages/Peacock.test/Peacock.test.pdf

Seperti yang dinyatakan oleh dokumentasi Xiao, tes Fasano dan Franceschini adalah varian dari tes Peacock:

http://adsabs.harvard.edu/abs/1987MNRAS.225..155F

Tes Fasano dan Franceschini secara khusus dimaksudkan untuk tidak terlalu intensif secara komputasi, tetapi saya belum menemukan implementasi dari pekerjaan mereka di R.

Bagi Anda yang ingin menjelajahi aspek komputasi Peacock versus Fasano dan uji Franceschini, lihat Algoritma yang efisien secara komputasi untuk uji Kolmogorov-Smirnov dua dimensi

L Fischman
sumber
Apakah distribusi kumulatif untuk multivariat?
Aksakal
2
F(x,y)=P(X<x,Y<y)pF(x,y)=i=1nI(Xi<x,Yi<y)/n
2
Bagus dan ringkas, AdamO. Tes Peacock tampaknya konyol karena tidak melakukan pemangkasan, seperti yang dilakukan Fasano dan Franceschini. Mari berharap seseorang memutuskan untuk membuat kode suatu hari untuk R. Ini sangat membantu untuk kecepatan ketika Anda memiliki catatan lebih lanjut terurai, mungkin oleh variabel kategori, dan ingin melihat apakah dekomposisi Anda sebenarnya diambil dari distribusi yang berbeda.
L Fischman
1

Paket R np (non-parametrik) memiliki tes untuk kesetaraan kepadatan data kontinu dan kategorikal menggunakan kepadatan kuadrat terintegrasi. Li, Maasoumi, dan Racine (2009)

Serta np pdf bersyarat di bagian 6 .

ran8
sumber
1

Ya, ada cara nonparametrik pengujian jika dua sampel multivariat berasal dari distribusi bersama yang sama. Saya akan menyebutkan detail tidak termasuk yang disebutkan oleh L Fischman . Masalah dasar yang Anda tanyakan dapat disebut sebagai 'Dua-Sampel-Masalah' dan sejumlah penelitian sedang berlangsung saat ini di jurnal seperti Journal of Machine Learning Research dan Annals of Statistics dan lainnya. Dengan sedikit pengetahuan saya tentang masalah ini, saya bisa memberikan arahan sebagai berikut

  • Salah satu cara baru-baru ini menguji set sampel multivarian adalah melalui Maximum Mean Discrepancy (MMD); literatur terkait: Arthur Gretton 2012 , Bharath 2010 dan lainnya. Metode terkait lainnya dapat ditemukan dalam artikel penelitian ini. Jika tertarik, silakan baca artikel-artikel yang mengutip artikel-artikel ini, untuk mendapatkan gambaran besar tentang keadaan terkini dalam masalah ini. Dan YA, untuk ini ada implementasi R.

Jika minat Anda adalah untuk membandingkan berbagai set titik (set sampel) dengan set titik referensi, untuk melihat seberapa dekat mereka mendekati set titik referensi, Anda dapat menggunakan f-divergence .

  • Satu kasus khusus yang populer dari ini adalah Kullback-Leibler Divergence . Ini digunakan dalam banyak rezim pembelajaran mesin. Ini lagi dapat dilakukan dengan dua cara np; melalui pendekatan jendela parzen (kernel) dan penduga PDF K-Nearest Neighbor.

Mungkin juga ada cara lain untuk didekati, jawaban ini sama sekali bukan perlakuan yang komprehensif terhadap pertanyaan Anda;)

Krishna
sumber