La estadística de brecha es una excelente manera de hacer esto; Tibshirani, Hastie y Walther (2001).
http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/clusGap.html : el paquete R relevante.
La idea es que realice una prueba de hipótesis secuencial de agrupar sus datos para K = 1,2,3, ... frente a una hipótesis nula de ruido aleatorio, que es equivalente a un grupo. Su fortaleza particular es que le da una indicación confiable de si K = 1, es decir, si no hay grupos.
Aquí hay un ejemplo, estaba inspeccionando algunos datos de astronomía hace unos días a medida que sucede, es decir, de una encuesta de exoplanetas en tránsito. Quería saber qué evidencia hay para los grupos (convexos). Mis datos son 'tránsito'
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;
}
Con la estadística de brecha, está buscando el primer valor de K donde la prueba 'falla', es decir, la estadística de brecha disminuye significativamente. El bucle anterior imprimirá tal k, sin embargo, simplemente trazar cgap le da la siguiente figura:
Vea cómo hay una caída significativa en la brecha de k = 1 a k = 2, lo que significa que, de hecho, no hay grupos (es decir, 1 grupo).