Exercice 1 Lecture du fichier csv
1. Faites l’histogramme de la variable PV-base
hist(notes$`PV-base`,
main = "Histogramme de PV-base",
xlab = "PV-base",
ylab = "Fréquence",
col = "lightblue")

2. Calculer le résumé de cette variable
summary(notes$`PV-base`)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.00 45.00 60.00 64.21 80.00 250.00
3. Dessiner le nuage de points correspondant aux variables “PV-base”
et “Force-base”
plot(notes$`PV-base`, notes$`Force-base`,
main = "Nuage de points: PV-base vs Force-base",
xlab = "PV-base",
ylab = "Force-base",
col = "blue",
pch = 19)

Exercice 2 Passer en revue les couples
1. Utiliser pairs() pour afficher tous les nuages de
points
pairs(notes[, sapply(notes, is.numeric) & colnames(notes) != "Numéro"],
main = "Nuage de points pour toutes les variables numériques sauf Numéro",
pch = 19,
col = "lightblue")

2. Utiliser scatterplotMatrix() pour visualiser les
distributions
if(!require(car)) install.packages("car")
## Loading required package: car
## Loading required package: carData
library(car)
scatterplotMatrix(~ `PV-base` + `Force-base` + `Défense-base` + `Spécial-base` + `Vitesse-base` + `Exp base`,
data = notes,
main = "Nuage de points avec distribution sur la diagonale",
pch = 19,
col = "red")

Exercice 3 Corrélations entre les variables
1. Taille de ces matrices
# Calculer la matrice des covariances
notes.cov <- cov(notes[, sapply(notes, is.numeric)])
# Afficher la matrice des covariances
print(notes.cov)
## Numéro PV-base Force-base Défense-base Spécial-base
## Numéro 1912.6667 255.56000 314.35333 387.02000 420.64000
## PV-base 255.5600 817.39479 227.60004 94.12609 256.53298
## Force-base 314.3533 227.60004 692.41192 347.47837 85.39797
## Défense-base 387.0200 94.12609 347.47837 728.93457 117.77307
## Spécial-base 420.6400 256.53298 85.39797 117.77307 812.84291
## Vitesse-base 161.8800 -32.27762 136.37704 -39.32155 318.02366
## Exp base 769.5800 863.59766 826.72155 677.95991 924.84764
## Vitesse-base Exp base
## Numéro 161.88000 769.5800
## PV-base -32.27762 863.5977
## Force-base 136.37704 826.7215
## Défense-base -39.32155 677.9599
## Spécial-base 318.02366 924.8476
## Vitesse-base 706.96026 594.6101
## Exp base 594.61011 2667.2848
cat("La taille de la matrice des covariances est :", dim(notes.cov), "\n")
## La taille de la matrice des covariances est : 7 7
2.Les variables qui sont le plus corrélées
notes.cor <- cor(notes[, sapply(notes, is.numeric)])
print(notes.cor)
## Numéro PV-base Force-base Défense-base Spécial-base
## Numéro 1.0000000 0.20438890 0.2731594 0.32777022 0.3373554
## PV-base 0.2043889 1.00000000 0.3025340 0.12194102 0.3147197
## Force-base 0.2731594 0.30253397 1.0000000 0.48910402 0.1138314
## Défense-base 0.3277702 0.12194102 0.4891040 1.00000000 0.1530025
## Spécial-base 0.3373554 0.31471972 0.1138314 0.15300246 1.0000000
## Vitesse-base 0.1392118 -0.04246078 0.1949223 -0.05477581 0.4195258
## Exp base 0.3407214 0.58487200 0.6083343 0.48621130 0.6281049
## Vitesse-base Exp base
## Numéro 0.13921180 0.3407214
## PV-base -0.04246078 0.5848720
## Force-base 0.19492229 0.6083343
## Défense-base -0.05477581 0.4862113
## Spécial-base 0.41952575 0.6281049
## Vitesse-base 1.00000000 0.4330122
## Exp base 0.43301216 1.0000000
max_cor <- which(notes.cor == max(notes.cor[notes.cor < 1]), arr.ind = TRUE)
cat("Les variables les plus corrélées sont :", rownames(notes.cor)[max_cor[1]], "et", colnames(notes.cor)[max_cor[2]], "\n")
## Les variables les plus corrélées sont : Exp base et Spécial-base
3.Les variables les avec corrélation négativ
neg_cor <- which(notes.cor < 0, arr.ind = TRUE)
if (length(neg_cor) > 0) {
cat("Les variables avec une corrélation négative sont :\n")
apply(neg_cor, 1, function(x) {
cat(rownames(notes.cor)[x[1]], "et", colnames(notes.cor)[x[2]], "\n")
})
} else {
cat("Aucune corrélation négative trouvée.\n")
}
## Les variables avec une corrélation négative sont :
## Vitesse-base et PV-base
## Vitesse-base et Défense-base
## PV-base et Vitesse-base
## Défense-base et Vitesse-base
## NULL
Exercice 4 Affichage des corrélations
1.Utilisation de corrplot() pour afficher la matrice des
corrélations
# Charger le package corrplot
if(!require(corrplot)) install.packages("corrplot")
## Loading required package: corrplot
## corrplot 0.95 loaded
library(corrplot)
# Calculer la matrice des corrélations pour les variables numériques
numeric_vars <- notes[, sapply(notes, is.numeric)]
notes.cor <- cor(numeric_vars)
corrplot(notes.cor, method = "number", type = "lower", insig = "blank", number.cex = 0.6)

