1. Introduction

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")

2. Présentation de la base de données

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
)

2.1 Description des individus

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.

2.2 Description des variables

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.

3. Statistiques descriptives

3.1 Statistiques numériques

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.

3.2 Distributions des variables

Les histogrammes suivants permettent d’observer la forme des distributions des variables (symétrie, asymétrie), ainsi que d’identifier d’éventuelles valeurs atypiques.

3.2.1 Variables liées à l’acidité

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.

3.2.2 Variables liées à l’alcool et à la densité

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.

3.2.3 Variables liées aux sulfites

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.

3.3 Corrélations entre variables

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.

4. Analyse factorielle

4.1 Choix de l’analyse factorielle: L’Analyse en Composantes Principales

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.

4.2 Objectifs de l’analyse

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.

4.3 Variables actives et illustratives

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.

4.4 Traitement des données

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.

4.4.1 Vérification des valeurs manquantes

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.

4.4.2 Standardisation des données

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.

4.5 Réalisation de l’ACP

# 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 |

5. Résultats et interprétation

5.1 Première représentation visuelle : axes 1 et 2

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.

5.2 Valeurs propres

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.

5.3 Critère de Kaiser : choix du nombre d’axes

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).

5.4 Interprétation des axes factoriels

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.

5.4.1 Plan factoriel (Dim 1, Dim 2)

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.

5.4.2 Plan factoriel (Dim 1, Dim 3)

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.

5.4.3 Plan factoriel (Dim 3, Dim 4)

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.

5.5 Projection des individus sur le plan factoriel

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.

5.6 Projection de la qualité du vin

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é.

6. Conclusion

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.