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.