Bagaimana cara memberi tahu secara kuantitatif apakah data 1D dikelompokkan di sekitar 1 atau 3 nilai?


9

Saya punya beberapa data tentang waktu antara detak jantung manusia. Salah satu indikasi denyut ektopik (ekstra) adalah bahwa interval ini dikelompokkan sekitar tiga nilai, bukan satu. Bagaimana saya bisa mendapatkan ukuran kuantitatif ini?

Saya ingin membandingkan beberapa set data, dan dua histogram 100-bin ini mewakili semuanya.

masukkan deskripsi gambar di sini

Saya dapat membandingkan varians, tetapi saya ingin algoritma saya dapat mendeteksi apakah ada satu atau tiga cluster dalam setiap kasus tanpa membandingkan dengan kasus-kasus lainnya.

Ini untuk pemrosesan offline, jadi ada banyak daya komputasi yang tersedia, jika itu diperlukan.


Jawaban:


3

Saya sangat menyarankan untuk tidak menggunakan k-means di sini. Hasil untuk nilai k yang berbeda tidak sebanding dengan sangat baik. Metode ini hanya heuristik kasar. Jika Anda benar-benar ingin menggunakan pengelompokan, gunakan pengelompokan EM, karena data Anda tampaknya berisi distribusi normal. Dan validasikan hasil Anda!

Sebagai gantinya, pendekatan yang jelas adalah untuk mencoba menyesuaikan fungsi Gaussian tunggal dan (misalnya menggunakan metode Levenberg-Marquard) cocok dengan tiga fungsi Gaussian, mungkin dibatasi pada ketinggian yang sama (untuk menghindari degenerasi).

Kemudian uji, yang mana dari dua distribusi yang lebih baik.


Terima kasih, saya tidak tahu tentang Levenberg-Marquardt! Cluster ini bukan Gaussian; apakah Anda masih berpikir bahwa fungsi Gaussian akan menjadi PDF terbaik yang sesuai untuk mereka?
Nikolaus

Beri +1 pada ini dan pada Greg Snow. Saya sepenuhnya setuju dengan saran ini. @ Nikolaus Saya pikir ini terlihat "cukup gaussian" agar sesuai dengan campuran distribusi gaussians. Anda tidak ingin pasangan yang sempurna, hanya cara untuk memeriksa berapa banyak cluster yang ada. Dalam optik ini, membatasi semua komponen untuk berbagi deviasi standar yang sama dapat menjadi ide yang baik (karena alasan yang dijelaskan oleh Anony-Mousse).
Elvis

Mereka jelas terlihat cukup Gaussian bagi saya. K-means memodelkan data dengan sel Voronoi. Rasanya tidak masuk akal bagi saya untuk berasumsi bahwa titik perpecahan terbaik tepat di tengah dua cara tetangga.
Memiliki QUIT - Anony-Mousse

6

Paskan distribusi campuran dengan data, sesuatu seperti campuran dari 3 distribusi normal, kemudian bandingkan kemungkinan kecocokan tersebut dengan kecocokan distribusi normal tunggal (menggunakan uji rasio kemungkinan, atau AIC / BIC). The flexmixpaket untuk Rmungkin bisa membantu.


4

K=1K=3KK=1,2,3K=1K=3


2

Gunakan algoritma pengelompokan K-means untuk mengidentifikasi berbagai cara

Cari fungsi KNN di R-seek untuk menemukan fungsi yang sesuai


1
ahh, saya baru saja memposting itu! Anda juga dapat merujuk ke tautan ini untuk kode dan apa pun: statmethods.net/advstats/cluster.html
King

Saya mencoba dengan kmeansfungsi Matlab . Berarti yang dihasilkan sangat bervariasi dari mencoba untuk mencoba. (Heuristik buruk dalam implementasi ini?) Untuk set 1-cluster, saya mendapatkan mean sekitar (270.293.693) kadang-kadang, sekitar (260.285.308) kadang-kadang. Untuk set 3-cluster, beberapa jawaban adalah (196.324.468,) dan (290.459.478).
Nikolaus

Apakah ada tempat di mana saya dapat menempelkan data?
Nikolaus

Oh, kira-kira 693 artinya: ada dua outlier yang jelas, 532 dan 855, dari total nilai 755. Semua nilai lainnya dapat dilihat dalam histogram.
Nikolaus

Anda harus melihat melampaui cara yang Anda dapatkan dari k-means, dan melihat seberapa baik mereka benar-benar menggambarkan data Anda!
Memiliki QUIT - Anony-Mousse
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.