Liikide rühmitamise näide
Kasutades andmestikku zoo_aug.csv (exportimise käsu jätan allpool vahele, kuna andmed peaksid olema juba R-s, kui oled järjest materjalid R koodiaknasse kopeerinud) toon järgneva näite liikide rühmitamise tulemustega. Alguses transponeerime algandmete maatriksi (vahetame read ja veerud), sest klasteranalüüs rühmitab alati ridades olevaid näitajaid ehk objekte. Standardiseerimine ning kauguste arvutamine tuleb transponeeritud andmetega kindlasti uuesti teha.
liigid<-data.frame(t(andmed[,-c(1,2,3)]))
attach(liigid)
s_liik <- scale(liigid)
liigid<-data.frame(t(andmed[,-c(1,2,3)]))
attach(liigid)
s_liik <- scale(liigid)
#Mitu klastrit oleks mõistlik?
wss <- (nrow(s_liik)-1)*sum(apply(s_liik,2,var)) for (i in 2:15) wss[i] <- sum(kmeans(s_liik, centers=i)$withinss) plot(1:15, wss,type="b" , xlab="Number of Clusters", ylab="Within groups sum of squares") Vastuseks pakun, et kuna pärast neljanda ühendamist grupisisene varieerumine enam märkimis-väärselt ei vähene, siis piisab neljast klastrist. Paremal alumiselt graafikult näeb, et 2 klastrit koosnevad kumbki vaid ühest liigist. d_liik <- dist(s_liik, method = "euclidean") fit_liik <- hclust(d_liik, method="ward") plot(fit_liik,hang=-1,main="Ward'i meetod") rect.hclust(fit_liik, 4) #klastrid Height y-teljel näitab erinevuse suurust. Skaleeritud andmete tõttu ei ole sellel arvul sisulist mõtet, küll aga näeb, missugune on suhteline erinevus kahe suure klastri vahel, see on ligikaudu 20 ühikut. Edasine rühmitamine ei ole sisuliselt enam vajalik, erinevused on liiga väikesed. |
|