Menguji keseragaman adalah sesuatu yang umum, namun saya bertanya-tanya apa metode untuk melakukannya untuk awan titik multidimensi.
Menguji keseragaman adalah sesuatu yang umum, namun saya bertanya-tanya apa metode untuk melakukannya untuk awan titik multidimensi.
Jawaban:
Metode standar menggunakan fungsi K Ripley atau sesuatu yang diturunkan darinya seperti fungsi L. Ini adalah plot yang merangkum jumlah rata-rata tetangga dari titik-titik sebagai fungsi jarak maksimum maksimum ( ). Untuk distribusi yang seragam dalam dimensi n , rata-rata itu harus berperilaku seperti ρ n : dan itu akan selalu berlaku untuk ρ kecil . Ini berangkat dari perilaku seperti itu karena pengelompokan, bentuk-bentuk lain dari non-kemerdekaan spasial, dan efek tepi (di mana sangat penting untuk menentukan wilayah yang disampel oleh titik-titik). Karena komplikasi ini - yang menjadi lebih buruk seperti nmeningkat - di sebagian besar aplikasi band kepercayaan didirikan untuk fungsi null K melalui simulasi dan fungsi K yang diamati overplotted untuk mendeteksi kunjungan. Dengan beberapa pemikiran dan pengalaman, kunjungan dapat ditafsirkan dalam hal kecenderungan untuk berkelompok atau tidak pada jarak tertentu.
Contoh fungsi K dan fungsi L yang terkait dari Dixon (2001), ibid. Fungsi L dikonstruksi sehingga untuk distribusi yang seragam adalah garis horizontal pada nol: referensi visual yang baik. Garis putus-putus adalah pita kepercayaan untuk bidang studi khusus ini, dihitung melalui simulasi. Jejak abu-abu solid adalah fungsi L untuk data. Ekskursi positif pada jarak 0-20 m menunjukkan beberapa pengelompokan pada jarak ini.
Saya memposting contoh yang berfungsi dalam menanggapi pertanyaan terkait di /stats//a/7984 , di mana plot berasal dari fungsi-K untuk distribusi seragam pada manifold dua dimensi yang tertanam dalam adalah diperkirakan dengan simulasi.
Dalam R
, fungsi spatstatkest
dan k3est
menghitung fungsi-K untuk dan n = 3 , masing-masing. Di lebih dari 3 dimensi Anda mungkin sendirian, tetapi algoritmenya akan persis sama. Anda dapat melakukan perhitungan dari matriks jarak sebagaimana dihitung (dengan efisiensi sedang) oleh .stats::dist
Ternyata pertanyaannya lebih sulit dari yang saya kira. Tetap saja, saya mengerjakan pekerjaan rumah saya dan setelah melihat-lihat, saya menemukan dua metode selain fungsi Ripley untuk menguji keseragaman dalam beberapa dimensi.
Saya membuat paket R yang disebut unf
yang mengimplementasikan kedua tes. Anda dapat mengunduhnya dari github di https://github.com/gui11aume/unf . Sebagian besar berada di C sehingga Anda harus mengkompilasinya pada mesin Anda R CMD INSTALL unf
. Artikel-artikel yang menjadi dasar implementasi adalah dalam format pdf dalam paket.
Metode pertama berasal dari referensi yang disebutkan oleh @Procrastinator ( Pengujian keseragaman multivariat dan aplikasinya, Liang et al., 2000 ) dan memungkinkan untuk menguji keseragaman hanya pada unit hypercube. Idenya adalah untuk merancang statistik perbedaan yang secara asimptot Gaussian oleh teorema Limit Pusat. Ini memungkinkan untuk menghitung statistik , yang merupakan dasar dari tes ini.
library(unf)
set.seed(123)
# Put 20 points uniformally in the 5D hypercube.
x <- matrix(runif(100), ncol=20)
liang(x) # Outputs the p-value of the test.
[1] 0.9470392
Pendekatan kedua kurang konvensional dan menggunakan pohon rentang minimum . Pekerjaan awal dilakukan oleh Friedman & Rafsky pada tahun 1979 (referensi dalam paket) untuk menguji apakah dua sampel multivariat berasal dari distribusi yang sama. Gambar di bawah ini menggambarkan prinsip tersebut.
Poin dari dua sampel bivariat diplot dalam warna merah atau biru, tergantung pada sampel aslinya (panel kiri). Pohon rentang minimum sampel dikumpulkan dalam dua dimensi dihitung (panel tengah). Ini adalah pohon dengan jumlah minimum panjang tepi. Pohon didekomposisi dalam sub pohon di mana semua titik memiliki label yang sama (panel kanan).
Pada gambar di bawah ini, saya menunjukkan kasus di mana titik-titik biru dikumpulkan, yang mengurangi jumlah pohon pada akhir proses, seperti yang Anda lihat di panel kanan. Friedman dan Rafsky telah menghitung distribusi asimptotik dari jumlah pohon yang diperoleh seseorang dalam proses, yang memungkinkan untuk melakukan tes.
Gagasan untuk membuat tes umum untuk keseragaman sampel multivarian telah dikembangkan oleh Smith dan Jain pada tahun 1984, dan diimplementasikan oleh Ben Pfaff dalam C (referensi dalam paket). Sampel kedua dihasilkan secara seragam dalam perkiraan lambung cembung sampel pertama dan uji Friedman dan Rafsky dilakukan pada kumpulan dua sampel.
Keuntungan dari metode ini adalah ia menguji keseragaman pada setiap bentuk multivariat cembung dan tidak hanya pada hypercube. Kerugian yang kuat, adalah bahwa tes memiliki komponen acak karena sampel kedua dihasilkan secara acak. Tentu saja, seseorang dapat mengulang tes dan rata-rata hasilnya untuk mendapatkan jawaban yang dapat direproduksi, tetapi ini tidak berguna.
Melanjutkan sesi R sebelumnya, begini caranya.
pfaff(x) # Outputs the p-value of the test.
pfaff(x) # Most likely another p-value.
Jangan ragu untuk menyalin / garpu kode dari github.