2.Utilisation de ggpairs() pour afficher les nuages, corrélations et
densités
if(!require(GGally)) install.packages("GGally")
## Loading required package: GGally
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(GGally)
ggpairs(numeric_vars, title = "Matrice de corrélation des variables",
lower = list(continuous = wrap("smooth_loess", size = 0.5)),
upper = list(continuous = wrap("cor", size = 3)),
diag = list(continuous = wrap("densityDiag")))

Exercice 5 ACP
# 选择用于 PCA 的数值型变量
selected_vars <- notes[, c("Force-base", "Défense-base", "Vitesse-base", "Spécial-base")]
notes.pca <- PCA(selected_vars, quanti.sup = c(1))


1. Afficher les pourcentages d’inertie par axe
barplot(notes.pca$eig[, 2], names = paste("Axe", 1:nrow(notes.pca$eig)),
main = "Pourcentages d'inertie par axe", col = "lightblue")

2. Obtenir le résumé de l’ACP
summary(notes.pca)
##
## Call:
## PCA(X = selected_vars, quanti.sup = c(1))
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3
## Variance 1.431 1.035 0.534
## % of var. 47.714 34.498 17.788
## Cumulative % of var. 47.714 82.212 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3
## 1 | 1.156 | -0.835 0.322 0.521 | -0.382 0.093 0.109 | -0.703
## 2 | 0.539 | 0.014 0.000 0.001 | -0.033 0.001 0.004 | -0.537
## 3 | 1.286 | 1.155 0.617 0.806 | 0.478 0.146 0.138 | -0.302
## 4 | 1.163 | -0.741 0.254 0.405 | -0.893 0.510 0.589 | 0.090
## 5 | 0.586 | 0.115 0.006 0.038 | -0.509 0.166 0.755 | 0.266
## 6 | 1.352 | 1.255 0.729 0.862 | 0.002 0.000 0.000 | 0.502
## 7 | 1.192 | -1.164 0.627 0.954 | 0.151 0.015 0.016 | -0.207
## 8 | 0.618 | -0.309 0.044 0.249 | 0.535 0.183 0.748 | -0.031
## 9 | 1.352 | 0.832 0.320 0.378 | 1.046 0.700 0.599 | 0.205
## 10 | 2.309 | -2.058 1.960 0.795 | -1.019 0.665 0.195 | 0.233
## ctr cos2
## 1 0.613 0.370 |
## 2 0.358 0.996 |
## 3 0.113 0.055 |
## 4 0.010 0.006 |
## 5 0.088 0.206 |
## 6 0.312 0.138 |
## 7 0.053 0.030 |
## 8 0.001 0.002 |
## 9 0.052 0.023 |
## 10 0.067 0.010 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## Défense-base | 0.202 2.841 0.041 | 0.954 87.941 0.910 | 0.222 9.218
## Vitesse-base | 0.809 45.713 0.654 | -0.340 11.164 0.116 | 0.480 43.123
## Spécial-base | 0.858 51.447 0.736 | 0.096 0.895 0.009 | -0.504 47.658
## cos2
## Défense-base 0.049 |
## Vitesse-base 0.230 |
## Spécial-base 0.254 |
##
## Supplementary continuous variable
## Dim.1 cos2 Dim.2 cos2 Dim.3 cos2
## Force-base | 0.247 0.061 | 0.397 0.158 | 0.271 0.073 |
3. Choisir les axes où projeter les individus
# Projeter les individus sur les deux axes principaux
plot(notes.pca, choix = "ind")

# Projeter les individus sur les axes principaux 1 et 3
plot(notes.pca, axes = c(1, 3), choix = "ind")

4. Choisir les axes pour le cercle des corrélations
# Tracer les variables sur les axes principaux 1 et 2 (cercle de corrélation)
plot(notes.pca, choix = "var")

# Tracer les variables sur les axes principaux 1 et 3
plot(notes.pca, axes = c(1, 3), choix = "var")

5. Comment évaluez-vous les deux premiers axes? Est-ce qu’ils permettent de voir des tendances?
###Les deux premiers axes expliquent ensemble 82,21%(Dim 1 47.71%, Dim 2 34.50% ) de la variance totale, ce qui est assez représentatif. Ils montrent des tendances, notamment en distinguant les Pokémon avec des caractéristiques extrêmes. La majorité des individus sont concentrés autour de l’origine, indiquant des similarités entre eux. Les axes permettent de voir quelques tendances, mais la plupart des Pokémon n’ont pas de caractéristiques très marquées.