Statystyka luk jest świetnym sposobem na to; Tibshirani, Hastie & Walther (2001).
http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/clusGap.html - Odpowiedni pakiet R.
Chodzi o to, że wykonuje sekwencyjny test hipotezy grupowania danych dla K = 1,2,3, ... w porównaniu z zerową hipotezą losowego szumu, która jest równoważna jednemu klasterowi. Jego szczególną siłą jest to, że daje wiarygodne wskazanie, czy K = 1, tj. Czy nie ma klastrów.
Oto przykład, jak sprawdzałem kilka danych astronomicznych kilka dni temu - a mianowicie z tranzytowej ankiety egzoplanetowej. Chciałem wiedzieć, jakie są dowody dla (wypukłych) klastrów. Moje dane to „tranzyt”
library(cluster)
cgap <- clusGap(transit, FUN=kmeans, K.max=kmax, B=100)
for(k in 1:(kmax-1)) {
if(cgap$Tab[k,3]>cgap$Tab[(k+1),3]-cgap$Tab[(k+1),4]) {print(k)};
break;
}
Ze statystyką luki szukasz pierwszej wartości K, w której test „kończy się niepowodzeniem”, tj. Statystyki luki znacznie spadają. Pętla powyżej wypisuje taki ak, jednak zwykłe wykreślenie cgap daje następujący rysunek:
Zobacz, jak znaczny jest spadek w Gap od k = 1 do k = 2, co oznacza, że w rzeczywistości nie ma klastrów (tj. 1 klaster).