L’étude de données complexes repose souvent sur l’analyse simultanée de plusieurs variables décrivant un même ensemble d’individus. Dans de nombreux domaines, ces variables peuvent être fortement corrélées entre elles, rendant l’interprétation directe des données difficile.
Les méthodes d’analyse factorielle constituent un ensemble de techniques statistiques permettant de synthétiser l’information contenue dans des données multivariées. Elles permettent de réduire la dimension des données tout en conservant les structures essentielles présentes dans celles-ci. Ces méthodes offrent ainsi une représentation simplifiée des données, facilitant leur exploration et leur interprétation.
Dans ce projet, on s’intéresse à une base de données décrivant des vins rouges à travers plusieurs caractéristiques physico-chimiques, telles que l’acidité, la teneur en alcool, la concentration en sulfites ou encore la densité. Ces variables décrivent différents aspects de la composition du vin. Il est donc nécessaire de les étudier conjointement au moyen d’une analyse multivariée.
Dans ce contexte, la problématique de ce travail est la suivante: quelles sont les principales dimensions qui structurent les caractéristiques physico-chimiques des vins rouges, et dans quelle mesure ces dimensions sont-elles associées à la qualité du vin, évaluée par une note globale?
wine <- read_excel("winequality-red.xlsx")
La base de données utilisée dans ce projet concerne des vins rouges portugais. Elle contient des mesures physico-chimiques réalisées lors de la production du vin, ainsi qu’une évaluation de la qualité du vin.
Cette base de données est issue du UCI Machine Learning
Repository et est publiquement disponible à l’adresse
suivante:
https://archive.ics.uci.edu/ml/datasets/Wine+Quality
reactable(
wine,
searchable = TRUE,
filterable = TRUE,
pagination = TRUE,
defaultPageSize = 20,
highlight = TRUE
)
Les individus de la base de données sont des vins rouges portugais. Chaque individu correspond à un vin unique, décrit par un ensemble de mesures physico-chimiques réalisées lors du processus de production.
La base de données comprend 1599 observations, ce qui constitue un effectif suffisant pour mener une analyse factorielle exploratoire et dégager des tendances globales.
La base de données comprend 11 variables quantitatives décrivant les caractéristiques physico-chimiques des vins rouges, ainsi qu’une variable supplémentaire correspondant la qualité globale du vin.
Les variables sont décrites ci-dessous:
fixed acidity : acidité fixe du vin, liée aux acides non volatils, influençant la fraîcheur et la stabilité du vin.
volatile acidity : acidité volatile, principalement due à l’acide acétique.
citric acid : quantité d’acide citrique, contribuant à la fraîcheur et à l’équilibre gustatif.
residual sugar : quantité de sucre résiduel après fermentation.
chlorides : concentration en chlorures, pouvant influencer la perception de salinité.
free sulfur dioxide : quantité de dioxyde de soufre sous forme libre, utilisée comme conservateur.
total sulfur dioxide : quantité totale de dioxyde de soufre, incluant la forme libre et la forme liée.
density : densité du vin, liée à la composition globale du vin.
pH : mesure de l’acidité globale du vin, influençant la stabilité microbiologique.
sulphates : concentration en sulfates, pouvant contribuer à la sensation de corps du vin.
alcohol : pourcentage d’alcool dans le vin, jouant un rôle majeur dans la perception sensorielle.
quality : évaluation sensorielle globale du vin, notée sur une échelle discrète, utilisée comme variable illustrative dans l’ACP.
dim(wine)
## [1] 1599 12
str(wine)
## tibble [1,599 × 12] (S3: tbl_df/tbl/data.frame)
## $ fixed acidity : num [1:1599] 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
## $ volatile acidity : num [1:1599] 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
## $ citric acid : num [1:1599] 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
## $ residual sugar : num [1:1599] 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
## $ chlorides : num [1:1599] 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
## $ free sulfur dioxide : num [1:1599] 11 25 15 17 11 13 15 15 9 17 ...
## $ total sulfur dioxide: num [1:1599] 34 67 54 60 34 40 59 21 18 102 ...
## $ density : num [1:1599] 0.998 0.997 0.997 0.998 0.998 ...
## $ pH : num [1:1599] 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
## $ sulphates : num [1:1599] 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
## $ alcohol : num [1:1599] 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
## $ quality : num [1:1599] 5 5 5 6 5 5 5 7 7 5 ...
Les résultats obtenus ci-dessus confirment le nombre d’individus et de variables de la base de données, ainsi que la nature de chacune des variables.
Cette section présente une analyse descriptive des variables physico-chimiques de la base de données. L’objectif est de résumer les principales caractéristiques des données, d’identifier les ordres de grandeur et d’éventuelles disparités entre les variables, et de préparer l’analyse factorielle.
summary(wine)
## fixed acidity volatile acidity citric acid residual sugar
## Min. : 4.60 Min. :0.1200 Min. :0.000 Min. : 0.900
## 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090 1st Qu.: 1.900
## Median : 7.90 Median :0.5200 Median :0.260 Median : 2.200
## Mean : 8.32 Mean :0.5278 Mean :0.271 Mean : 2.539
## 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420 3rd Qu.: 2.600
## Max. :15.90 Max. :1.5800 Max. :1.000 Max. :15.500
## chlorides free sulfur dioxide total sulfur dioxide density
## Min. :0.01200 Min. : 1.00 Min. : 6.00 Min. :0.9901
## 1st Qu.:0.07000 1st Qu.: 7.00 1st Qu.: 22.00 1st Qu.:0.9956
## Median :0.07900 Median :14.00 Median : 38.00 Median :0.9968
## Mean :0.08747 Mean :15.87 Mean : 46.47 Mean :0.9967
## 3rd Qu.:0.09000 3rd Qu.:21.00 3rd Qu.: 62.00 3rd Qu.:0.9978
## Max. :0.61100 Max. :72.00 Max. :289.00 Max. :1.0037
## pH sulphates alcohol quality
## Min. :2.740 Min. :0.3300 Min. : 8.40 Min. :3.000
## 1st Qu.:3.210 1st Qu.:0.5500 1st Qu.: 9.50 1st Qu.:5.000
## Median :3.310 Median :0.6200 Median :10.20 Median :6.000
## Mean :3.311 Mean :0.6581 Mean :10.42 Mean :5.636
## 3rd Qu.:3.400 3rd Qu.:0.7300 3rd Qu.:11.10 3rd Qu.:6.000
## Max. :4.010 Max. :2.0000 Max. :14.90 Max. :8.000
Les statistiques descriptives mettent en évidence une forte hétérogénéité entre les variables, tant en termes de moyenne que de dispersion. Certaines variables présentent des amplitudes importantes et une dispersion élevée, tandis que d’autres sont concentrées autour de valeurs plus restreintes.
En complément du résumé statistique, l’écart-type (et la variance) de chaque variable est calculé afin d’évaluer la dispersion des observations autour de la moyenne.
X <- wine[, 1:11]
desc_disp <- data.frame(
Variable = names(X),
Variance = sapply(X, var),
Ecart_type = sapply(X, sd)
)
desc_disp
## Variable Variance Ecart_type
## fixed acidity fixed acidity 3.031416e+00 1.741096318
## volatile acidity volatile acidity 3.206238e-02 0.179059704
## citric acid citric acid 3.794748e-02 0.194801137
## residual sugar residual sugar 1.987897e+00 1.409928060
## chlorides chlorides 2.215143e-03 0.047065302
## free sulfur dioxide free sulfur dioxide 1.094149e+02 10.460156970
## total sulfur dioxide total sulfur dioxide 1.082102e+03 32.895324478
## density density 3.562029e-06 0.001887334
## pH pH 2.383518e-02 0.154386465
## sulphates sulphates 2.873262e-02 0.169506980
## alcohol alcohol 1.135647e+00 1.065667582
Les écarts-types obtenus confirment que certaines variables présentent une dispersion plus importante que d’autres, ce qui renforce l’intérêt d’une standardisation avant l’analyse factorielle.
Les histogrammes suivants permettent d’observer la forme des distributions des variables (symétrie, asymétrie), ainsi que d’identifier d’éventuelles valeurs atypiques.
Les variables d’acidité jouent un rôle central dans la structure et la stabilité des vins. Elles influencent directement la fraîcheur et l’équilibre gustatif.
par(mfrow = c(1,3))
hist(wine$`fixed acidity`, main = "Fixed acidity", xlab = "Valeur")
hist(wine$`volatile acidity`, main = "Volatile acidity", xlab = "Valeur")
hist(wine$`citric acid`, main = "Citric acid", xlab = "Valeur")
par(mfrow = c(1,1))
Les distributions montrent des profils variables selon le type d’acidité. L’acidité volatile présente une dispersion plus marquée, ce qui suggère une hétérogénéité importante entre les vins.
La teneur en alcool et la densité sont étroitement liées à la composition globale du vin et à la perception sensorielle.
par(mfrow = c(1,2))
hist(wine$alcohol, main = "Alcohol", xlab = "Pourcentage")
hist(wine$density, main = "Density", xlab = "Valeur")
par(mfrow = c(1,1))
La distribution de la variable alcohol indique une concentration des valeurs autour d’un niveau moyen, tandis que la densité présente une variabilité plus faible.
Les sulfites sont utilisés comme conservateurs et jouent un rôle important dans la stabilité du vin.
par(mfrow = c(1,2))
hist(wine$`free sulfur dioxide`, main = "Free sulfur dioxide", xlab = "Valeur")
hist(wine$`total sulfur dioxide`, main = "Total sulfur dioxide", xlab = "Valeur")
par(mfrow = c(1,1))
Les deux variables présentent des distributions asymétriques à droite, avec une majorité de vins ayant de faibles concentrations en sulfites. La variabilité est plus marquée pour le dioxyde de soufre total, indiquant des différences importantes entre les vins sur cet aspect.
library(corrplot)
cor_mat <- cor(wine[,1:11])
corrplot(cor_mat, method="color", type="upper", tl.cex=0.7)
La matrice de corrélation met en évidence l’existence de relations linéaires entre plusieurs variables physico-chimiques. Certaines corrélations sont particulièrement marquées, notamment entre la quantité de dioxyde de soufre libre et total, ainsi qu’entre la densité et le taux d’alcool (corrélation négative). On observe également une corrélation négative entre le pH et l’acidité fixe. Ces corrélations traduisent une redondance partielle de l’information entre les variables, ce qui justifie l’utilisation d’une analyse factorielle afin de résumer les données dans un nombre réduit de dimensions.
L’Analyse en Composantes Principales (ACP) est une méthode d’analyse factorielle exploratoire adaptée à l’étude de bases de données comportant plusieurs variables quantitatives. Elle permet de transformer un ensemble de variables initiales, potentiellement corrélées, en un nombre réduit de composantes principales non corrélées, résumant l’essentiel de l’information contenue dans les données.
Dans le cas présent, la base de données comprend 11 variables physico-chimiques décrivant la composition des vins rouges. Ces variables mesurent des aspects complémentaires d’un même phénomène et sont susceptibles d’être corrélées, ce qui peut entraîner une redondance d’information. L’ACP apparaît donc comme une méthode particulièrement adaptée pour synthétiser ces informations et analyser la structure globale des vins.
L’objectif principal de cette analyse factorielle est de réduire la dimension de la base de données en résumant les variables physico-chimiques en un nombre limité de composantes principales interprétables. Cette réduction facilite la compréhension de la structure physico-chimique des vins rouges.
L’analyse vise également à étudier le positionnement des vins dans l’espace factoriel et à analyser le lien entre les dimensions obtenues et la qualité du vin.
Les variables physico-chimiques ont été retenues comme variables actives dans l’Analyse en Composantes Principales, car elles décrivent directement la composition du vin et participent à la construction des axes factoriels.
La variable quality, bien qu’elle soit quantitative, correspond à une évaluation globale du vin et constitue une variable de synthèse. Afin de ne pas influencer la construction des axes factoriels, elle est utilisée comme variable illustrative. Elle sera projetée a posteriori dans l’espace factoriel afin d’analyser son lien avec les caractéristiques physico-chimiques des vins.
Avant de procéder à l’Analyse en Composantes Principales, un traitement préliminaire des données est nécessaire afin de garantir la qualité de l’analyse.
Une première étape consiste à vérifier la présence éventuelle de valeurs manquantes dans la base de données. La présence de valeurs manquantes pourrait affecter les résultats de l’analyse factorielle et nécessiter le recours à des méthodes d’imputation ou de suppression de données.
colSums(is.na(wine))
## fixed acidity volatile acidity citric acid
## 0 0 0
## residual sugar chlorides free sulfur dioxide
## 0 0 0
## total sulfur dioxide density pH
## 0 0 0
## sulphates alcohol quality
## 0 0 0
Les résultats montrent qu’aucune valeur manquante n’est présente dans la base de données. Il est donc possible de procéder directement à la standardisation des variables avant la réalisation de l’Analyse en Composantes Principales.
Avant la réalisation de l’Analyse en Composantes Principales, les variables sont centrées et réduites. Le centrage consiste à soustraire la moyenne de chaque variable afin d’obtenir des variables de moyenne nulle, tandis que la réduction permet de ramener les variables à variance unitaire.
Ce centrage-réduction, également appelé standardisation, garantit que chaque variable contribue de manière équivalente à la construction des axes factoriels, indépendamment de son unité de mesure.
# Variables actives : caractéristiques physico-chimiques
X <- wine[, 1:11]
# ACP avec centrage-réduction
pca <- PCA(X, scale.unit = TRUE, graph = FALSE)
L’ACP a été réalisée sur les 11 variables quantitatives centrées et réduites. Un résumé des principaux résultats de l’analyse est présenté ci-dessous.
summary(pca)
##
## Call:
## PCA(X = X, scale.unit = TRUE, graph = FALSE)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
## Variance 3.099 1.926 1.551 1.213 0.959 0.660 0.584
## % of var. 28.174 17.508 14.096 11.029 8.721 5.996 5.307
## Cumulative % of var. 28.174 45.682 59.778 70.807 79.528 85.525 90.832
## Dim.8 Dim.9 Dim.10 Dim.11
## Variance 0.423 0.345 0.181 0.060
## % of var. 3.845 3.133 1.648 0.541
## Cumulative % of var. 94.677 97.810 99.459 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2
## 1 | 2.645 | -1.620 0.053 0.375 | 0.451 0.007 0.029 |
## 2 | 2.824 | -0.799 0.013 0.080 | 1.857 0.112 0.432 |
## 3 | 1.936 | -0.748 0.011 0.149 | 0.882 0.025 0.208 |
## 4 | 3.045 | 2.358 0.112 0.600 | -0.270 0.002 0.008 |
## 5 | 2.645 | -1.620 0.053 0.375 | 0.451 0.007 0.029 |
## 6 | 2.540 | -1.584 0.051 0.389 | 0.569 0.011 0.050 |
## 7 | 2.115 | -1.101 0.024 0.271 | 0.608 0.012 0.083 |
## 8 | 2.726 | -2.249 0.102 0.681 | -0.417 0.006 0.023 |
## 9 | 2.093 | -1.087 0.024 0.270 | -0.309 0.003 0.022 |
## 10 | 3.302 | 0.655 0.009 0.039 | 1.665 0.090 0.254 |
## Dim.3 ctr cos2
## 1 -1.774 0.127 0.450 |
## 2 -0.912 0.034 0.104 |
## 3 -1.171 0.055 0.366 |
## 4 0.243 0.002 0.006 |
## 5 -1.774 0.127 0.450 |
## 6 -1.538 0.095 0.367 |
## 7 -1.076 0.047 0.259 |
## 8 -0.987 0.039 0.131 |
## 9 -1.518 0.093 0.526 |
## 10 1.209 0.059 0.134 |
##
## Variables (the 10 first)
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3
## fixed acidity | 0.861 23.943 0.742 | -0.153 1.221 0.024 | -0.154
## volatile acidity | -0.420 5.692 0.176 | 0.382 7.559 0.146 | -0.560
## citric acid | 0.816 21.495 0.666 | -0.211 2.304 0.044 | 0.297
## residual sugar | 0.257 2.135 0.066 | 0.378 7.403 0.143 | 0.126
## chlorides | 0.374 4.505 0.140 | 0.205 2.192 0.042 | -0.115
## free sulfur dioxide | -0.064 0.131 0.004 | 0.713 26.375 0.508 | 0.534
## total sulfur dioxide | 0.042 0.056 0.002 | 0.790 32.432 0.625 | 0.401
## density | 0.696 15.630 0.484 | 0.324 5.456 0.105 | -0.422
## pH | -0.772 19.230 0.596 | 0.009 0.005 0.000 | 0.072
## sulphates | 0.428 5.901 0.183 | -0.052 0.141 0.003 | 0.348
## ctr cos2
## fixed acidity 1.520 0.024 |
## volatile acidity 20.247 0.314 |
## citric acid 5.676 0.088 |
## residual sugar 1.026 0.016 |
## chlorides 0.858 0.013 |
## free sulfur dioxide 18.386 0.285 |
## total sulfur dioxide 10.395 0.161 |
## density 11.483 0.178 |
## pH 0.333 0.005 |
## sulphates 7.828 0.121 |
Dans un premier temps, afin de faciliter l’interprétation visuelle, les individus sont représentés sur le plan factoriel formé par les deux premières composantes principales (Dim 1 et Dim 2).
La projection des individus sur le plan factoriel permet d’analyser la répartition des vins en fonction des deux premières composantes principales et d’identifier des profils de vins aux caractéristiques physico-chimiques similaires.
plot(
pca,
choix = "ind",
axes = c(1, 2),
title = "Projection des individus (axes 1 et 2)",
col.ind = "gray"
)
La projection des individus met en évidence une dispersion des vins sur le plan factoriel, traduisant une diversité de profils physico-chimiques. Les individus situés à proximité les uns des autres présentent des caractéristiques similaires, tandis que ceux éloignés du centre correspondent à des profils plus spécifiques.
Les valeurs propres issues de l’Analyse en Composantes Principales permettent d’évaluer la part de variance expliquée par chaque composante. Elles constituent un critère essentiel pour déterminer le nombre de dimensions pertinentes à retenir pour l’interprétation des résultats.
pca$eig
## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 3.09913244 28.1739313 28.17393
## comp 2 1.92590969 17.5082699 45.68220
## comp 3 1.55054349 14.0958499 59.77805
## comp 4 1.21323253 11.0293866 70.80744
## comp 5 0.95929207 8.7208370 79.52827
## comp 6 0.65960826 5.9964388 85.52471
## comp 7 0.58379122 5.3071929 90.83191
## comp 8 0.42295670 3.8450609 94.67697
## comp 9 0.34464212 3.1331102 97.81008
## comp 10 0.18133317 1.6484833 99.45856
## comp 11 0.05955831 0.5414392 100.00000
Le tableau des valeurs propres indique une décroissance de la part de variance expliquée au fil des composantes. Le premier axe explique environ 28 % de la variance totale, tandis que le second axe en explique environ 18 %. À eux deux, les deux premiers axes cumulent près de 46 % de l’information totale.
barplot(
pca$eig[, 2],
names.arg = 1:nrow(pca$eig),
xlab = "Composantes principales",
ylab = "Pourcentage de variance expliquée",
main = "Graphique des valeurs propres"
)
Le scree plot permet de visualiser la répartition de la variance expliquée. Il met en évidence que l’apport des composantes diminue progressivement, et que les axes suivants contribuent de manière plus limitée à l’explication de la variabilité.
L’étude des valeurs propres permet d’identifier les composantes les plus informatives. Le nombre d’axes à retenir sera précisé dans la section suivante à l’aide du critère de Kaiser.
Afin de déterminer objectivement le nombre d’axes à retenir, on applique le critère de Kaiser, qui consiste à conserver uniquement les composantes dont la valeur propre est strictement supérieure à 1.
valeurs_propres <- pca$eig[, 1]
nb_axes_kaiser <- sum(valeurs_propres > 1)
nb_axes_kaiser
## [1] 4
Le critère de Kaiser conduit à retenir les axes 1 à 4 (valeurs propres > 1).
Le cercle des corrélations permet d’analyser les relations entre les variables physico-chimiques et les axes factoriels. Il met en évidence les variables les mieux représentées sur le plan factoriel ainsi que les corrélations positives ou négatives entre elles.
En complément du cercle des corrélations, l’analyse des contributions permet d’identifier les variables qui participent le plus à la construction de chaque axe. L’analyse des cos² mesure quant à elle la qualité de représentation des variables sur les axes factoriels.
plot(
pca,
choix = "var",
axes = c(1, 2),
title = "Cercle des corrélations (axes 1 et 2)"
)
Le premier axe factoriel (Dim 1) est principalement structuré par
les variables liées à l’acidité et à la concentration du vin. Il est
positivement corrélé à l’acidité fixe, à l’acide citrique, à la densité,
ainsi qu’aux chlorures et aux sulfates. À l’inverse, le pH est corrélé
négativement à cet axe.
Ainsi, l’axe 1 oppose des vins présentant une forte acidité et une plus
grande concentration à des vins caractérisés par un pH plus élevé,
traduisant une acidité plus faible.
Le second axe factoriel (Dim 2) est principalement structuré par
les variables liées aux sulfites et au sucre résiduel. Il est fortement
et positivement corrélé au dioxyde de soufre total et libre, ainsi qu’au
sucre résiduel. À l’inverse, la teneur en alcool est corrélée
négativement à cet axe.
Ainsi, l’axe 2 oppose des vins présentant des niveaux élevés de sulfites
et de sucre résiduel à des vins plus alcoolisés.
Afin de confirmer quantitativement les tendances observées sur le cercle des corrélations, on étudie les contributions et les cos² des variables sur les deux premiers axes.
pca$var$contrib[, 1:2]
## Dim.1 Dim.2
## fixed acidity 23.94284012 1.221085510
## volatile acidity 5.69224981 7.558676909
## citric acid 21.49543128 2.304061561
## residual sugar 2.13473003 7.402765617
## chlorides 4.50486115 2.191926302
## free sulfur dioxide 0.13073666 26.375087024
## total sulfur dioxide 0.05557737 32.431539659
## density 15.63040015 5.455750947
## pH 19.22994607 0.004503474
## sulphates 5.90107730 0.141029661
## alcohol 1.28215005 14.913573336
L’analyse des contributions confirme l’interprétation des axes. Le premier axe est principalement construit par fixed acidity (≈24%), citric acid (≈21%), pH (≈19%) et density (≈16%). Le second axe est dominé par les variables liées aux sulfites, en particulier total sulfur dioxide (≈32%) et free sulfur dioxide (≈26%), ainsi que alcohol (≈15%).
pca$var$cos2[, 1:2]
## Dim.1 Dim.2
## fixed acidity 0.742020325 2.351700e-02
## volatile acidity 0.176410360 1.455733e-01
## citric acid 0.666171884 4.437414e-02
## residual sugar 0.066158111 1.425706e-01
## chlorides 0.139611613 4.221452e-02
## free sulfur dioxide 0.004051702 5.079604e-01
## total sulfur dioxide 0.001722416 6.246022e-01
## density 0.484406802 1.050728e-01
## pH 0.595961497 8.673284e-05
## sulphates 0.182882201 2.716104e-03
## alcohol 0.039735528 2.872220e-01
L’analyse des cos² (qualité de représentation) montre que les variables fixed acidity, citric acid et pH sont très bien représentées sur l’axe 1, tandis que total sulfur dioxide et free sulfur dioxide présentent une très bonne qualité de représentation sur l’axe 2. Ces résultats confirment que l’interprétation du plan (Dim1, Dim2) repose surtout sur les variables d’acidité pour Dim1 et sur les variables liées aux sulfites pour Dim2.
plot(
pca,
choix = "var",
axes = c(1, 3),
title = "Cercle des corrélations (axes 1 et 3)"
)
On observe que l’axe 3 est positivement corrélé à la teneur en alcool
ainsi qu’aux sulfites (dioxyde de soufre libre et total). À l’inverse,
l’acidité volatile présente une corrélation négative marquée avec cet
axe.
Ainsi, la troisième composante oppose des vins plus riches en alcool et
en sulfites à des vins caractérisés par une acidité volatile plus
élevée.
pca$var$contrib[, 3]
## fixed acidity volatile acidity citric acid
## 1.5203278 20.2466277 5.6761665
## residual sugar chlorides free sulfur dioxide
## 1.0258323 0.8577322 18.3863327
## total sulfur dioxide density pH
## 10.3951113 11.4833793 0.3328984
## sulphates alcohol
## 7.8280290 22.2475629
pca$var$cos2[, 3]
## fixed acidity volatile acidity citric acid
## 0.023573343 0.313932767 0.088011430
## residual sugar chlorides free sulfur dioxide
## 0.015905976 0.013299510 0.285088085
## total sulfur dioxide density pH
## 0.161180721 0.178054790 0.005161734
## sulphates alcohol
## 0.121376994 0.344958138
Cette interprétation est confirmée par l’analyse des contributions et des cos², qui montrent que alcohol, volatile acidity et les variables liées aux sulfites, ainsi que la densité, sont les plus influentes et les mieux représentées sur Dim3.
plot(
pca,
choix = "var",
axes = c(3, 4),
title = "Cercle des corrélations (axes 3 et 4)"
)
L’axe 4 (Dim 4) est principalement structuré par chlorides et sulphates, qui présentent des corrélations positives marquées avec cette dimension. À l’inverse, residual sugar (et dans une moindre mesure fixed acidity) est corrélé négativement à Dim 4.
pca$var$contrib[, 4]
## fixed acidity volatile acidity citric acid
## 5.272413663 0.623464736 0.630725932
## residual sugar chlorides free sulfur dioxide
## 13.897429461 44.381545351 0.189554159
## total sulfur dioxide density pH
## 0.119557690 3.045016549 0.001434702
## sulphates alcohol
## 30.346035928 1.492821829
pca$var$cos2[, 4]
## fixed acidity volatile acidity citric acid
## 6.396664e-02 7.564077e-03 7.652172e-03
## residual sugar chlorides free sulfur dioxide
## 1.686081e-01 5.384513e-01 2.299733e-03
## total sulfur dioxide density pH
## 1.450513e-03 3.694313e-02 1.740627e-05
## sulphates alcohol
## 3.681680e-01 1.811140e-02
Cette interprétation est confirmée par les contributions et les cos², qui montrent que chlorides et sulphates sont les variables les plus influentes et les mieux représentées sur Dim 4.
Comme expliqué précédemment, la projection des individus sur le plan factoriel permet de visualiser la dispersion des vins dans l’espace construit par l’ACP. Les individus proches les uns des autres présentent des profils physico-chimiques similaires, tandis que ceux éloignés traduisent des caractéristiques plus spécifiques.
plot(
pca,
choix = "ind",
axes = c(1, 2),
title = "Projection des individus (axes 1 et 2)",
col.ind = "gray"
)
plot(
pca,
choix = "ind",
axes = c(1, 3),
title = "Projection des individus (axes 1 et 3)",
col.ind = "gray"
)
plot(
pca,
choix = "ind",
axes = c(3, 4),
title = "Projection des individus (axes 3 et 4)",
col.ind = "gray"
)
Les projections des individus sur les différents plans factoriels montrent une forte concentration des vins autour de l’origine, indiquant qu’une grande partie des observations présente un profil physico-chimique relativement moyen. Le plan (Dim1, Dim2), qui explique la plus grande part de variance, met en évidence une dispersion globale importante traduisant la diversité des profils. Les plans complémentaires (Dim1, Dim3) et (Dim3, Dim4) permettent d’explorer les axes supplémentaires retenus par le critère de Kaiser: ils ne révèlent pas de structure de groupes très nette, mais mettent en évidence certains individus plus éloignés du centre, correspondant à des vins présentant des caractéristiques spécifiques sur les dimensions liées notamment à l’alcool, aux sulfites et aux chlorures/sulfates.
La variable quality correspond à une évaluation globale du vin et ne décrit pas directement ses caractéristiques physico-chimiques. Pour cette raison, elle est considérée comme une variable illustrative et n’intervient pas dans la construction des axes factoriels.
La projection de la qualité du vin sur le plan factoriel permet d’analyser le lien entre la qualité et les dimensions physico-chimiques mises en évidence par l’ACP. Elle permet notamment d’observer si des vins de qualité similaire occupent des zones spécifiques de l’espace factoriel.
Les individus sont colorés en fonction de leur niveau de qualité afin de visualiser l’éventuelle structuration des vins selon cette variable.
wine$QualiteVin <- factor(wine$quality)
pca_q <- PCA(
wine,
scale.unit = TRUE,
quanti.sup = 12, # quality (numérique)
quali.sup = 13, # QualiteVin (catégorielle)
graph = FALSE
)
plot(
pca_q,
choix = "ind",
axes = c(1, 2),
habillage = 13,
title = "Projection des individus selon la qualité du vin"
)
Bien qu’aucune séparation nette n’apparaisse entre les différents niveaux de qualité, certaines tendances peuvent être observées. Les vins de qualité 6, qui constituent la classe majoritaire, sont répartis sur l’ensemble du plan factoriel, traduisant une grande diversité de profils physico-chimiques.
Les vins de qualité 5 tendent à se situer davantage dans les quadrants supérieurs, associés à des valeurs positives de la seconde composante, tandis que les vins de qualité 7 apparaissent plus fréquemment dans les quadrants inférieurs, liés à des valeurs négatives de cet axe. Ces tendances suggèrent un lien entre la qualité du vin et certaines dimensions physico-chimiques, notamment la teneur en alcool et en sulfites, sans pour autant permettre une discrimination parfaite des niveaux de qualité.
# Coordonnées des individus
coords <- pca_q$ind$coord[, 1:2]
# Ajouter la qualité
df_scores <- data.frame(
Dim1 = coords[, 1],
Dim2 = coords[, 2],
Qualite = wine$quality
)
# Moyennes par niveau de qualité
aggregate(cbind(Dim1, Dim2) ~ Qualite, data = df_scores, mean)
## Qualite Dim1 Dim2
## 1 3 -0.70585419 0.42082974
## 2 4 -0.88263198 0.09941731
## 3 5 -0.05267789 0.59148692
## 4 6 -0.01087594 -0.26998505
## 5 7 0.46801779 -1.07074535
## 6 8 0.19527735 -1.49728991
Afin de compléter ces observations, les coordonnées moyennes des individus sur le plan (Dim1, Dim2) ont été calculées pour chaque niveau de qualité. Les résultats confirment quantitativement les tendances visibles sur la projection : les vins de qualité 5 présentent en moyenne une coordonnée positive sur la seconde composante principale, tandis que les vins de qualité 7 et 8 sont associés à des coordonnées moyennes nettement négatives. La qualité 6 occupe une position intermédiaire, proche de l’origine, ce qui est cohérent avec sa dispersion sur l’ensemble du plan. Ainsi, bien qu’aucune séparation nette n’apparaisse entre les classes, cette structuration selon la seconde composante principale suggère que la qualité du vin est partiellement liée aux variables qui construisent cet axe, notamment l’alcool (corrélation négative) et les sulfites/sucre résiduel (corrélations positives).
La projection sur le plan (Dim1, Dim3) permet d’explorer l’éventuelle relation entre la qualité et la troisième composante principale, en complément du plan (Dim1, Dim2).
plot(
pca_q,
choix = "ind",
axes = c(1, 3),
habillage = 13,
title = "Projection des individus selon la qualité du vin (axes 1 et 3)"
)
Sur le plan (Dim1, Dim3), les vins de qualité 6 restent dispersés sur l’ensemble du graphique, ce qui confirme l’absence de séparation nette. Toutefois, on observe une tendance selon la troisième composante principale : les vins de qualité 5 se situent davantage pour des valeurs négatives, tandis que les vins de qualité 7 apparaissent plus fréquemment pour des valeurs positives. Cela suggère que la qualité du vin est partiellement associée à la troisième composante principale, en lien avec les variables qui la structurent (alcool, sulfites et acidité volatile).
# Coordonnées des individus
coords <- pca_q$ind$coord[, c(1,3)]
df_scores <- data.frame(
Dim1 = coords[, 1],
Dim3 = coords[, 2],
Qualite = wine$quality
)
# Moyennes par niveau de qualité
aggregate(cbind(Dim1, Dim3) ~ Qualite, data = df_scores, mean)
## Qualite Dim1 Dim3
## 1 3 -0.70585419 -1.9442564
## 2 4 -0.88263198 -0.8500769
## 3 5 -0.05267789 -0.3729181
## 4 6 -0.01087594 0.1627746
## 5 7 0.46801779 0.9537293
## 6 8 0.19527735 1.3784190
Afin de compléter l’analyse graphique réalisée sur le plan (Dim1, Dim3), les coordonnées moyennes des individus ont été calculées pour chaque niveau de qualité. Les résultats mettent en évidence une évolution progressive selon la troisième composante principale: les vins de qualité 3 présentent une valeur moyenne fortement négative sur cet axe (≈ -1.94), suivis des vins de qualité 4 (≈ -0.85) et 5 (≈ -0.37). La qualité 6 occupe une position intermédiaire (≈ 0.16), proche de l’origine. Enfin, les vins de meilleure qualité se distinguent par des valeurs moyennes positives de plus en plus élevées : ≈ 0.95 pour la qualité 7 et ≈ 1.38 pour la qualité 8.
Ainsi, ces résultats suggèrent que les vins mieux notés tendent à être associés à des valeurs positives de cette composante, ce qui correspond globalement à des niveaux plus élevés d’alcool (et de sulfites) et à une acidité volatile plus faible, sans pour autant permettre une séparation parfaite entre les classes de qualité.
Ce projet a consisté à appliquer une Analyse en Composantes Principales (ACP) à une base de données décrivant des vins rouges à partir de 11 variables physico-chimiques. L’objectif était d’identifier les principales dimensions structurant ces caractéristiques et d’étudier dans quelle mesure ces dimensions sont associées à la qualité du vin. L’ACP s’est révélée pertinente pour réduire la dimension des données tout en conservant une grande partie de l’information, permettant ainsi une interprétation plus claire de la structure globale des vins.
L’étude des valeurs propres montre que les deux premières composantes expliquent près de 46 % de la variance totale (≈28 % pour Dim1 et ≈18 % pour Dim2). Le critère de Kaiser a ensuite conduit à retenir 4 axes, indiquant que la variabilité des vins ne peut pas être résumée uniquement par les deux premières dimensions. L’interprétation des axes factoriels met en évidence plusieurs dimensions complémentaires : la première composante est principalement liée à l’acidité et à la concentration du vin, la seconde oppose des vins riches en sulfites et en sucre résiduel à des vins plus alcoolisés, tandis que la troisième et la quatrième composantes apportent des informations supplémentaires, notamment en lien avec l’alcool, l’acidité volatile, les sulfites, ainsi que la teneur en chlorures et sulfates.
La projection des individus dans l’espace factoriel confirme la grande diversité des profils physico-chimiques, avec une forte concentration autour d’un profil moyen et quelques vins plus atypiques. Concernant la qualité, aucune séparation nette n’apparaît entre les classes, ce qui montre que la note finale ne dépend pas d’une seule variable. Toutefois, des tendances ressortent : sur la seconde composante, les vins mieux notés (7 et 8) sont davantage associés à des valeurs négatives, ce qui correspond globalement à des vins plus alcoolisés et présentant des niveaux plus faibles de sulfites/sucre résiduel. De plus, l’analyse sur la troisième composante met en évidence une progression des coordonnées moyennes selon la qualité, suggérant que les vins mieux notés tendent à être associés à des valeurs positives de cette dimension, en lien avec une plus forte teneur en alcool (et une moindre acidité volatile).
Ainsi, l’ACP a permis de répondre à la problématique en identifiant les principales dimensions sous-jacentes des caractéristiques physico-chimiques des vins rouges et en montrant que la qualité est partiellement liée à plusieurs de ces dimensions, sans pour autant permettre une discrimination parfaite. La qualité du vin apparaît donc comme le résultat d’une combinaison de facteurs physico-chimiques plutôt que d’un seul facteur dominant.