data <- read.table("dataTP310326.txt", header = TRUE)
nrow(data)
## [1] 49
ncol(data)
## [1] 73
summary(data)
## x1 y1 x2 y2
## Min. :-0.4009 Min. :0.004474 Min. :-0.3476 Min. :0.005404
## 1st Qu.:-0.3679 1st Qu.:0.039127 1st Qu.:-0.3191 1st Qu.:0.036960
## Median :-0.3592 Median :0.049904 Median :-0.3098 Median :0.043218
## Mean :-0.3580 Mean :0.050618 Mean :-0.3042 Mean :0.045377
## 3rd Qu.:-0.3498 3rd Qu.:0.062017 3rd Qu.:-0.2949 3rd Qu.:0.054952
## Max. :-0.3187 Max. :0.106413 Max. :-0.2240 Max. :0.073685
## x3 y3 x4 y4
## Min. :-0.2257 Min. :0.01271 Min. :-0.10612 Min. :-0.010334
## 1st Qu.:-0.2035 1st Qu.:0.02145 1st Qu.:-0.05726 1st Qu.: 0.004336
## Median :-0.1921 Median :0.02836 Median :-0.04535 Median : 0.011461
## Mean :-0.1902 Mean :0.03131 Mean :-0.04822 Mean : 0.011299
## 3rd Qu.:-0.1794 3rd Qu.:0.03778 3rd Qu.:-0.03166 3rd Qu.: 0.017310
## Max. :-0.1403 Max. :0.06032 Max. :-0.01642 Max. : 0.031428
## x5 y5 x6 y6
## Min. :-0.077635 Min. :-0.005068 Min. :-0.045804 Min. :0.003756
## 1st Qu.:-0.027803 1st Qu.: 0.005248 1st Qu.:-0.003644 1st Qu.:0.018637
## Median :-0.019338 Median : 0.012237 Median : 0.003990 Median :0.026277
## Mean :-0.022004 Mean : 0.011515 Mean : 0.001454 Mean :0.024033
## 3rd Qu.:-0.010980 3rd Qu.: 0.016953 3rd Qu.: 0.008638 3rd Qu.:0.030714
## Max. : 0.005522 Max. : 0.026045 Max. : 0.022566 Max. :0.038033
## x7 y7 x8 y8
## Min. :-0.03002 Min. :0.01146 Min. :-0.01695 Min. :0.02075
## 1st Qu.: 0.01229 1st Qu.:0.03603 1st Qu.: 0.02167 1st Qu.:0.05235
## Median : 0.01730 Median :0.04413 Median : 0.02547 Median :0.06406
## Mean : 0.01558 Mean :0.04190 Mean : 0.02500 Mean :0.06103
## 3rd Qu.: 0.02131 3rd Qu.:0.05237 3rd Qu.: 0.03031 3rd Qu.:0.07309
## Max. : 0.03289 Max. :0.05933 Max. : 0.03906 Max. :0.08707
## x9 y9 x10 y10
## Min. :-0.001799 Min. :0.03112 Min. :0.01784 Min. :0.04603
## 1st Qu.: 0.031181 1st Qu.:0.06823 1st Qu.:0.04629 1st Qu.:0.08578
## Median : 0.035830 Median :0.08539 Median :0.05152 Median :0.10579
## Mean : 0.035856 Mean :0.08105 Mean :0.05187 Mean :0.10150
## 3rd Qu.: 0.041232 3rd Qu.:0.09553 3rd Qu.:0.05797 3rd Qu.:0.11821
## Max. : 0.054337 Max. :0.11888 Max. :0.07897 Max. :0.14762
## x11 y11 x12 y12
## Min. :0.04013 Min. :0.06310 Min. :0.06470 Min. :0.05129
## 1st Qu.:0.06979 1st Qu.:0.09865 1st Qu.:0.08927 1st Qu.:0.08419
## Median :0.07606 Median :0.11857 Median :0.09576 Median :0.10060
## Mean :0.07541 Mean :0.11512 Mean :0.09573 Mean :0.09819
## 3rd Qu.:0.08245 3rd Qu.:0.13181 3rd Qu.:0.10253 3rd Qu.:0.11251
## Max. :0.10267 Max. :0.16599 Max. :0.11716 Max. :0.14329
## x13 y13 x14 y14
## Min. :0.07925 Min. :0.04352 Min. :0.09763 Min. :0.03259
## 1st Qu.:0.09696 1st Qu.:0.07371 1st Qu.:0.11077 1st Qu.:0.05475
## Median :0.10087 Median :0.08752 Median :0.11530 Median :0.06215
## Mean :0.10143 Mean :0.08305 Mean :0.11509 Mean :0.06134
## 3rd Qu.:0.10599 3rd Qu.:0.09481 3rd Qu.:0.11857 3rd Qu.:0.07032
## Max. :0.12093 Max. :0.11696 Max. :0.13457 Max. :0.08773
## x15 y15 x16 y16
## Min. :0.1224 Min. :0.02435 Min. :0.1429 Min. :0.01390
## 1st Qu.:0.1318 1st Qu.:0.03493 1st Qu.:0.1574 1st Qu.:0.02459
## Median :0.1375 Median :0.04039 Median :0.1621 Median :0.03070
## Mean :0.1366 Mean :0.04147 Mean :0.1635 Mean :0.03102
## 3rd Qu.:0.1411 3rd Qu.:0.04489 3rd Qu.:0.1673 3rd Qu.:0.03507
## Max. :0.1577 Max. :0.07038 Max. :0.1988 Max. :0.05901
## x17 y17 x18 y18
## Min. :0.1677 Min. :0.006327 Min. :0.1681 Min. :-0.009410
## 1st Qu.:0.1788 1st Qu.:0.024904 1st Qu.:0.1765 1st Qu.: 0.003516
## Median :0.1833 Median :0.028338 Median :0.1820 Median : 0.009986
## Mean :0.1856 Mean :0.029757 Mean :0.1835 Mean : 0.010901
## 3rd Qu.:0.1887 3rd Qu.:0.037264 3rd Qu.:0.1868 3rd Qu.: 0.018620
## Max. :0.2282 Max. :0.054241 Max. :0.2259 Max. : 0.029206
## x19 y19 x20 y20
## Min. :0.1575 Min. :-0.017094 Min. :0.1478 Min. :-0.024746
## 1st Qu.:0.1674 1st Qu.:-0.008964 1st Qu.:0.1582 1st Qu.:-0.021284
## Median :0.1713 Median :-0.002589 Median :0.1622 Median :-0.015046
## Mean :0.1734 Mean :-0.001709 Mean :0.1645 Mean :-0.013658
## 3rd Qu.:0.1773 3rd Qu.: 0.007235 3rd Qu.:0.1712 3rd Qu.:-0.007135
## Max. :0.2152 Max. : 0.013575 Max. :0.2056 Max. : 0.001310
## x21 y21 x22 y22
## Min. :0.1403 Min. :-0.04381 Min. :0.1526 Min. :-0.06798
## 1st Qu.:0.1487 1st Qu.:-0.03412 1st Qu.:0.1663 1st Qu.:-0.05629
## Median :0.1546 Median :-0.03005 Median :0.1735 Median :-0.04952
## Mean :0.1575 Mean :-0.02770 Mean :0.1756 Mean :-0.04686
## 3rd Qu.:0.1651 3rd Qu.:-0.02128 3rd Qu.:0.1834 3rd Qu.:-0.03771
## Max. :0.1930 Max. :-0.01136 Max. :0.2108 Max. :-0.02191
## x23 y23 x24 y24
## Min. :0.1376 Min. :-0.09103 Min. :0.1151 Min. :-0.11063
## 1st Qu.:0.1495 1st Qu.:-0.07344 1st Qu.:0.1215 1st Qu.:-0.07726
## Median :0.1561 Median :-0.06608 Median :0.1264 Median :-0.07005
## Mean :0.1579 Mean :-0.06459 Mean :0.1300 Mean :-0.07098
## 3rd Qu.:0.1664 3rd Qu.:-0.05975 3rd Qu.:0.1372 3rd Qu.:-0.06470
## Max. :0.1856 Max. :-0.03548 Max. :0.1600 Max. :-0.03874
## x25 y25 x26 y26
## Min. :0.08244 Min. :-0.11285 Min. :0.02316 Min. :-0.11806
## 1st Qu.:0.09084 1st Qu.:-0.07518 1st Qu.:0.05450 1st Qu.:-0.07585
## Median :0.09692 Median :-0.06574 Median :0.06091 Median :-0.06629
## Mean :0.09874 Mean :-0.06964 Mean :0.05994 Mean :-0.07022
## 3rd Qu.:0.10334 3rd Qu.:-0.06143 3rd Qu.:0.06685 3rd Qu.:-0.06153
## Max. :0.13234 Max. :-0.04456 Max. :0.10171 Max. :-0.04595
## x27 y27 x28 y28
## Min. :-0.03466 Min. :-0.10470 Min. :-0.070085 Min. :-0.10122
## 1st Qu.: 0.01538 1st Qu.:-0.07973 1st Qu.:-0.016862 1st Qu.:-0.08198
## Median : 0.02089 Median :-0.07222 Median :-0.012865 Median :-0.07391
## Mean : 0.01823 Mean :-0.07116 Mean :-0.015616 Mean :-0.07094
## 3rd Qu.: 0.02617 3rd Qu.:-0.06269 3rd Qu.:-0.008245 3rd Qu.:-0.06263
## Max. : 0.06163 Max. :-0.03502 Max. : 0.011803 Max. :-0.02536
## x29 y29 x30 y30
## Min. :-0.09952 Min. :-0.09682 Min. :-0.12669 Min. :-0.08695
## 1st Qu.:-0.05182 1st Qu.:-0.07971 1st Qu.:-0.08706 1st Qu.:-0.07548
## Median :-0.04606 Median :-0.07219 Median :-0.08254 Median :-0.06851
## Mean :-0.04934 Mean :-0.06873 Mean :-0.08356 Mean :-0.06491
## 3rd Qu.:-0.04097 3rd Qu.:-0.05992 3rd Qu.:-0.07498 3rd Qu.:-0.05667
## Max. :-0.03308 Max. :-0.01965 Max. :-0.06524 Max. :-0.02063
## x31 y31 x32 y32
## Min. :-0.14828 Min. :-0.08048 Min. :-0.1681 Min. :-0.07428
## 1st Qu.:-0.12194 1st Qu.:-0.06882 1st Qu.:-0.1577 1st Qu.:-0.06010
## Median :-0.11833 Median :-0.06198 Median :-0.1526 Median :-0.05569
## Mean :-0.11814 Mean :-0.05982 Mean :-0.1536 Mean :-0.05406
## 3rd Qu.:-0.11160 3rd Qu.:-0.05328 3rd Qu.:-0.1491 3rd Qu.:-0.04938
## Max. :-0.09904 Max. :-0.02196 Max. :-0.1340 Max. :-0.02507
## x33 y33 x34 y34
## Min. :-0.2050 Min. :-0.06853 Min. :-0.2470 Min. :-0.06545
## 1st Qu.:-0.1933 1st Qu.:-0.05321 1st Qu.:-0.2328 1st Qu.:-0.04962
## Median :-0.1899 Median :-0.05003 Median :-0.2270 Median :-0.04532
## Mean :-0.1896 Mean :-0.04818 Mean :-0.2263 Mean :-0.04296
## 3rd Qu.:-0.1845 3rd Qu.:-0.04364 3rd Qu.:-0.2216 3rd Qu.:-0.03553
## Max. :-0.1679 Max. :-0.02091 Max. :-0.1879 Max. :-0.01720
## x35 y35 x36 y36
## Min. :-0.2920 Min. :-0.07256 Min. :-0.3306 Min. :-0.08463
## 1st Qu.:-0.2727 1st Qu.:-0.04808 1st Qu.:-0.3112 1st Qu.:-0.05276
## Median :-0.2636 Median :-0.04297 Median :-0.3012 Median :-0.04497
## Mean :-0.2636 Mean :-0.04004 Mean :-0.3001 Mean :-0.04433
## 3rd Qu.:-0.2596 3rd Qu.:-0.02968 3rd Qu.:-0.2928 3rd Qu.:-0.03622
## Max. :-0.2158 Max. :-0.01632 Max. :-0.2583 Max. :-0.01872
## alimentaire
## Min. :1.000
## 1st Qu.:1.000
## Median :2.000
## Mean :2.061
## 3rd Qu.:3.000
## Max. :4.000
Dans le jeu de données, nous avons les coordonnées en 2D de points mesurées sur des photos de mâchoires de 49 espèces de chauve-souris ainsi que le régime alimentaire de la chauve-souris. Parmi les points, les 11 premiers dans le jeu de données sont répartis le long de la mâchoire et les 25 suivants entre le 4ème et le 11ème (il n’y a pas de points supplémentaires entre le 1er, 2ème, 3ème et 4ème). Les points 1 à 11 peuvent être considérés comme les points “importants” de la mâchoire, étant placés principalement à l’emplacement des dents, des articulations et des “pics”. Les 25 autres points quant à eux semblent plus être utilisés pour décrire la forme de la mâchoire. En ce qui concerne la méthode d’alimentation des chauve-souris, elle a été codé comme ceci : 1 pour les chauve-souris carnivores, 2 pour celles mangeant des fruits, 3 pour celles consommant du nectar et enfant 4 pour les chauve-souris se nourrissant de sang.
barplot(table(data$alimentaire), main = "Histogramme de la répartition des\ntypes d'alimentation des chauve-souris du jeu de données", xlab = "Type d'alimentation", col = "Forestgreen", ylab = "Nombre d'espèces")
On peut remarquer que seulement 3 espèces se nourrissent de sang, contre 12 de nectar, 15 d’animaux et 19 de fruits.
dfx = select(data, starts_with("x"))
dfy = select(data, starts_with("y"))
corrplot(cor(dfx))
corrplot(cor(dfy))
Ces 2 graphes de corrélation montrent bien que les points voisins ont des valeurs similaires. Ce n’est pas une vraie corrélation mais plus une vérification que les valeurs sont correctement ordonnées et qu’il n’y a pas de valeur aberrante.
Nous allons maintenant utiliser l’ACP pour faire une exploration multidimensionnelle du jeu de données.
df = data[,1:72]
alim <- as.factor(data$alimentaire)
resPCA = PCA(df,scale.unit = TRUE, graph = FALSE)
fviz_eig(resPCA, addlabels = TRUE)
## Warning in geom_bar(stat = "identity", fill = barfill, color = barcolor, :
## Ignoring empty aesthetic: `width`.
fviz_pca_ind(resPCA, axes=c(1,2), label = "var", addEllipses = TRUE, habillage = alim, legend.title = "Alimentation", title = "ACP des chauve-souris par régime alimentaire")
## Ignoring unknown labels:
## • linetype : "Alimentation"
## Too few points to calculate an ellipse
fviz_pca_ind(resPCA, axes=c(2,3), label = "var", addEllipses = TRUE, habillage = alim, legend.title = "Alimentation", title = "ACP des chauve-souris par régime alimentaire")
## Ignoring unknown labels:
## • linetype : "Alimentation"
## Too few points to calculate an ellipse
Le premier graphe nous montre que les dimensions 1, 2, 3 et 4 de l’ACP explique respectivement 41%, 24.4%, 11.7% et 6.4% de la variance, pour un total de 83.5% du score.
Le premier plot d’ACP, avec les dimensions 1 et 2 pour un total de 65.4% de la variance, nous présente principalement 3 groupes. Le premier en violet, contenant les 3 espèces de chauve-souris se nourrissant de sang, est situé bien à l’écart des trois autres dans le coin en haut à gauche du plot. Le 2ème groupe distinguable est celui en bleu, représentant les espèces qui consomment du nectar, étant plus proche des groupes rouge et vert mais restant tout de même à l’écart. Enfin, les groupes rouge et vert, les chauve-souris carnivores et mangeant des fruits, ne sont pas clairement distinguables sur ce plot.
Le deuxième plot d’ACP est similaire dans sa réparition des groupes, avec le violet à l’écart, en revanche le groupe bleu s’est rapproché du rouge et vert.
On peut vérifier notre analyse en faisant un rapide clustering.
reskmeans = kmeans(df, 3)
fviz_pca_ind(resPCA, axes = c(1,2), label = "var", habillage = as.factor(reskmeans$cluster), legend.title = "Clusters", title = "ACP des chauve-souris avec les clusters kmeans")
## Ignoring unknown labels:
## • fill : "Clusters"
## • linetype : "Clusters"
En demandant au clustering de former 3 groupes, kmeans a principalement regroupé les alimentations 1 et 2 et formé des groupes séparés pour les alimentations 3 et 4, ce qui est cohérent avec l’analyse que nous avons faite de l’ACP.
Pour conclure, on peut classer les chauve-souris en différents groupes, notamment en séparant celles qui consomment du sang et du nectar de celles consommant des animaux ou des fruits. La différence principale dans les alimentations est l’aspect de “solidité” des aliments. En effet, les animaux et fruits nécessitent d’être machés alors que le nectar et le sang ont une consistance plus liquide, ce qui explique le similitude des alimentations 1 et 2 et l’écart avec les alimentations 3 et 4.
Il est donc difficile de différencier les chauve-souris carnivores des mangeuses de fruits avec ce jeu de données, il est possible que d’autres paramètres puissent être étudiés pour en trouver la différence.
Enfin, le jeu de données ne présentent qu’une valeur par espèce sans nous donner un grand nombre d’informations, telles que l’âge de la chauve-souris. Le jeu de données est assez incomplet et il serait raisonnable de ne pas trop s’y fier pour tirer des conclusions sur les formes de mâchoires des chauve-souris.