Professional Documents
Culture Documents
Marilena Pillati
"color"
"8"
"9"
"soil"
flower$color<-factor(flower$color, ordered=F)
flower$soil<-factor(flower$soil, ordered=T)
flower$preference<-factor(flower$preference, ordered=T)
str(flower)
'data.frame':
$ winter
:
$ shadow
:
$ tuber
:
$ color
:
$ soil
:
$ preference:
$ height
:
$ distance :
18 obs. of 8 variables:
Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 2 2 ...
Factor w/ 2 levels "0","1": 2 1 2 1 2 2 1 1 2 2 ...
Factor w/ 2 levels "0","1": 2 1 1 2 1 1 1 2 1 1 ...
Factor w/ 5 levels "1","2","3","4",..: 4 2 3 4 5 4 4 2 3 5 ...
Ord.factor w/ 3 levels "1"<"2"<"3": 3 1 3 2 2 3 3 2 1 2 ...
Ord.factor w/ 18 levels "1"<"2"<"3"<"4"<..: 15 3 1 16 2 12 ...
int 25 150 150 125 20 50 40 100 25 100 ...
int 15 50 50 50 15 40 20 15 15 60 ...
color soil
1:2
1: 3
2:4
2:10
3:3
3: 5
4:6
5:3
preference
1
: 1
2
: 1
3
: 1
4
: 1
5
: 1
6
: 1
(Other):12
height
Min.
: 20.00
1st Qu.: 28.75
Median : 65.00
Mean
: 79.72
3rd Qu.:118.75
Max.
:200.00
distance
Min.
:10.00
1st Qu.:15.00
Median :22.50
Mean
:30.83
3rd Qu.:50.00
Max.
:60.00
La funzione summary() ci restituisce le frequenze per le variabili categoriche, mentre mostra gli
indici di posizione e la media per le variabili quantitative.
Lobiettivo dellanalisi dei gruppi quello didentificare dei sottoinsiemi di unit che siano
omogenei al loro interno e che siano diversi tra loro, quindi in questo caso cercheremo di
raggruppare insieme le piante con caratteristiche simili.
2.Analisi dei gruppi o cluster analisys
Scegliamo di utilizzare 2 sole variabili per giungere alla definizione dei gruppi: altezza e distanza.
merge: matrice (n-1)x2 che ad ogni step descrive quali osservazioni/gruppi vengono
aggregati;
height: il valore di dissimilarit associato al metodo utilizzato per laggregazione;
method: il metodo aggregativo utilizzato;
dist.method: il metodo utilizzato per determinare la matrice di dissomiglianza.
Calcoliamo la matrice di distanza utilizzando la distanza euclidea.
dissim.eu<-dist(flower2,method="euclidean")
round(dissim.eu,1)
Eseguiamo lanalisi dei gruppi gerarchica con il metodo del legame completo:
h1<-hclust(dissim.eu, method="complete")
h1
Call:
hclust(d = dissim.eu, method = "complete")
Cluster method
: complete
Distance
: euclidean
Number of objects: 18
Rappresentiamo graficamente linsieme delle partizioni annidate che sono state calcolate,
cio produciamo il dendogramma:
plot(h1)
17
4
16
3
2
distance
6
14
12
8
10
17
4
16
3
2
6
14
12
15
7
59
1
13
18 11
15
7
59
1
13
18 11
10 20 30 40 50 60
10 20 30 40 50 60
10
distance
50
100
150
200
50
100
150
200
height
height
Nella partizione in 3 gruppi sembra che le piante siano suddivise principalmente sulla base
dellaltezza piuttosto che sulla base della distanza. Infatti il primo gruppo (nero) costituito da
piante daltezza<50cm, il secondo gruppo (rosso) da piante sopra i 100 cm e infine il terzo
gruppo (verde) da piante con altezza intermedia. La partizione in due cluster unisce il gruppo 3
nel gruppo 1 suddividendo cos le piante a seconda che siano maggiori o minori di 100 cm.
Le variabili non usate in fase di definizione della partizione ottima possono essere analizzate in
fase di interpretazione e se ne pu studiare il comportamento nei diversi cluster.
Ripetiamo lanalisi utilizzando il metodo del legame medio
Analisi dei dati a.a. 2015/2016
h2<-hclust(dissim.eu, method="average")
h2
Call:
hclust(d = dissim.eu, method = "average")
Cluster method
: average
Distance
: euclidean
Number of objects: 18
plot(h2)
Confrontando il dendogramma col precedente, notiamo che non c pressoch differenza tra
i due. Infatti portano alla stessa partizione sia che si scelgano 2 o 3 gruppi.
# partizione in 3 gruppi
h2.k3<-cutree(h2,k=3)
plot(flower2, type="n", main="analisi legame medio k=3", xlim=c(0,200),
ylim=c(0,60))
text(flower2, labels=rownames(flower), col=h2.k3)
# partizione in 2 gruppi
h2.k2<-cutree(h2,k=2)
plot(flower2, type="n", main="analisi legame medio k=2", xlim=c(0,200),
ylim=c(0,60))
text(flower2, labels=rownames(flower), col=h2.k2)
17
4
16
3
2
distance
6
14
12
8
10
17
4
16
3
2
6
14
12
15
7
59
1
13
18 11
15
7
59
1
13
18 11
10 20 30 40 50 60
10 20 30 40 50 60
10
distance
50
100
150
200
50
100
150
200
height
height
Questo metodo mette ancora pi in evidenza lipotesi che i gruppi possano essere 2 o al
massimo 3. Inoltre sono pi numerose le unit che convergono nel gruppo di sinistra rispetto a
quanto accadeva con i due metodi precedenti.
#partizione in 2 cluster
h3.k2<-cutree(h3,k=2)
plot(flower2, type="n", main="analisi gerarchica metodo di ward", xlim=c(0,200),
Analisi dei dati a.a. 2015/2016
ylim=c(0,60))
text(flower2, labels=rownames(flower), col=h3.k2)
# partizione in 3 cluster
h3.k3<-cutree(h3,k=3)
plot(flower2, type="n", main="analisi gerarchica metodo di ward", xlim=c(0,200),
ylim=c(0,60))
text(flower2, labels=rownames(flower), col=h3.k3)
In questa partizione la pianta 10 rientra nel gruppo rosso, ovvero le piante sembrano essere
suddivise oltre che rispetto allaltezza anche rispetto alla distanza.
B) Analisi dei gruppi con il metodo partitivo delle k medie
Il commando kmeans() permette di condurre lanalisi dei gruppi attraverso il metodo partitivo
delle k medie.
E necessario definire a priori il numero di cluster e la partizione ottima viene individuata
attraverso un procedimento iterativo, che richiede che vengano assegnati valori iniziali ai
centroidi di ciascun gruppo della partizione.
?kmeans
kmeans(x, centers, iter.max = 10, nstart = 1,algorithm = c("Hartigan-Wong",
"Lloyd", "Forgy","MacQueen"))
Dati da fornire in input:
x: la matrice dei dati
centers: il numero k di gruppi da creare o un vettore di lunghezza k contenente i valori iniziali
dei centroidi.
iter.max: numero massimo di iterazioni da eseguire.
algorithm: il tipo di algoritmo da utilizzare per ricavare la partizione.
Dati che restituisce in output:
cluster: un vettore di lunghezza n che indica il cluster a cui ogni osservazione assegnata;
centers: la matrice dei centroidi kxp (p colonne quante sono le variabili utilizzate)
withinss: la somma delle distanze (=quadrati delle differenze) dal centroide per ciascun
cluster.
Analisi dei dati a.a. 2015/2016
"centers"
"totss"
"withinss"
"size"
"iter"
"ifault"
Dalloutput notiamo che il gruppo 1 ha numerosit doppia rispetto gli altri due gruppi.
Analizzando i centroidi notiamo che il gruppo 1 quello con altezza e distanza piccole, il
secondo gruppo caratterizzato da piante con grande altezza e grande distanza, mentre il
terzo gruppo caratterizzato da dimensioni medie.
#rappresentazione grafica dei gruppi costruiti e dei loro centroidi
plot(flower2, type="n", main="analisi con metodo k-means, k=3")
text(flower2, labels=rownames(flower), col=k1$cluster)
points(k1$centers, col=c(1,2,3), pch=8, lwd=3, cex=2)
60
40
17
4
16
3
2
30
20
10
distance
50
10
14
12
15
7
59
1
13
18 11
50
100
150
200
height
La partizione molto simile a quella che si trovava con il metodo del legame medio, ma la
pianta 4 ricade questa volta nel gruppo 3 (verde).
#Proviamo a ripetere lanalisi ponendo il numero dei cluster pari a 2:
k2<-kmeans(flower2, centers=2, iter.max=20, algorithm="Hartigan-Wong")
k2
K-means clustering with 2 clusters of sizes 12, 6
Cluster means:
height distance
1 46.66667
18.75
2 145.83333
55.00
Clustering vector:
[1] 1 2 2 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1
Within cluster sum of squares by cluster:
[1] 9672.917 5670.833
(between_SS / total_SS = 74.4 %)
#rappresentazione grafica dei gruppi costruiti e dei loro centroidi
plot(flower2, type="n", main="analisi con metodo k-means, k=2")
text(flower2, labels=rownames(flower), col=k2$cluster)
points(k2$centers, col=c(1,2), pch=8, lwd=3, cex=2)
60
40
17
4
16
3
2
30
10
20
distance
50
10
14
12
15
7
59
1
13
18 11
50
100
150
200
height
n<- nrow(flower2)
wss<- rep(0,5)
wss[1] <-(n-1)*sum(apply(flower2,2,var))
for(i in 2:5){
wss[i] <- sum(kmeans(flower2, iter.max=20,centers=i)$withinss)
}
wss
[1] 59936.111 15343.750 6226.111 5068.750 3257.917
Con un gruppo la somma circa 60000, gi con 2 si riduce di circa 4 volte, e con 3 arriva ad
essere circa 1/10 di quella iniziale.
Allaumentare dei gruppi la devianza entro diminuisce, ma poich i diversi gruppi vanno
interpretati e devono avere un senso, necessario individuare quel numero k che sia il miglior
compromesso tra un numero di gruppi che consenta una buona interpretazione e una
devianza entro contenuta.
#Rappresentazione grafica dellandamento della somma delle devianze entro:
plot(wss, type="b", xlab="numero di gruppi", ylab="wss", main=" devianze
entro")
Dal grafico si pu notare che, superata la soglia k=3, il guadagno in riduzione della devianza
entro talmente piccolo che non vale la pena aumentare il numero di cluster.
C) Cluster analisi con metodi misti: metodo di ward + k medie
Supponiamo di aver condotto lanalisi gerarchica aggregativa con metodo di ward e di aver
ricavato 3 come numero di cluster. A questo punto possiamo applicare il metodo delle k medie
inizializzando i valori dei centroidi con i centroidi dei 3 gruppi ottenuti con ward.
# 1. Richiamiamo la partizione in 3 gruppi dallinsieme di quelle create col
metodo di ward:
h3.k3
[1] 1 2 2 2 1 1 1 3 1 2 1 3 1 3 1 2 2 1
# 2. Calcoliamo i centroidi dei 3 gruppi
cent<- NULL
Analisi dei dati a.a. 2015/2016
for(k in 1:3){
cent
height
[1,] 32.22222
[2,] 145.83333
[3,] 90.00000
In questo caso i risultati sono esattamente uguali a quello ottenuti con il metodo delle k-medie
applicato direttamente ai dati.
I metodi misti in genere si utilizzano quando si hanno molte unit: si conduce lanalisi
gerarchica su un sottoinsieme di osservazioni, si stabilisce il numero di cluster e si estrae la
partizione corrispondente. Si determinano i centroidi dei gruppi cos individuati. A partire da tali
centroidi, si applica il metodo delle k-medie a tutte le unit.
15
10
9
13
1
6
7
8
18
12
14
16
17
11
Height
Cluster Dendrogram
dissim.gow
hclust (*, "average")
Dal dendrogramma notiamo che solo nella soluzione a 2 gruppi losservazione 3 parte di un
gruppo che contiene altre unit. Fino alla partizione con 3 gruppi tale unit rimane un gruppo
a se stante.
#Visualizziamo la partizione in 2 gruppi
h8.med.k2<-cutree(h8.med,k=2)
h8.med.k2
[1] 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1
summary(flower[h8.med.k2==1,])
winter shadow tuber color soil
0:8
0: 5
0:8
1:2
1:2
1:7
1:10
1:7
2:2
2:8
3:3
3:5
4:5
5:3
summary(flower[h8.med.k2==2,])
winter shadow tuber color soil
0:0
0:3
0:3
1:0
1:1
1:3
1:0
1:0
2:2
2:2
3:0
3:0
4:1
5:0
preference
1
:1
2
:1
4
:1
5
:1
6
:1
7
:1
(Other):9
height
Min.
: 20.00
1st Qu.: 25.00
Median : 45.00
Mean
: 62.33
3rd Qu.: 95.00
Max.
:150.00
preference
3
:1
17
:1
18
:1
1
:0
2
:0
4
:0
(Other):0
height
Min.
:150.0
1st Qu.:150.0
Median :150.0
Mean
:166.7
3rd Qu.:175.0
Max.
:200.0
distance
Min.
:10.00
1st Qu.:15.00
Median :20.00
Mean
:25.67
3rd Qu.:35.00
Max.
:60.00
distance
Min.
:50.00
1st Qu.:55.00
Median :60.00
Mean
:56.67
3rd Qu.:60.00
Max.
:60.00