Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Tests de corrélation de deux variables quantitatives :Objectifs Tester la corrélation de deux variables quantitatives. Cette capsule s'appuie sur le jeu de données relatifs à l'analyse chimique de vins blancs et de vins rouges, et en particulier sur l'étude de la corrélation entre les variables Acidité totale `AcTot` et Acide malique `Malique`, pour les vins blancs et les vins rouges : | Jeu de données | Excel | CSV | Présentation | Commandes R | |-----------------|--------|-------------|----------------|------------| | Donneées Vins | [](donnees/DonneesVins.xlsx) | [](donnees/DonneesVins.csv) | [](video/DonneesVins.html) | [Import et préparation des données](#ligne_code_importation_vins) | :Exemple {#ligne_code_importation_vins, toggle=popup} Ici, pas de difficulté particulière pour l'importation des données "Vins" : ```r Vins <- read.csv2("DonneesVins.csv", header = TRUE, stringsAsFactors = TRUE) ``` Une fois les données importées, les sous-ensembles des vins rouges et des vins blancs peuvent être extraits : ```r Rouges <- subset(Vins, Couleur=="Rouge") Blancs <- subset(Vins, Couleur=="Blanc") ``` La corrélation entre deux variables quantitatives peut se mesurer par le coefficient de corrélation linéaire de Pearson. Il peut être calculé à l'aide de la fonction `cor()`. Toutefois, cette dernière ne permet pas de réaliser le test d'hypothèse associé. La fonction `cor.test()` remédie à ce problème : | Rôle | Commande R | Arguments | Exemple | Exercice | |:------------:|:-------------:|:---------:|:-------:|:-----------------------------:| | Corrélation linéaire | `cor.test()` | `x, y, method = 'pearson'` | [ici](#exemple_pearson) | [ici](#exo_pearson) | :Exemple {#exemple_pearson, toggle=popup} La commande `cor.test()` est employée pour calculer le coefficient de corrélation des variables `Acide malique` et `Acidité totale` sur le sous-ensemble des vins blancs : ```r # L'argument method='Pearson' est ici facultatif # C'est la valeur par défaut de l'argument cor.test(Blancs$Malique, Blancs$AcTot, method = 'pearson') ``` ``` ## ## Pearson's product-moment correlation ## ## data: Blancs$Malique and Blancs$AcTot ## t = 4.5628, df = 16, p-value = 0.0003193 ## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: ## 0.4393196 0.9021232 ## sample estimates: ## cor ## 0.751959 ``` La valeur du coefficient est ici de `0.75`, ce qui suggère une forte corrélation. Le test d'hypothèse, basé sur une statistique de Student `t = 4.56`, conduit à une valeur-p : `p-value = 0.0003193`. La corrélation est donc significative entre les deux variables pour les vins blancs. :Exercice {#exo_pearson, toggle=popup} - Tester la corrélation linéaire entre les variables `Acide Malique` et `Acidité totale` sur les vins rouges. - Un des vins, atypique, montre des valeurs d'acide malique et d'acidité totale très supérieures aux autres. Montrer que la suppression de ce vin modifie les conclusions du test. :Corrigé {#reponse_cor, toggle=collapse} ```r cor.test(Rouges$Malique, Rouges$AcTot) ``` ``` ## ## Pearson's product-moment correlation ## ## data: Rouges$Malique and Rouges$AcTot ## t = 3.899, df = 16, p-value = 0.001276 ## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: ## 0.3428757 0.8785711 ## sample estimates: ## cor ## 0.6980095 ``` Lorsque l'on considère l'ensemble des vins rouges, la corrélation apparait relativement forte (`0.6980095`) et significative (`p-value = 0.001276`). Le coefficient de corrélation linéaire et le test associé, peu robustes aux valeurs extrêmes, sont fortement affectés par la présence du vin atypique. ```r RougesBis <- subset(Rouges, Malique < max(Malique)) cor.test(RougesBis$Malique, RougesBis$AcTot) ``` ``` ## ## Pearson's product-moment correlation ## ## data: RougesBis$Malique and RougesBis$AcTot ## t = -0.39955, df = 15, p-value = 0.6951 ## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: ## -0.5558466 0.3976397 ## sample estimates: ## cor ## -0.1026177 ``` Une fois ce vin écarté, le coefficient de corrélation prend une valeur faible et négative (`-0.1026177`), il ne s'écarte pas significativement de `0` (`p-value = 0.6951`). :Compléments : Tests sur les coefficients de corrélation non paramétriques {#add_test_spearman_kendall, toggle=collapse} Lorsque les données ne se prêtent pas à l'utilisation d'un coefficient de corrélation linéaire, il est possible d'utiliser des alternatives non paramétriques comme les coefficients de corrélation de Spearman ou de Kendall. Le coefficient de Spearman est basé sur une transformation en rangs et le coefficient de Kendall est basé sur une mesure très simple de la liaison entre deux variables. Ils sont tous les deux normalisés entre `-1` et `1`. La fonction `cor.test()` peut être paramétrée pour que le coefficient employé soit l'un des deux coefficients non paramétriques. Un test adapté à chaque coefficient est alors mis en oeuvre. | Rôle | Commande R | Exemple | Exercice | |:------------:|:-------------:|:---------:|:-------:|:-----------------------------:| |Spearman | `cor(x, y, method = "spearman")` | [ici](#exemple_spearman)| [ici](#exo_spearman)| |Kendall | `cor(x, y, method = "kendall")` | [ici](#exemple_kendall)|| :Exercice {#exo_spearman, toggle=popup} Tester la corrélation linéaire entre les variables `Acide Malique` et `Acidité totale` sur les vins rouges. Montrer que la présence de la valeur extrême ne modifie pas les conclusions du test, contrairement au cas du coefficient de corrélation linéaire de Pearson. :Corrigé {#reponse_spear, toggle=collapse} ```r cor.test(Rouges$Malique, Rouges$AcTot, method = 'spearman') ``` ``` ## ## Spearman's rank correlation rho ## ## data: Rouges$Malique and Rouges$AcTot ## S = 1012, p-value = 0.8612 ## alternative hypothesis: true rho is not equal to 0 ## sample estimates: ## rho ## -0.04438648 ``` ```r RougesBis <- subset(Rouges, Malique < max(Malique)) cor.test(RougesBis$Malique, RougesBis$AcTot, method = 'spearman') ``` ``` ## ## Spearman's rank correlation rho ## ## data: RougesBis$Malique and RougesBis$AcTot ## S = 1014.3, p-value = 0.3473 ## alternative hypothesis: true rho is not equal to 0 ## sample estimates: ## rho ## -0.2430085 ``` La présence ou l'absence du vin extrême ne modifie pas les conclusions du tests. La valeur du coefficient reste faible et, dans les deux cas, la relation est non significative (p-value de `0.8612` et `0.3473`). :Exemple {#exemple_spearman, toggle=popup} La commande `cor.test()` avec l'option `method = "spearman"` permet de calculer le coefficient de Spearman et de tester s'il s'écarte significativement de `0`. Par exemple, pour les variables `Acide malique` et `Acidité totale` sur les vins blancs : ```r cor.test(Blancs$Malique, Blancs$AcTot, method = "spearman") ``` ``` ## Warning in cor.test.default(Blancs$Malique, Blancs$AcTot, method = "spearman"): ## Cannot compute exact p-value with ties ``` ``` ## ## Spearman's rank correlation rho ## ## data: Blancs$Malique and Blancs$AcTot ## S = 386.5, p-value = 0.008323 ## alternative hypothesis: true rho is not equal to 0 ## sample estimates: ## rho ## 0.6011401 ``` Un message d'avertissement signale la présence d'ex-aequo (ties). La valeur-p n'est pas exacte mais approchée. Le test peut cependant être interprété. Le coefficient de corrélation est de `0.60`. La valeur-p (`p-value = 0.008323`) permet de conclure à une corrélation significative. :Exemple {#exemple_kendall, toggle=popup} La commande `cor.test()` avec l'option `method = "kendall"` permet de calculer le coefficient de Kendall et de tester s'il s'écarte significativement de `0`. Par exemple, pour les variables `Acide malique` et `Acidité totale` sur les vins blancs : ```r cor.test(Blancs$Malique, Blancs$AcTot, method = "kendall") ``` ``` ## Warning in cor.test.default(Blancs$Malique, Blancs$AcTot, method = "kendall"): ## Cannot compute exact p-value with ties ``` ``` ## ## Kendall's rank correlation tau ## ## data: Blancs$Malique and Blancs$AcTot ## z = 2.6984, p-value = 0.006968 ## alternative hypothesis: true tau is not equal to 0 ## sample estimates: ## tau ## 0.4702399 ``` Un message d'avertissement signale la présence d'ex-aequo (ties). La valeur-p n'est pas exacte mais approchée. Le test peut cependant être interprété. Le coefficient de corrélation `tau` est de `0.47`. La valeur-p (`p-value = 0.006968`) permet de conclure à une corrélation significative. :Suite des Tests {#tests, toggle=collapse, title-display=hidden} [Introduction : exemple du Khi-deux](caps_7_1_objectifs&intro_chi-deux.html) [Tests de conformité et intervalles de confiance](caps_7_2_conformite_para.html) [Tests d'ajustement à une distribution théorique](caps_7_3_conformite_distrib.html) [Tests paramétriques d'homogénéité](caps_7_4_homogeneite_para.html) [Tests non-paramétriques d'homogénéité](caps_7_5_homogeneite_non_para.html) [Tests d'indépendance de deux variables qualitatives](caps_7_6_indep.html) [Tests de corrélation de deux variables quantitatives](caps_7_7_corr.html) [Résumé](caps_7_8_resume.html)