### Introduction Les graphiques sont essentiels pour visualiser la distribution des données, identifier des tendances, des valeurs aberrantes et communiquer efficacement les résultats. R offre de nombreuses fonctions graphiques de base, et des packages plus avancés comme `ggplot2` . Nous allons utiliser les fonctions graphiques de base de R. ### 1. Histogramme Un histogramme permet de représenter la **distribution de fréquence d’une variable quantitative continue**. Il regroupe les valeurs en classes et montre combien d’observations appartiennent à chaque intervalle. >[!example] Exemple : >On considère les rendements du blé (exprimés en quintaux par hectare) mesurés sur plusieurs parcelles agricoles. >À partir de l’histogramme obtenu, répondre aux questions suivantes : > >- Comment se répartissent les rendements ? > >- La distribution semble-t-elle symétrique ou asymétrique ? > >- Observe-t-on une concentration particulière des valeurs ? ```R # Jeu de données : rendement du blé (quintaux/hectare) rendement_ble <- c(45, 48, 50, 52, 55, 58, 60, 62, 65, 70, 72, 75, 78, 80, 85) # Histogramme du rendement du blé hist(rendement_ble, main = "Distribution des Rendements de Blé", # Titre du graphique xlab = "Rendement (quintaux/hectare)", # Label de l'axe X ylab = "Fréquence", # Label de l'axe Y col = "lightblue", # Couleur des barres border = "black") # Couleur des bordures ``` > [!note] Interprétation de l'histogramme > ![[Pasted image 20260217092354 1.png]] > ## 1. Comment se répartissent les rendements ? >Les rendements s’étendent approximativement de **45 à 85 quintaux/hectare**. >La majorité des valeurs se situe entre **50 et 80 q/ha**, avec une concentration plus marquée autour des classes intermédiaires (environ 55–75 q/ha). > >## 2. La distribution semble-t-elle symétrique ou asymétrique ? >Il n’y a pas de déséquilibre très marqué vers les faibles ou les fortes valeurs, ce qui suggère une distribution relativement homogène. >On peut parler d’une distribution **plutôt quasi-symétrique**, sans asymétrie prononcée. >## 3. Observe-t-on une concentration particulière des valeurs ? >Oui, on observe une concentration notable des rendements dans les classes centrales, principalement entre **50 et 80 q/ha**. >La majorité des observations se situe dans cet intervalle, tandis que les valeurs extrêmes (autour de 45 et 85 q/ha) sont moins fréquentes. ### 2. Diagramme en Boîte (Boxplot) Le diagramme en boîte est excellent pour visualiser la médiane, les quartiles et les valeurs aberrantes. Il est particulièrement utile pour comparer la distribution d'une variable quantitative entre différents groupes. >[!example] Exemple : >On considère les rendements du blé (exprimés en quintaux par hectare) mesurés sur plusieurs parcelles agricoles. L’objectif est de représenter la distribution de ces rendements afin d’évaluer leur variabilité. ```R # Jeu de données : rendement du blé (quintaux/hectare) rendement_ble <- c(45, 48, 50, 52, 55, 58, 60, 62, 65, 70, 72, 75, 78, 80, 85) # Diagramme en boîte du rendement du blé boxplot(rendement_ble, main = "Diagramme en boîte des Rendements de Blé", ylab = "Rendement (quintaux/hectare)", col = "lightgreen") ``` > [!note] Composants d'un Boxplot > - La ligne centrale de la boîte est la **médiane**. > - Les bords de la boîte représentent le **premier quartile (Q1)** et le **troisième quartile (Q3)**. > - Les "moustaches" s'étendent généralement jusqu'à $1.5 \times IQR$ des bords de la boîte, ou jusqu'aux valeurs minimales/maximales si elles sont à l'intérieur de cette limite. > - Les points au-delà des moustaches sont considérés comme des **valeurs aberrantes (outliers)**. > [!note] Interprétation du Boxplot des rendement de blé > ![[Pasted image 20260217093434 1.png]] > ### 1️-Position centrale > La ligne au centre de la boîte correspond à la **médiane**, située approximativement autour de **62 q/ha**. > Cela signifie que 50 % des parcelles ont un rendement inférieur à cette valeur et 50 % un rendement supérieur. > ### 2- Dispersion centrale >Les bords de la boîte représentent : >- **Q1 ≈ 53–55 q/ha** >- **Q3 ≈ 73–75 q/ha** > L’intervalle interquartile (IQR) se situe donc approximativement entre **55 et 75 q/ha**. > Cela indique que **la moitié des rendements** se concentre dans cet intervalle, ce qui montre une dispersion modérée des performances. > >### 3- Étendue et valeurs extrêmes > Les moustaches s’étendent approximativement de : > 45 q/ha (minimum) > 85 q/ha (maximum) > Aucun point isolé n’apparaît au-delà des moustaches : > Il n’y a pas de valeur aberrante (outlier) dans cet échantillon. --- ### 3. Diagramme en Barres (Barplot) Le diagramme en barres permet de représenter graphiquement la répartition d’une **variable qualitative**. Il sert à visualiser les effectifs ou les proportions associés aux différentes catégories, afin de comparer facilement leur importance relative. >[!example] Exemple : Dans cet exemple, on analyse les types de sol observés sur plusieurs zones d’une exploitation agricole. L’objectif est de déterminer quel type de sol est le plus fréquent. ```R # Créons un exemple de données qualitatives : type de sol type_sol <- c("Argileux", "Sableux", "Limoneux", "Argileux", "Sableux", "Limoneux", "Argileux", "Sableux", "Limoneux", "Sableux", "Argileux") table_sol <- table(type_sol) # La fonction `table()` compte le nombre d’occurrences de chaque catégorie. print(table_sol) barplot(table_sol, main = "Répartition des Types de Sol", xlab = "Type de Sol", ylab = "Nombre d'échantillons", col = c("brown", "tan", "grey")) # définit la couleur des barres ``` > [!note] Interprétation du diagramme en Barres > ![[Pasted image 20260217100359 1.png]] > Le graphique représente la répartition des types de sol observés dans l’échantillon. > >On constate que : >- Les sols **argileux** apparaissent 4 fois. >- Les sols **sableux** apparaissent également 4 fois. >- Les sols **limoneux** apparaissent 3 fois. >Les types de sol **argileux et sableux sont donc les plus représentés**, avec une fréquence identique. Le sol limoneux est légèrement moins fréquent, mais reste relativement bien représenté. ### 4. Diagramme Circulaire (Pie Chart) Le diagramme circulaire permet de représenter la **répartition proportionnelle** des différentes catégories d’une variable qualitative par rapport à l’ensemble des observations. Chaque secteur du cercle correspond à une catégorie, et sa taille est proportionnelle à sa fréquence ou à son pourcentage. >[!example] Exemple : >On souhaite représenter la proportion des différentes cultures cultivées dans une exploitation (en nombre de parcelles). > _Objectif_ >Visualiser la part relative de chaque culture dans l’ensemble des parcelles. ```R # Données : types de cultures observées culture <- c("Blé", "Maïs", "Orge", "Blé", "Maïs", "Blé", "Tournesol", "Orge", "Blé", "Maïs", "Tournesol", "Blé") # Calcul des fréquences table_culture <- table(culture) # Diagramme circulaire pie(table_culture, main = "Répartition des Cultures dans l'Exploitation", col = c("gold", "darkgreen", "orange", "lightblue")) ``` >[!note] Interprétation du diagramme circulaire >![[Pasted image 20260217101407 1.png]] >Le graphique représente la répartition des différentes cultures au sein de l’exploitation agricole. > >On observe que : >- **Le blé** occupe la plus grande part du cercle. Il s’agit donc de la culture dominante dans l’exploitation. >- **Le maïs** représente la deuxième proportion la plus importante. >- **L’orge** et le **tournesol** occupent des parts plus faibles et relativement proches l’une de l’autre. ### 5. Nuage de Points (Scatter Plot) Le nuage de points permet de représenter graphiquement la relation entre **deux variables quantitatives**. Chaque point du graphique correspond à une observation, positionnée selon ses valeurs sur l’axe horizontal (variable explicative) et l’axe vertical (variable réponse). Il s’agit d’un outil fondamental en **statistique bivariée**, car il permet d’identifier visuellement la nature de la relation entre les variables : tendance croissante ou décroissante, relation linéaire ou non linéaire, absence de relation, ainsi que la présence éventuelle de valeurs atypiques. >[!example] Exemple : >Relation entre la fertilisation azotée et le rendement du blé >Dans cet exercice, on étudie l’influence de la **quantité d’engrais appliquée (kg/hectare)** sur le **rendement du blé (quintaux/hectare)**. >L’objectif est d’examiner graphiquement s’il existe une relation entre ces deux variables quantitatives à l’aide d’un nuage de points. ```R # Variable quantitative : quantité d'engrais (kg/hectare) engrais <- c(100, 120, 110, 115, 130, 105, 125, 110, 128, 102, 140) # Variable quantitative : rendement du blé (quintaux/hectare) rendement_ble <- c(45, 48, 50, 52, 55, 58, 60, 62, 65, 70, 75) # Nuage de points entre l'engrais et le rendement plot(engrais, rendement_ble, main = "Rendement de Blé vs. Quantité d'Engrais", xlab = "Quantité d'Engrais (kg/hectare)", ylab = "Rendement (quintaux/hectare)", col = "blue", pch = 16) # pch = 16 pour des points pleins ``` > [!note] Interprétation du Nuage de Points > ![[Pasted image 20260217102302 1.png]] > Le graphique représente la relation entre la **quantité d’engrais appliquée (kg/hectare)** et le **rendement du blé (quintaux/hectare)**. > >### 1️- Tendance générale >On n’observe **pas de relation linéaire nette** entre les deux variables. >Même si certaines valeurs élevées d’engrais correspondent à des rendements élevés (ex. 140 kg/ha → 75 q/ha), d’autres doses importantes ne donnent pas systématiquement les meilleurs rendements. >### 2️- Dispersion des points >Les points sont relativement dispersés. >Pour une même quantité d’engrais (par exemple autour de 110 kg/ha), les rendements varient sensiblement. Cela montre que l’augmentation de l’engrais n’entraîne pas toujours une augmentation proportionnelle du rendement. >### 3- Interprétation agronomique >Cela suggère que le rendement ne dépend pas uniquement de la quantité d’engrais appliquée. D’autres facteurs (type de sol, conditions climatiques, gestion culturale) peuvent également jouer un rôle important. >### 4- Conclusion >Le nuage de points ne met pas en évidence une relation forte et claire entre la fertilisation et le rendement. Une analyse statistique complémentaire (corrélation ou régression) serait nécessaire pour confirmer l’existence ou non d’un lien significatif. ### 6. Diagramme empilé (Stacked Barplot) Le diagramme en barres empilées permet d’analyser simultanément **deux variables qualitatives**. Il montre, pour chaque catégorie principale, la répartition interne des sous-catégories tout en conservant l’information sur le total. Chaque barre représente un groupe, et les segments empilés illustrent la composition de ce groupe. >[!example] Exemple : >On souhaite étudier l’efficacité d’un traitement médical en comparant la réponse des patients selon le groupe auquel ils appartiennent : >- **Médicament** >- **Placebo** >La variable étudiée est la **réponse au traitement** (amélioration ou pas d’amélioration). ```R # Exemple de données : réponse au traitement selon le groupe groupe <- c("Médicament", "Médicament", "Médicament", "Placebo", "Placebo", "Placebo", "Médicament", "Placebo", "Médicament", "Placebo") reponse <- c("Amélioration", "Amélioration", "Pas d'amélioration", "Amélioration", "Pas d'amélioration", "Pas d'amélioration", "Amélioration", "Pas d'amélioration", "Amélioration", "Amélioration") # Tableau de contingence table_empilee <- table(groupe, reponse) print(table_empilee) # Diagramme en barres empilées barplot(table_empilee, main = "Réponse au traitement selon le groupe", xlab = "Groupe", ylab = "Nombre de patients", col = c("steelblue", "orange"), legend.text = TRUE) ``` > [!note] Interprétation du diagramme empilé > ![[Pasted image 20260217170619 1.png]] > Le diagramme présente la répartition des patients selon leur **réponse au traitement** (amélioration ou pas d’amélioration) et selon le **groupe** (médicament ou placebo). > ### 1- Cas d’amélioration >On observe que la majorité des patients ayant reçu le **médicament** présentent une amélioration. Le nombre d’améliorations est plus important dans le groupe médicament que dans le groupe placebo. >### 2-Cas de non-amélioration >À l’inverse, le groupe **placebo** présente davantage de cas sans amélioration. >Le nombre de patients ne montrant pas d’amélioration semble plus élevé dans ce groupe. >## Conclusion >Le diagramme empilé permet de comparer visuellement les proportions de réponse entre les groupes et met en évidence une tendance favorable au médicament par rapport au placebo. ### 7 Cas Concret : Analyse des Teneurs en Protéines >[!example] Exemple : >Une entreprise agroalimentaire produit des barres protéinées. Afin de contrôler la qualité, elle souhaite analyser la **teneur en protéines (g/100g)** de différents lots de production et comparer deux fournisseurs de matière première (protéine de lactosérum). > >L’objectif est : > >- d’étudier la distribution globale des teneurs, > >- de calculer les paramètres statistiques descriptifs, > >- de comparer les performances des deux fournisseurs, > >- d’illustrer les résultats à l’aide de représentations graphiques (Boxplot et Histogrammes) . ### 1. Création du jeu de données ```R # Création du jeu de données fournisseur <- c(rep("A", 10), rep("B", 10)) teneur_proteines <- c(22.5, 23.1, 21.9, 22.8, 23.5, 22.0, 22.7, 23.0, 22.9, 23.2, 21.0, 21.5, 20.8, 21.2, 21.8, 20.5, 21.4, 21.1, 21.6, 20.9) # Création d'un dataframe (structure de données tabulaire) df_proteines <- data.frame(Fournisseur = fournisseur, Teneur = teneur_proteines) print(df_proteines) ``` ### 2. Analyse descriptive globale ```R # Résumé statistique summary(df_proteines$Teneur) # Moyenne mean(df_proteines$Teneur) # Variance var(df_proteines$Teneur) # Écart-type sd(df_proteines$Teneur) ``` _Objectif :_ - Déterminer la moyenne globale. - Mesurer la dispersion (variance et écart-type). - Identifier les quartiles et l’intervalle interquartile. ### 3. Analyses graphiques _Boxplots_ Pour visualiser les différences entre les fournisseurs, les boxplots sont particulièrement efficaces. ```R # Boxplot comparatif des teneurs en protéines par fournisseur # Boxplot comparatif boxplot(Teneur ~ Fournisseur, data = df_proteines, main = "Teneur en Protéines selon le Fournisseur", xlab = "Fournisseur", ylab = "Teneur (g/100g)", col = c("orange", "purple")) ``` _Histogrammes par Fournisseur (pour une vue plus détaillée de la distribution)_ ```R # Séparer les données par fournisseur teneur_A <- df_proteines$Teneur[df_proteines$Fournisseur == "A"] teneur_B <- df_proteines$Teneur[df_proteines$Fournisseur == "B"] # Définir une plage commune pour les axes X pour faciliter la comparaison range_teneur <- range(df_proteines$Teneur) # Histogramme pour le fournisseur A hist(teneur_A, main = "Distribution des Teneurs (Fournisseur A)", xlab = "Teneur en Protéines (g/100g)", ylab = "Fréquence", col = "orange", xlim = range_teneur, # Utiliser la même échelle X breaks = 5) # Nombre de classes # Histogramme pour le fournisseur B hist(teneur_B, main = "Distribution des Teneurs (Fournisseur B)", xlab = "Teneur en Protéines (g/100g)", ylab = "Fréquence", col = "purple", xlim = range_teneur, # Utiliser la même échelle X breaks = 5) # Nombre de classes ``` >[!note] Correction: > > # Résumé statistique > summary(df_proteines$Teneur) Min. 1st Qu. Median Mean 3rd Qu. Max. 20.50 21.18 21.85 21.97 22.82 23.50 > > # Moyenne > mean(df_proteines$Teneur) [1] 21.97 > # Variance > var(df_proteines$Teneur) [1] 0.8548421 > # Écart-type > sd(df_proteines$Teneur) [1] 0.9245767 ## Interprétation: Les teneurs en protéines varient entre **20,5 g/100g et 23,5 g/100g**. La **moyenne globale** est de **21,97 g/100g**, ce qui indique que la production est centrée autour de 22 g/100g. La **variance (0,85)** et l’**écart-type (0,92)** montrent une dispersion modérée. Les teneurs restent relativement proches les unes des autres, ce qui traduit une production globalement homogène. Les quartiles indiquent que 50 % des valeurs sont comprises entre **21,18 g/100g et 22,82 g/100g**, ce qui confirme une concentration des données autour de la moyenne. _Boxplot _ ![[Pasted image 20260217173728 1.png]] ## Comparaison entre les fournisseurs L’analyse graphique (boxplot) montre une différence nette entre les deux fournisseurs : - Le **fournisseur A** présente des teneurs plus élevées. - Le **fournisseur B** affiche des valeurs plus faibles et plus regroupées autour de 21 g/100g. La médiane du fournisseur A est clairement supérieure à celle du fournisseur B. De plus, la dispersion semble légèrement plus faible pour le fournisseur A, indiquant une meilleure stabilité des lots. Aucune valeur aberrante importante n’est observée. _Histogramme pour le fournisseur A_ ![[Pasted image 20260217173834 1.png]]_Histogramme pour le fournisseur B_ ![[Pasted image 20260217173857 1.png]] ## Analyse des histogrammes Les histogrammes confirment ces observations : - Les teneurs du **fournisseur A** sont concentrées autour de 22,5–23 g/100g. - Les teneurs du **fournisseur B** sont concentrées autour de 20,5–21,5 g/100g. Les distributions apparaissent relativement homogènes dans chaque groupe, sans asymétrie marquée. ## Conclusion générale Les résultats indiquent que le **fournisseur A fournit une matière première plus riche en protéines**, avec une variabilité maîtrisée. Le fournisseur B présente des teneurs plus faibles, bien que relativement homogènes. D’un point de vue qualité, le fournisseur A semble donc plus performant pour garantir une teneur protéique plus élevée dans les barres produites. ## 📜 Historique - Dernière mise à jour : `17 Février 2026` - Rédigé par : [[Ferdaous BOUGHATTAS]]