## Ana'lisis de conglomerados

library (datasets)                   # necesario en Rcmdr para "mtcars"
## Conglomerados jera'rquicos de Ward
d <- dist (scale (mtcars))           # calcula la matriz de distancias
a <- hclust(d, method="ward") 
a <- hclust(d, method="single") 
a <- hclust(d, method="complete") 
a <- hclust(d, method="average") 
a <- hclust(d, method="median") 
a <- hclust(d, method="centroid")
a$merge                 # historial del agrupamiento (- para elementos, + para conglomerados)
a$dist.method           # distancia empleada
a$method                # criterio de distancia entre grupos
a$order                 # orden de los individuos en el dendrograma (de izda. a derecha)
a$height                # secuencia de distancias entre grupos
plot(a)                 # representa el dendrograma
grupos <- cutree (a, 5) # se definen 5 grupos
rect.hclust (a, 5)      # dendrograma con las fronteras de los 5 grupos

# lo mismo, pero con las variables
d <- dist (scale (t (mtcars)))
a <- hclust(d, method="ward")
plot (a)

# conglomerados de Warp con P-valores mediante remuestreo autosuficiente (bu'strap)
install.packages ("pvclust")
library (pvclust)
a <- pvclust (scale (mtcars), method.hclust="ward", method.dist="euclidean")
plot (a)   # dendrograma con P-valores
pvrect (a) # recta'ngulos sobre grupos muy soportados por los datos

# datos de ejemplo
library (foreign)
cerveza   <- read.spss ("Cerveza.sav", to.data.frame=TRUE)
rownames(cerveza) <- cerveza$CERVEZA # para identificar las marcas en el gra'fico
cerveza$CERVEZA <- NULL              # elimina la columna
plot (hclust (dist    (cerveza)))
plot (hclust (dist (t (cerveza))))
plot (hclust (dist (t (scale (cerveza)))))
plot (hclust (dist (scale (cerveza))))

tailandia <- read.spss ("tailandia.sav", to.data.frame=TRUE)