Professional Documents
Culture Documents
Hoja 5 ADM
Hoja 5 ADM
Ej 1.
pairs(mamiferos,col=2)
cor(mamiferos)
library(corrplot)
corrplot(cor(mamiferos),method="ellipse")
conglo<- hclust(D,method="complete")
El dendograma es:
which(cluster==1)
which(cluster==2)
which(cluster==3)
Centroides: Notar que los centroides nos da una idea de las características de los
distintos conglomerados
1ª forma:
Centros=by(mamiferos,cluster,colMeans)
Centros
class(Centros) #clase by o lista
2ª forma:
Centros= t(sapply(split(mamiferos,cluster),colMeans))
Centros
class(Centros) # clase matriz
plot(conglo, cex=0.8,labels=mamiferos$ANIMAL,
main="Dendrograma",xlab=conglo$method,
sub="",ylab="Distancias",col="blue")
abline(h=20,col=2)
abline(v=2.5,col=2,lty=2)
abline(v=16.5,col=2,lty=2)
Lo hacemos con una variable y luego con apply lo hacemos con todas para estudiar
cuál es la que proporciona mayor variabilidad.
apply(mamiferos,2,
function(x) summary(lm(x~factor(cluster)))$fstatistic[1]
)
Las variables que mayor valor tengan, esas variables son las que más nos ayudan a
establecer los conglomerados.
--- Plot de las dos variables más explicativas: (agua y grasa) (es una nube de puntos)
plot(agua,grasa,type="n",
main="Resultado tres conglomerados")
text(agua,grasa,labels=row.names(mamiferos),
cex=0.6,col=colores[cluster])
text(Centros[,1],Centros[,3], #el 1 y el 3 hace ref a las variables ag#ua y grasa
labels=row.names(Centros),cex=1.5,col=colores)
grid()
Método single:
conglosin<- hclust(D,method="single")
#DENDOGRAMA:
plot(conglosin, cex=0.8,
labels=mamiferos$ANIMAL,main=conglosin$method,
xlab="",sub="",ylab="Distancias",col="blue")
Método average:
congloaver<- hclust(D,method="average")
# DENDOGRAMA:
plot(congloaver, cex=0.8,
labels=mamiferos$ANIMAL,main=congloaver$method,
xlab="",sub="",ylab="Distancias",col="blue")
NOTA: Si queremos comparar cuantos grupos se forman por cada método, lo vemos
en en table. Por ejemplo,
NOTA DEL AGNES: Las métricas posibles son “euclidean” y “manhattan”. Los métodos
de unión posibles son: “average”, “single”, “complete”, “ward”, “weighted”
NOTA DEL AGNES: No le tenemos que meter la matriz de distancias, a diferencia del
hclust. (siempre y cuando los datos puedan medirse con la dist euclidea)
NOTA DEL AGNES: Si no se especifica la métrica, por defecto es la más general, donde
los datos no son necesariamente de la misma naturaleza. No obstante, en este caso
hemos definido la matriz de distancias dada por Daysi, y en este caso si tenemos que
poner la matriz D dentro del agnes.
Si vemos que las variables son de tipo factor, ponemos lo de euclidean y no es
necesario poner la matriz D, solo los datos
stand sirve para tipificar las variables
library(cluster)
Para ver las uniones que se van formando, en el summary, nos fijamos en el merge.
summary(agnclus)
agnclus$ac
Cuanto más cercano sea a 1 el coef, más homogéneos serán los casos de un mismo
grupo y más se diferenciarán los de distinto grupo. El coeficiente ac es también la
anchura media del gráfico de banderas (o proporción rellena de dicho gráfico).
NOTA: Este coeficiente es sólo exclusivo del agnes, si construyes el hclust y luego te
preguntan el coef de ag, tienes que pasarlo al agnes.
clusteragn=cutree(agnclus,3)
En este caso da igual si usamos agnes o hclust. Lo hacemos con hclust por
ejemplo(average)
library(factoextra)
#dibujar dendrograma con k=3 clusters
k=3
fviz_dend(x = congloaver, k = k,
cex=0.6,
main="Dendrograma: Método Average",
xlab="Mamíferos",
ylab="Distancias de unión")
fviz_dend(x = congloaver, k = k,
cex=0.6,
main="Dendrograma: Método Average",
xlab="Mamíferos",
ylab="Distancias de unión") +
geom_hline(yintercept = corte, linetype = "dashed")
Ej. 2.
Nota. Esto lo tenemos que hacer porque las variables del dato son de distintos
factores. Primero cargamos la librería cluster.
library(cluster)
v1: Asim. V2: Sim. V3: Asim. V4: Nominal. V5, V6: Ordinal. V7: transformada a Ordinal.V8
numérica.
round(D,2)
Y podemos aplicar las técnicas jerárquicas vistas con hclust
b) Coef de aglomeración.
summary(agnclusin)
agnclusin$ac
plot(agnclusin,main=agncluscom$method)
Nota. Si tienes varios métodos, elige siemore el que tenga mayor coef ac.
Ej. 3.
h<- hclust(dist(swiss),method="complete")
plot(h) #dendograma
abline(h=80,col=4)
Recuerda que los centros nos da una idea de las ccas de los grupos que se forman
cluster<- cutree(h,3)
Centros= t(sapply(split(swiss,cluster),colMeans))
class(Centros)
names(km)
Cuidado! Es casi igual, apply(…summary), pero en este caso le tenemos que especificar
que viene del algoritmo de las kmedias
text(swiss[,c(5,2)], labels=row.names(swiss),
cex=0.6,col=colores[km$cluster])
text(km$centers[,5],km$centers[,2],
labels=row.names(Centros),cex=1.5,col=colores)
grid()
Ej. 5.
names(agric.pam)
agric.pam$clusinfo
esto ultimo contiene: tamaño del cluster; disimilaridad máxima y media entre los casos y su
medoide; diámetro, es decir, la máxima disimilaridad entre dos casos y separación,
mínima distancia entre un caso y un caso de otro cluster.
El valor ## $avg.width
## [1] 0.6314058
Nos dice la anchura media de la silueta del conjunto de los datos.
Se trata de una medida de calidad. Nos dice cómo de similar es un
objeto a su propio clúster (cohesión) en comparación con otros
clústeres (separación). 1: la muestra se parece mucho a sus vecinos y
muy poco a las de otro clúster,
Representacion grafica
plot(agric.pam)
Y la nube de puntos es: (en este caso tenemos dos variables)
listak<- 2:7
s<- numeric(length(listak))
s
listak[which.max(s)]
plot(listak,s,type="l",xlab="k",
main="k-medioides",ylab="Silueta media")
xs
Ej. 6. El data frame ruspini de la librería cluster contiene 75 puntos con dos variables x
e y. Comprobar que para estos datos simulados la mejor partición con el método de
los k-medoides corresponde a k=4.
plot(ruspini,main="4-medioides",
col=rusp.pam$clustering)
points(rusp.pam$medoids,pch=10,cex=2.5,col="red")
grid()
Con “clusinfo” se obtienen una matriz en la que cada fila se refiere a un cluster,y contiene:
tamaño del cluster;
disimilaridad máxima y media entre los casos y su medioide;
diámetro, es decir, la máxima disimilaridad entre dos casos
separación, mínima dist. entre un caso y un caso de otro cluster.
clx3$clusinfo
clx3$silinfo
Dibujar la nube de puntos distinguiendo el conglomerado mediante colores
plot(xclara, col=clx3$clustering)
Ej. 8 Aplicar el método fanny (método fuzzy, difuso, Fuzzy Analysis Clustering) sobre los datos
agricultura
Queremos minimizar una función., el objetivo es en calcular esos coeficientes de forma que se
minimice la función objetivo y que se maximice la probabilidad de que cada caso sea de un
cluster h.