library(cluster) library(ggplot2) # importiamo i dati d<-read.csv(file="claims.csv", header = TRUE) # codifichiamo le variabili categoriali come factor d$litig<-as.factor(d$litig) d$soft_injury<-as.factor(d$soft_injury) d$emergency_tr<-as.factor(d$emergency_tr) # distanza di Gower mixd<-daisy(d, metric="gower") dclaims<-as.matrix(mixd) # transform to matrix # PAM con K=2 e Gower pam.claims<-pam(dclaims, 2, diss=TRUE) #ASW pam.claims$silinfo$avg.width #groups<-split(dd, dd$clusterID) # data by cluster # aggiungo il clustering al data set dd<-cbind(d, clusterID=as.factor(pam.claims$clustering)) # esploriamo il clustering trovato in termini delle variabili table(dd$clusterID) table(dd$litig, dd$clusterID) results <- data.frame( prop.table(table(dd$litig, dd$clusterID), 2)) # esempio: variabile "litig" ggplot(data = results, aes(x = Var2, y = Freq, fill=Var1)) + geom_bar(stat = "identity")+ labs(x = "\n Cluster", y = "Frequency\n", title = "\n var: 'litig' \n", fill = "litig") # potremmo anche guardare alla silhouette vs K min_nc<-2 max_nc<-10 ASW<-c() for (nc in min_nc:max_nc) { res<-pam(dclaims, nc, diss=TRUE) ASW[nc-1]<-res$silinfo$avg.width } ASW