Saya mencari metode untuk menghitung luas tumpang tindih antara dua perkiraan kepadatan kernel di R, sebagai ukuran kesamaan antara dua sampel. Untuk memperjelas, dalam contoh berikut, saya perlu mengukur luas wilayah keunguan yang tumpang tindih:
library(ggplot2)
set.seed(1234)
d <- data.frame(variable=c(rep("a", 50), rep("b", 30)), value=c(rnorm(50), runif(30, 0, 3)))
ggplot(d, aes(value, fill=variable)) + geom_density(alpha=.4, color=NA)
Pertanyaan serupa didiskusikan di sini , perbedaannya adalah bahwa saya perlu melakukan ini untuk data empiris yang sewenang-wenang daripada distribusi normal yang telah ditentukan. The overlap
alamat paket pertanyaan ini, tapi rupanya hanya untuk data timestamp, yang tidak bekerja untuk saya. Indeks Bray-Curtis (sebagaimana diterapkan dalam fungsi vegan
paket vegdist(method="bray")
) juga tampaknya relevan tetapi sekali lagi untuk data yang agak berbeda.
Saya tertarik pada pendekatan teoretis dan fungsi R yang mungkin saya terapkan untuk mengimplementasikannya.
Jawaban:
Luas tumpang tindih dari dua estimasi kepadatan kernel dapat diperkirakan hingga tingkat akurasi yang diinginkan.
Jika keduanya berada di grid yang berbeda dan tidak dapat dengan mudah dihitung ulang di grid yang sama, interpolasi dapat digunakan.
Namun , komentar whuber di atas harus diingat dengan jelas - ini belum tentu hal yang sangat berarti untuk dilakukan.
sumber
Demi kelengkapan, inilah cara saya akhirnya melakukan ini di R:
Sebagaimana dicatat, ada ketidakpastian dan subjektivitas yang melekat yang terlibat dalam generasi KDE dan juga dalam integrasi.
sumber
overlapping
yang memperkirakan area tumpang tindih dari 2 (atau lebih) distribusi empiris. Lihat dokumentasinya di sini: rdocumentation.org/packages/overlapping/versions/1.5.0/topics/…Pertama, saya mungkin salah tetapi saya pikir solusi Anda tidak akan bekerja jika ada beberapa titik di mana Kernel Density Estimates (KDE) berpotongan. Kedua, meskipun
overlap
paket itu dibuat untuk digunakan dengan data timestamp, Anda masih dapat menggunakannya untuk memperkirakan area tumpang tindih dari dua KDE. Anda hanya perlu mengubah skala data Anda sehingga berkisar dari 0 hingga 2π.Sebagai contoh :
sumber