Analyse des corrélations avec easystats
Guide pratique avec R
Cette fiche vise à présenter une méthode efficace et simple pour réaliser, analyser et représenter des corrélations avec R, de la mise en forme des données à la réalisation de graphiques. Elle ne contient que de brefs rappels sur la notion de corrélation en statistique.
Préambule
Cette fiche ne constitue pas un cours sur les coefficients de corrélation. Si un rappel théorique est réalisé, il reste superficiel. Néanmoins, certains concepts statistiques sont nécessaires pour aborder le sujet. Ces concepts seront identifiés par un numéro en indice qui renverra à un glossaire en fin de fiche.
Par ailleurs, il ne s’agit pas non plus de présenter une méthode qui serait LA méthode pour réaliser des analyses de corrélation avec R.
1 Qu’est ce qu’une corrélation ?
1.1 Ce n’est pas une régression !
La corrélation, contrairement à la régression1, étudie un lien et non une causalité. La corrélation nous permet de déterminer l’absence ou la présence d’une relation, d’un lien significatif entre 2 variables.
Cette notion de covariance est importante, elle est au cœur du concept de corrélation. Lorsque l’on mesure une corrélation on étudie la variation commune des variables. On peut théoriquement mesurer une corrélation entre n’importe quelle variable. Il est possible de s’amuser à calculer la corrélation entre le nombre de suicides par strangulation aux Etats-Unis et le niveau d’investissement du gouvernement américain dans la recherche :
On remarque une trajectoire commune. Il existe statistiquement une relation forte entre ces deux variables mais cela n’implique en aucun cas que l’une est la cause de l’autre.
Pour comprendre plus aisément cette différence entre lien et cause, je vous conseille de visiter le site spurious-correlations qui recense des corrélations très fortes entre des variables qui ont donc un lien statistique mais où il serait aberrant d’en déduire une relation de cause à effet.
1.2 Quels types de corrélations ?
Il existe plusieurs méthodes de calcul pour analyser des corrélations. Le choix d’un coefficient est déterminé par les spécificités des variables étudiées. Un mauvais choix risque de fausser vos résultats et vos interprétations.
Pour faire le bon choix, vous devez prendre en compte :
- Les types de variables (quantitative, qualitative)
- Les types de données (numérique, chaîne de caractère et facteur)
- La forme des distributions des séries statistiques analysées
Voici un tableau recensant différents types de coefficients de corrélation parmi les plus courants.
Nous ne ferons pas ici un point statistique sur chacun de ces coefficients et n’aborderons pas les soubassements algébriques de ces tests. Toutefois, il est bon de savoir et de se rappeller qu’il existe différents types de coefficients de corrélation et qu’il faudra choisir celui à utiliser en fonction des variables à analyser.
Les coefficients de corrélation les plus connus et utilisés en SHS sont :
- Le R de Bravais-Pearson
- Le Rho de Spearman
- Le Tau de Kendall
Ainsi, si vous cherchez à étudier une relation linéaire entre deux variables quantitatives et continues et qu’au moins l’une des deux suit une distribution normale4, vous aurez l’immense honneur de pouvoir réaliser un calcul du coefficient de corrélation de Pearson. Il s’agit du coefficient de référence lorsque l’on parle de corrélation.
En revanche, si :
- Vos données ne suivent pas une loi normale
- Et vos données sont qualitatives
Adieu Pearson et bonjour Spearman ou Kendall (entre autres). Rassurez vous, ces tests fonctionnent très bien ! En revanche, on ne sera pas sur l’étude d’une relation linéaire comme dans le cas de Pearson, mais sur une comparaison des rangs5.
À dire vrai, d’un point de vue statistique, elles sont même considérées comme des méthodes plus robustes car ne dépendant pas de la distribution des données. Ces coefficients vous seront donc très utiles dans le cas où l’analyse du nuage de points révèle une forme curviligne dans une relation qui semble mal s’ajuster à la fameuse droite de régression6.
On peut signaler que :
- Le coefficient de Spearman se lit comme le coefficient de Pearson, en simplifiant largement on peut considérer qu’il s’agit de son adaptation pour les tests non-paramétriques
- Au contraire, le coefficient de Kendall se lit comme une probabilité. Précisément, c’est la différence entre la probabilité que les données observées soient dans le même ordre pour les deux variables versus la probabilité que les données observées soient dans des ordres différents pour les deux variables
Par ailleurs, dans certaines disciplines (comme par exemple en psychologie) on considère que Spearman s’utilise dans le cas de variables ordinales où la distance “ressentie” entre les classes de nos données qualitatives est la même entre tous les intervalles (par exemple les réponses aux échelles de Likert7).
En plus de Pearson, Spearman et Kendall que nous retrouverons 8 fois sur 10, il existe d’autres tests de corrélation peu connus en SHS mais qui peuvent s’avérer très utiles, notamment dans le cas où vous voudriez étudier le lien entre des variables quantitatives et qualitatives. A savoir les coefficients de corrélation : Bisériel de point et Bisériel (Point-Biserial et Biserial en anglais).
Bisériel : utilisé également pour étudier un lien entre une variable quantitative et une variable dichotomique. Ce test s’emploie à la place du Bisériel de point lorsque l’on considère que la variable dichotomique possède une continuité sous-jacente. Souvent le cas pour une variable qui peut être mesurée de manière continue ou ordinale mais artificiellement dichotomisée, par exemple : un niveau de stress mesuré de manière dichotomique (niveau bas versus niveau haut) mais qui aurait pu être mesuré à l’aide d’un score ou de catégories.
1.3 Interprétation d’une corrélation
1.3.1 Le coefficient de corrélation
Si nous reprenons l’exemple cité précédemment en partie 1.1 sur le lien entre le nombre de suicides par strangulation aux Etats-Unis et le niveau d’investissement du gouvernement américain dans la recherche, ce coefficient de corrélation peut :
- Etre supérieur à 0 : les variables sont associées positivement, plus les investissements dans la recherche augmentent, plus le nombre de suicides par strangulation augmente et inversement
- Etre inférieur à 0 : les variables sont associées négativement, plus les investissements dans la recherche augmentent, plus le nombre de suicides par strangulation diminue, et inversement
- Etre égale à 0 : il n’y a absolument aucun lien entre les variables, le niveau d’investissement dans la recherche n’a strictement aucune influence sur le nombre de suicides par strangulation, et inversement
Deux informations importantes sont donc à analyser :
- Le sens de la relation : la corrélation est-elle positive ou négative (coefficient supérieur ou inférieur à 0) ?
- La force de la relation : plus la valeur du coefficient est proche de + 1 ou de - 1, plus les deux variables sont associées fortement. Au contraire, plus le coefficient est près de 0, moins les variables partagent de covariance et, donc, moins l’association est forte.
Dans certaines disciplines des SHS on utilise les bornes de Cohen pour juger de la force d’une corrélation (Cohen, 1988) :
+ Autour de 0,10 : effet de petite taille (corrélation faible)
+ Autour de 0,30 : effet de taille moyenne (corrélation moyenne)
+ Plus de 0,50 : effet de grande taille (corrélation forte)
1.3.2 p-value et hypothèse nulle
Le \(p\) (ou encore \(p-value\) ) correspond à la notion de risque d’erreur.
Le \(p\) représente la probabilité du risque d’erreur associé à notre test statistique. C’est en fait la probabilité que le résultat de notre test soit dû au hasard. Le \(p\) est important car c’est en fonction de sa valeur que nous pourrons dire si le résultat de notre test statistique peut être considéré comme fiable ou en réalité dû au hasard.
Pour être interprété, le coefficient de corrélation doit être significatif (la valeur de \(p\) doit être a minima plus petite que 0.05, ce qui représente un risque de 5 % de se tromper). Si le coefficient est non significatif, on considère alors qu’il est semblable à un coefficient = 0, c’est-à-dire qu’on ne peut pas considérer l’existence d’un lien.
En SHS la limite à partir de laquelle nous considérons en général le test comme fiable est fixée à 5 %. Comme expliqué il s’agit du seuil de significativité. Ce seuil est le risque d’erreur que nous considérons comme acceptable. Toutefois dans certaines disciplines, notamment en santé, ce seuil est abaissé à 1 % voire 0.1 %.
Le calcul d’une corrélation est un test d’hypothèse8, il s’accompagne donc d’une hypothèse nulle9. Dans le cas du test de corrélation cette dernière peut être formulée de la sorte :
- Nous supposons que les variables ne sont pas liées, qu’elles sont indépendantes.
C’est à partir de la \(p-value\) que nous accepterons ou rejetterons l’hypothèse nulle. Quand \(p > 0.05\) , donc que notre test n’est pas significatif, cela veut dire qu’il y a indépendance entre les variables (pas de lien). Nous acceptons donc l’hypothèse nulle. \(p<0.05\) impliquerait le rejet de l’hypothèse nulle et donc l’existence d’un lien entre nos variables.
2 Données et packages
2.1 Données
Les données que nous utiliserons sont mises à disposition sur data.gouv.fr. Ces données ont été produites par l’INA dans le cadre d’une journée d’étude sur la parole en juin 2018. La compilation des temps de parole a été réalisée à l’aide du logiciel libre inaSpeechSegmenter, développé à l’institut national de l’audiovisuel (INA). Ce logiciel est basé sur des algorithmes d’apprentissage automatique. Nous utiliserons le fichier de données relatif au temps de parole des femmes à la télévision et à la radio. Ces données présentent l’intérêt de se composer à la fois de variables qualitatives ordinales et dichotomiques ainsi que de variables quantitatives continues.
Ce tableau de données comporte 7 variables :
- media_type : radio ou tv
- channel_name : nom de la chaîne
- is_public_channel :
TRUE
pour les chaînes publiques,FALSE
pour les chaînes privées - year : année considérée
- women_expression_rate : taux d’expression des femmes (pourcentage de parole accordé aux femmes à l’antenne)
- speech_rate : taux de parole (pourcentage de contenu assimilé à de la parole)
- nb_hours_analyzed : nombre d’heures analysées (Les entrées fondées sur l’analyse de moins de 500 heures ne sont pas dans la table)
2.2 Packages
Le nombre de packages que nous utiliserons est plutôt limité:
correlation
un package de la suiteeasystats
qui nous permettra de réaliser le calcul des coefficients de corrélationsee
un autre package de la suiteeasystats
qui nous permettra de représenter graphiquement nos coefficients de corrélationdplyr
qui nous permettra de manipuler nos données en utilisant la syntaxe tidyverseggplot2
pour les représentations graphiques
easystats
n’est pas encore disponible sur le CRAN, mais il est mis à disposition sur Github. Pour installer ce package (qui inclut les packages correlation
et see
), nous utiliserons la fonction install_github()
du package remotes
.
install.packages("remotes")
::install_github("easystats/easystats") remotes
2.2.1 easystats
La suite easystats
(Makowski et al. 2020) est un eco-système qui propose un ensemble de pakages facilitant la réalisation de statistiques avancées dans R. Les personnes à l’origine de ce projet viennent de la neuropsychologie et des statistiques. Cette suite inclut des packages comme correlation
ou see
, mais également des packages comme report
qui permet la mise en forme des sorties R au format manuscrit, ou encore bayestestR
qui permet de réaliser des statistiques bayésiennes.
easystats
présente plusieurs avantages importants :
- une documentation riche via github et un blog dédié
- un environnement de packages permettant de réaliser de manière facilitée des analyses statistiques avancées
- une utilisation compatible avec la (très à la mode) syntaxe tidyverse
3 Come get some correlation !
3.1 Corrélation avec R base
Commençons par charger le jeu de données téléchargé.
<- read.csv("data/woman_speak.csv", stringsAsFactors = TRUE) woman_speak
En utilisant la fonction str()
, on obtient un rapide panorama des différentes variables.
str(woman_speak)
'data.frame': 701 obs. of 7 variables:
$ media_type : Factor w/ 2 levels "radio","tv": 1 1 1 1 1 1 1 1 1 1 ...
$ channel_name : Factor w/ 55 levels "Animaux","ARTE",..: 8 8 8 8 8 8 8 8 8 8 ...
$ is_public_channel : Factor w/ 2 levels "False","True": 1 1 1 1 1 1 1 1 1 1 ...
$ year : int 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 ...
$ women_expression_rate: num 47.1 46 48.4 45.5 47.8 ...
$ speech_rate : num 15.7 16.3 15 16.1 15.6 ...
$ nb_hours_analyzed : num 718 1617 1644 1624 1604 ...
On note la présence à la fois de variables quantitatives et de variables qualitatives, stockées respectivement en format numérique et en chaîne de caractères (factor).
Pour calculer des corrélations en R base, il est possible d’utiliser les fonctions cor.test()
pour mesurer l’association de 2 variables et cor()
pour réaliser une matrice de corrélation entre plusieurs variables. Ces deux fonctions sont assez simples d’utilisation, mais présentent un problème majeur : elles fonctionnent uniquement avec des variables quantitatives stockées en format numérique.
Pour pallier ce problème, il est possible de :
- recoder les variables qualitatives en format numérique
- se concentrer uniquement sur les variables quantitatives
La fonction cor.test()
qui permet de corréler des variables deux à deux renvoie un ensemble d’information : la \(p-value\), le degré de liberté10, un intervalle de confiance et bien sûr le coefficient de corrélation (ici Pearson).
cor.test(woman_speak$women_expression_rate, woman_speak$speech_rate, method = "pearson")
Pearson's product-moment correlation
data: woman_speak$women_expression_rate and woman_speak$speech_rate
t = -5.9587, df = 699, p-value = 4.03e-09
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.2892056 -0.1482275
sample estimates:
cor
-0.2198642
L’argument method
permet de préciser le coefficient de corrélation a utiliser (Pearson par défaut). Cette fonction, outre le fait de ne prendre en entrée que des variables numériques et de ne pas proposer de possibilités de correction des \(p-values\)11, n’est en soi pas mauvaise, mais peut se révéler fastidieuse si vous avez un grand nombre de variables à étudier.
Une manière facile d’étudier les corrélations entre un grand nombre de variables est de calculer une matrice de corrélation avec la fonction R base cor()
. Pour l’utiliser, il est nécessaire de ne conserver que les variables numériques de notre tableau.
library(dplyr)
# Sélection des variables quantitatives stockées en numérique
<- woman_speak %>% select(speech_rate, women_expression_rate, nb_hours_analyzed)
woman_speak_num
cor(woman_speak_num)
speech_rate women_expression_rate nb_hours_analyzed
speech_rate 1.0000000 -0.2198642 -0.1504236
women_expression_rate -0.2198642 1.0000000 0.1801006
nb_hours_analyzed -0.1504236 0.1801006 1.0000000
La fonction renvoie une matrice de corrélation entre l’ensemble des variables. Cependant, un problème majeur subsiste : nous ne sommes pas en mesure ici d’identifier les corrélations qui seraient significatives statistiquement.
cor.test
et cor
ont pour point commun de ne proposer comme coefficient de corrélation que les trois plus fréquemment utilisés et connus : Pearson, Spearman et Kendall. Si dans la plupart des cas cela ne pose pas de problèmes, le jour où vous souhaiterez utiliser un autre coefficient vous ne pourrez pas utiliser ces fonctions.
3.2 Corrélations avec…correlation
Le package correlation
propose des solutions alternatives efficaces pour réaliser des analyses de corrélations sur un grand nombre de variables ; il offre les avantages suivants :
- facilité d’utilisation
- documentation riche et claire, sur github et une vignette
- permet de corréler des variables qualitatives sans avoir à les recoder artificiellement en format numérique
- permet de réaliser des corrélations stratifiées (corrélations à l’intérieur de sous-groupes)
- permet d’utiliser un test de comparaisons multiples et l’ajustement des \(p-values\). Il s’agit de tests dont les biostatisticiens sont très familiers. Ces tests permettent notamment un ajustement des \(p-values\) lors de comparaisons multiples, ce qui permet d’éviter les faux positifs, c’est à dire éviter de croire qu’un coefficient soit positif alors qu’il ne l’est pas
- permet d’analyser des corrélation entre des variables qualitatives et quantitatives
- permet le calul de nombreux coefficients de corrélation (en plus des classiques Pearson-Spearman-Kendall). La liste exhaustive ici
- permet de réaliser des analyses dans un cadre bayésien, et de faire du multiniveaux
Commencez par charger la librairie.
library(correlation)
Nous utiliserons ensuite la fonction correlation()
pour calculer les coefficients. De nombreux arguments sont disponibles pour paramétrer cette fonction. Les trois arguments que vous serez le plus amené à modifier sont :
method
: permet de choisir le coefficient de corrélation à mettre en œuvre (Pearson par défaut). Une dizaine de choix sont possibles, ainsi qu’une option “auto” qui permet de sélectionner automatiquement la méthode la plus adaptée en fonction de vos données, très utile afin de croiser variables qualitatives et quantitativesp_adjust
: permet de choisir le test de corrections à mettre en œuvre (“Holm” par défaut). Cela ne fonctionne que lorsque le test de corrélation choisit est fréquentiste, c’est à dire non-bayésieninclude_factors
: permet de spécifier si nos données contiennent des variables qui seraient des facteurs (FALSE par défaut)
Exemple, avec tous les arguments par défaut :
<- correlation(woman_speak) ws_cor
Le résultat renvoyé par cette fonction est un data.frame. Il est donc intéressant d’assigner le résultat dans un objet, ici ws_cor.
Chaque ligne du tableau correspond à une corrélation entre deux variables. Plusieurs valeurs sont fournies à chaque fois : la \(p-value\), un intervalle de confiance, la méthode utilisée…
FALSE
) de l’argument include.factor
, l’ensemble de nos variables qualitatives stockée en factor ont été “éjectées” de l’analyse sans qu’aucun message d’erreur ne soit renvoyé.
Généralement, on visualise les résultats de corrélations sous forme de matrice (et non de tableau). Pour cela, nous pouvons utiliser la fonction summary()
.
summary(ws_cor)
Parameter | nb_hours_analyzed | speech_rate | women_expression_rate
-------------------------------------------------------------------------------
year | -0.20*** | 0.17*** | 0.13***
women_expression_rate | 0.18*** | -0.22*** |
speech_rate | -0.15*** | |
- * \(p-value\) < 0.05
- ** \(p-value\) < 0.01
- *** \(p-value\) < 0.001
Pour obtenir la matrice dans son intégralité, il suffit d’ajouter l’argument redundant=TRUE
à la fonction summary()
summary(ws_cor, redundant = TRUE)
Parameter | year | women_expression_rate | speech_rate | nb_hours_analyzed
------------------------------------------------------------------------------------------
year | 1.00*** | 0.13*** | 0.17*** | -0.20***
women_expression_rate | 0.13*** | 1.00*** | -0.22*** | 0.18***
speech_rate | 0.17*** | -0.22*** | 1.00*** | -0.15***
nb_hours_analyzed | -0.20*** | 0.18*** | -0.15*** | 1.00***
3.2.1 Inclure les variables qualitatives
Un des avantages du package est la possibilité d’intégrer des variables qualitatives. Pour ce faire, on utilise les arguments include_factors=TRUE
ainsi que method="auto"
.
method="auto"
est très important ; sans lui la fonction appliquera toujours le même coefficient à savoir Pearson par défaut ou celui que vous aurez choisi. Vous obtiendrez alors des corrélations fausses. Grâce à l’argument "auto"
, la fonction choisira la méthode la plus adaptée en fonction des caractéristiques des différentes séries statistiques.
C’est l’un des principaux avantages de cette librairie, qui permet le calcul d’un coefficient de corrélation adapté au croisement de variables quantitatives et qualitatives.
<- correlation(woman_speak, method = "auto", include_factors = TRUE) ws_cor02
Voici les résultats obtenus ; à l’aide de la colonne method vous pourrez voir le ou les coefficients utilisés :
Vous noterez que différentes méthodes ont été utilisées, notamment Pearson, Point-Biserial… Ces méthodes ont donc été automatiquement sélectionnées en fonction des variables à étudier. On peut souligner également l’usage des coefficients de corrélation Polychorique et Tétrachorique (polychoric et tetrachoric en anglais) dans notre exemple.
Polychorique : s’utilise pour étudier le lien entre deux variables qualitatives de type ordinale
Tétrachorique : il s’agit d’un cas particulier d’une corrélation polychorique, où les deux variables à étudier seraient nominales, c’est à dire dichotomiques
Dans le cas où vous noteriez l’usage d’une corrélation non mentionnée dans cette fiche, je vous conseille de consulter l’article listant l’ensemble des corrélations proposées par le package. Vous y verrez pourquoi tel ou tel coefficient a été choisi.
La mise en forme sous matrice fonctionne exactement de la même manière que pour des données entièrement numériques.
summary(ws_cor02)
Parameter | nb_hours_analyzed | speech_rate | women_expression_rate | year | is_public_channel.True | is_public_channel.False | channel_name.W9 | channel_name.Voyage | channel_name.Virgin Radio | channel_name.TV5 Monde | channel_name.TV Breizh | channel_name.Toute l'Histoire | channel_name.TF1 | channel_name.Téva | channel_name.Sud Radio | channel_name.Skyrock | channel_name.RTL 2 | channel_name.RTL | channel_name.RMC | channel_name.Rire et Chansons | channel_name.RFM | channel_name.RFI | channel_name.Radio Classique | channel_name.Planète+ | channel_name.Paris Première | channel_name.NRJ 12 | channel_name.NRJ | channel_name.Nostalgie | channel_name.MOUV | channel_name.Monte Carlo TMC | channel_name.M6 | channel_name.LCP/Public Sénat | channel_name.LCI | channel_name.La chaîne Météo | channel_name.L'Equipe 21 | channel_name.I-Télé/CNews | channel_name.Histoire | channel_name.Fun Radio | channel_name.France O | channel_name.France Musique | channel_name.France Inter | channel_name.France Info | channel_name.France Culture | channel_name.France Bleu | channel_name.France 5 | channel_name.France 3 | channel_name.France 24 | channel_name.France 2 | channel_name.Eurosport France | channel_name.Europe 1 | channel_name.Euronews | channel_name.D8/C8 | channel_name.Comédie+ | channel_name.Chérie FM | channel_name.Chérie 25 | channel_name.Chasse et pêche | channel_name.Canal+ Sport | channel_name.Canal+ | channel_name.BFM TV | channel_name.ARTE | channel_name.Animaux | media_type.tv
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
media_type.radio | 0.42*** | -0.50*** | 0.06 | -0.44*** | 0.27*** | -0.27*** | -0.58*** | -0.58*** | 0.56*** | -0.58*** | -0.56*** | -0.58*** | -0.58*** | -0.56*** | 0.49*** | 0.64*** | 0.63*** | 0.64*** | 0.64*** | 0.55*** | 0.63*** | 0.64*** | 0.55*** | -0.58*** | -0.58*** | -0.58*** | 0.63*** | 0.63*** | 0.49*** | -0.58*** | -0.58*** | -0.58*** | -0.58*** | -0.58*** | -0.52*** | -0.58*** | -0.56*** | 0.63*** | -0.58*** | 0.68*** | 0.68*** | 0.68*** | 0.68*** | 0.64*** | -0.58*** | -0.58*** | -0.56*** | -0.58*** | -0.58*** | 0.64*** | -0.58*** | -0.52*** | -0.58*** | 0.63*** | -0.52*** | -0.58*** | -0.58*** | -0.58*** | -0.58*** | -0.58*** | -0.58*** | -1.00***
media_type.tv | -0.42*** | 0.50*** | -0.06 | 0.44*** | -0.27*** | 0.27*** | 0.58*** | 0.58*** | -0.56*** | 0.58*** | 0.56*** | 0.58*** | 0.58*** | 0.56*** | -0.49*** | -0.64*** | -0.63*** | -0.64*** | -0.64*** | -0.55*** | -0.63*** | -0.64*** | -0.55*** | 0.58*** | 0.58*** | 0.58*** | -0.63*** | -0.63*** | -0.49*** | 0.58*** | 0.58*** | 0.58*** | 0.58*** | 0.58*** | 0.52*** | 0.58*** | 0.56*** | -0.63*** | 0.58*** | -0.68*** | -0.68*** | -0.68*** | -0.68*** | -0.64*** | 0.58*** | 0.58*** | 0.56*** | 0.58*** | 0.58*** | -0.64*** | 0.58*** | 0.52*** | 0.58*** | -0.63*** | 0.52*** | 0.58*** | 0.58*** | 0.58*** | 0.58*** | 0.58*** | 0.58*** |
channel_name.Animaux | -0.18** | 0.06 | 0.08 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | |
channel_name.ARTE | 0.02 | 0.05 | 9.22e-04 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | | |
channel_name.BFM TV | 0.02 | 0.11 | 0.08 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | 0.21*** | 0.21*** | 0.21*** | | | |
channel_name.Canal+ | 0.02 | 0.04 | -0.09 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | 0.21*** | 0.21*** | | | | |
channel_name.Canal+ Sport | -0.18** | 0.10 | -0.32*** | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | 0.21*** | | | | | |
channel_name.Chasse et pêche | -0.18** | 0.04 | -0.26*** | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | 0.21*** | 0.11 | 0.27*** | | | | | | |
channel_name.Chérie 25 | 0.01 | 0.04 | 0.15 | 0.07 | -0.36*** | 0.36*** | 0.27*** | 0.27*** | 0.24*** | 0.27*** | 0.29*** | 0.27*** | 0.27*** | 0.29*** | 0.31*** | 0.16* | 0.17** | 0.16* | 0.16* | 0.25*** | 0.17** | 0.15* | 0.25*** | 0.27*** | 0.27*** | 0.27*** | 0.17** | 0.17** | 0.31*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | 0.33*** | 0.27*** | 0.29*** | 0.17** | 0.27*** | 0.11 | 0.11 | 0.11 | 0.11 | 0.15* | 0.27*** | 0.27*** | 0.29*** | 0.27*** | 0.27*** | 0.16* | 0.27*** | 0.33*** | 0.27*** | 0.17** | | | | | | | |
channel_name.Chérie FM | 0.03 | -0.28*** | 0.36*** | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | 0.00 | -0.01 | -0.01 | 0.09 | 0.00 | -0.01 | 0.09 | 0.11 | 0.11 | 0.11 | 0.00 | 0.00 | 0.15 | 0.11 | 0.11 | 0.11 | 0.11 | 0.11 | 0.17** | 0.11 | 0.13 | 0.00 | 0.11 | -0.06 | -0.06 | -0.06 | -0.06 | -0.01 | 0.11 | 0.11 | 0.13 | 0.11 | 0.11 | -0.01 | 0.11 | 0.17** | 0.11 | | | | | | | | |
channel_name.Comédie+ | -0.18** | 0.05 | 0.01 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | 0.21*** | 0.27*** | | | | | | | | | |
channel_name.D8/C8 | 0.03 | 0.04 | -0.01 | 0.07 | -0.36*** | 0.36*** | 0.27*** | 0.27*** | 0.24*** | 0.27*** | 0.29*** | 0.27*** | 0.27*** | 0.29*** | 0.31*** | 0.16* | 0.17** | 0.16* | 0.16* | 0.25*** | 0.17** | 0.15* | 0.25*** | 0.27*** | 0.27*** | 0.27*** | 0.17** | 0.17** | 0.31*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | 0.33*** | 0.27*** | 0.29*** | 0.17** | 0.27*** | 0.11 | 0.11 | 0.11 | 0.11 | 0.15* | 0.27*** | 0.27*** | 0.29*** | 0.27*** | 0.27*** | 0.16* | 0.27*** | | | | | | | | | | |
channel_name.Euronews | -0.18** | 0.07 | 0.06 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.10 | | | | | | | | | | | |
channel_name.Europe 1 | 0.05 | 0.16* | 0.00 | -0.06 | -0.53*** | 0.53*** | 0.10 | 0.10 | 0.07 | 0.10 | 0.12 | 0.10 | 0.10 | 0.12 | 0.14 | -0.01 | -0.01 | -0.01 | -0.01 | 0.08 | -0.01 | -0.02 | 0.08 | 0.10 | 0.10 | 0.10 | -0.01 | -0.01 | 0.14 | 0.10 | 0.10 | 0.10 | 0.10 | 0.10 | 0.16* | 0.10 | 0.12 | -0.01 | 0.10 | -0.07 | -0.07 | -0.07 | -0.07 | -0.02 | 0.10 | 0.10 | 0.12 | 0.10 | 0.10 | | | | | | | | | | | | |
channel_name.Eurosport France | 0.00 | 0.10 | -0.28*** | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | 0.21*** | | | | | | | | | | | | | |
channel_name.France 2 | 0.02 | 0.07 | 0.07 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | 0.21*** | 0.23*** | | | | | | | | | | | | | | |
channel_name.France 24 | 0.02 | 0.10 | 0.20*** | 0.06 | 0.66*** | -0.66*** | 0.23*** | 0.23*** | 0.20*** | 0.23*** | 0.25*** | 0.23*** | 0.23*** | 0.25*** | 0.26*** | 0.12 | 0.13 | 0.12 | 0.12 | 0.21*** | 0.13 | 0.11 | 0.21*** | 0.23*** | 0.23*** | 0.23*** | 0.13 | 0.13 | 0.26*** | 0.23*** | 0.23*** | 0.23*** | 0.23*** | 0.23*** | 0.29*** | 0.23*** | 0.25*** | 0.13 | 0.23*** | 0.07 | 0.07 | 0.07 | 0.07 | 0.11 | 0.23*** | 0.23*** | | | | | | | | | | | | | | | |
channel_name.France 3 | 0.02 | 0.07 | 0.04 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | 0.21*** | | | | | | | | | | | | | | | | |
channel_name.France 5 | 0.03 | 0.08 | 0.03 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | 0.21*** | 0.05 | 0.05 | 0.05 | 0.05 | 0.09 | | | | | | | | | | | | | | | | | |
channel_name.France Bleu | 0.03 | -0.15* | 0.15* | -0.08 | 0.78*** | -0.78*** | 0.09 | 0.09 | 0.06 | 0.09 | 0.11 | 0.09 | 0.09 | 0.11 | 0.13 | -0.02 | -0.01 | -0.02 | -0.02 | 0.07 | -0.01 | -0.03 | 0.07 | 0.09 | 0.09 | 0.09 | -0.01 | -0.01 | 0.13 | 0.09 | 0.09 | 0.09 | 0.09 | 0.09 | 0.15* | 0.09 | 0.11 | -0.01 | 0.09 | -0.07 | -0.07 | -0.07 | -0.07 | | | | | | | | | | | | | | | | | | |
channel_name.France Culture | 0.16* | 0.16* | -0.02 | -0.18** | 0.81*** | -0.81*** | 0.05 | 0.05 | 0.02 | 0.05 | 0.07 | 0.05 | 0.05 | 0.07 | 0.09 | -0.07 | -0.06 | -0.07 | -0.07 | 0.03 | -0.06 | -0.07 | 0.03 | 0.05 | 0.05 | 0.05 | -0.06 | -0.06 | 0.09 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.11 | 0.05 | 0.07 | -0.06 | 0.05 | -0.12 | -0.12 | -0.12 | | | | | | | | | | | | | | | | | | | |
channel_name.France Info | 0.11 | 0.20*** | -0.05 | -0.18** | 0.81*** | -0.81*** | 0.05 | 0.05 | 0.02 | 0.05 | 0.07 | 0.05 | 0.05 | 0.07 | 0.09 | -0.07 | -0.06 | -0.07 | -0.07 | 0.03 | -0.06 | -0.07 | 0.03 | 0.05 | 0.05 | 0.05 | -0.06 | -0.06 | 0.09 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.11 | 0.05 | 0.07 | -0.06 | 0.05 | -0.12 | -0.12 | | | | | | | | | | | | | | | | | | | | |
channel_name.France Inter | 0.11 | 0.08 | -0.01 | -0.18** | 0.81*** | -0.81*** | 0.05 | 0.05 | 0.02 | 0.05 | 0.07 | 0.05 | 0.05 | 0.07 | 0.09 | -0.07 | -0.06 | -0.07 | -0.07 | 0.03 | -0.06 | -0.07 | 0.03 | 0.05 | 0.05 | 0.05 | -0.06 | -0.06 | 0.09 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.11 | 0.05 | 0.07 | -0.06 | 0.05 | -0.12 | | | | | | | | | | | | | | | | | | | | | |
channel_name.France Musique | 0.15* | -0.29*** | -0.08 | -0.18** | 0.81*** | -0.81*** | 0.05 | 0.05 | 0.02 | 0.05 | 0.07 | 0.05 | 0.05 | 0.07 | 0.09 | -0.07 | -0.06 | -0.07 | -0.07 | 0.03 | -0.06 | -0.07 | 0.03 | 0.05 | 0.05 | 0.05 | -0.06 | -0.06 | 0.09 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.11 | 0.05 | 0.07 | -0.06 | 0.05 | | | | | | | | | | | | | | | | | | | | | | |
channel_name.France O | 0.01 | 0.04 | 0.06 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | 0.21*** | 0.23*** | 0.11 | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Fun Radio | 0.03 | -0.24*** | -0.02 | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | 0.00 | -0.01 | -0.01 | 0.09 | 0.00 | -0.01 | 0.09 | 0.11 | 0.11 | 0.11 | 0.00 | 0.00 | 0.15 | 0.11 | 0.11 | 0.11 | 0.11 | 0.11 | 0.17** | 0.11 | 0.13 | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Histoire | -0.01 | 0.06 | -0.13 | 0.06 | -0.40*** | 0.40*** | 0.23*** | 0.23*** | 0.20*** | 0.23*** | 0.25*** | 0.23*** | 0.23*** | 0.25*** | 0.26*** | 0.12 | 0.13 | 0.12 | 0.12 | 0.21*** | 0.13 | 0.11 | 0.21*** | 0.23*** | 0.23*** | 0.23*** | 0.13 | 0.13 | 0.26*** | 0.23*** | 0.23*** | 0.23*** | 0.23*** | 0.23*** | 0.29*** | 0.23*** | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.I-Télé/CNews | 0.03 | 0.11 | 0.07 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | 0.27*** | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.L'Equipe 21 | 0.01 | 0.09 | -0.15 | 0.07 | -0.36*** | 0.36*** | 0.27*** | 0.27*** | 0.24*** | 0.27*** | 0.29*** | 0.27*** | 0.27*** | 0.29*** | 0.31*** | 0.16* | 0.17** | 0.16* | 0.16* | 0.25*** | 0.17** | 0.15* | 0.25*** | 0.27*** | 0.27*** | 0.27*** | 0.17** | 0.17** | 0.31*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | 0.27*** | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.La chaîne Météo | -0.18** | 0.09 | -0.13 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.LCI | 0.02 | 0.11 | 0.05 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.LCP/Public Sénat | 0.02 | 0.13 | 0.01 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.M6 | 0.02 | 0.04 | 0.16* | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Monte Carlo TMC | 0.02 | 0.03 | 0.01 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | 0.21*** | 0.11 | 0.11 | 0.25*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.MOUV | 0.04 | -0.16* | -0.01 | 0.07 | 0.65*** | -0.65*** | 0.25*** | 0.25*** | 0.22*** | 0.25*** | 0.26*** | 0.25*** | 0.25*** | 0.26*** | 0.28*** | 0.14 | 0.15 | 0.14 | 0.14 | 0.23*** | 0.15 | 0.13 | 0.23*** | 0.25*** | 0.25*** | 0.25*** | 0.15 | 0.15 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Nostalgie | 0.03 | -0.27*** | 0.07 | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | 0.00 | -0.01 | -0.01 | 0.09 | 0.00 | -0.01 | 0.09 | 0.11 | 0.11 | 0.11 | 0.00 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.NRJ | 0.04 | -0.23*** | -0.09 | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | 0.00 | -0.01 | -0.01 | 0.09 | 0.00 | -0.01 | 0.09 | 0.11 | 0.11 | 0.11 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.NRJ 12 | 0.03 | 0.03 | 0.04 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Paris Première | -0.18** | 0.04 | -0.08 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Planète+ | -0.18** | 0.06 | -0.16* | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | 0.21*** | 0.23*** | 0.25*** | 0.10 | 0.11 | 0.10 | 0.10 | 0.19*** | 0.11 | 0.09 | 0.19*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Radio Classique | 0.09 | -0.17** | 0.13 | 0.04 | -0.44*** | 0.44*** | 0.19*** | 0.19*** | 0.16* | 0.19*** | 0.21*** | 0.19*** | 0.19*** | 0.21*** | 0.23*** | 0.08 | 0.09 | 0.08 | 0.08 | 0.18** | 0.09 | 0.07 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.RFI | 0.05 | 0.15 | 0.05 | -0.08 | 0.78*** | -0.78*** | 0.09 | 0.09 | 0.06 | 0.09 | 0.11 | 0.09 | 0.09 | 0.11 | 0.13 | -0.02 | -0.01 | -0.02 | -0.02 | 0.07 | -0.01 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.RFM | 0.03 | -0.29*** | 0.06 | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | 0.00 | -0.01 | -0.01 | 0.09 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Rire et Chansons | 0.05 | 0.01 | -0.04 | 0.04 | -0.44*** | 0.44*** | 0.19*** | 0.19*** | 0.16* | 0.19*** | 0.21*** | 0.19*** | 0.19*** | 0.21*** | 0.23*** | 0.08 | 0.09 | 0.08 | 0.08 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.RMC | 0.06 | 0.18** | -0.19*** | -0.06 | -0.53*** | 0.53*** | 0.10 | 0.10 | 0.07 | 0.10 | 0.12 | 0.10 | 0.10 | 0.12 | 0.14 | -0.01 | -0.01 | -0.01 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.RTL | 0.06 | 0.09 | -0.04 | -0.06 | -0.53*** | 0.53*** | 0.10 | 0.10 | 0.07 | 0.10 | 0.12 | 0.10 | 0.10 | 0.12 | 0.14 | -0.01 | -0.01 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.RTL 2 | 0.04 | -0.29*** | 0.20*** | -0.05 | -0.52*** | 0.52*** | 0.11 | 0.11 | 0.08 | 0.11 | 0.13 | 0.11 | 0.11 | 0.13 | 0.15 | -0.01 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Skyrock | 0.03 | -0.20*** | -0.22*** | -0.06 | -0.53*** | 0.53*** | 0.10 | 0.10 | 0.07 | 0.10 | 0.12 | 0.10 | 0.10 | 0.12 | 0.14 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Sud Radio | 0.04 | 0.03 | -5.78e-04 | 0.07 | -0.38*** | 0.38*** | 0.25*** | 0.25*** | 0.22*** | 0.25*** | 0.26*** | 0.25*** | 0.25*** | 0.26*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Téva | -0.02 | 0.02 | 0.24*** | 0.06 | -0.40*** | 0.40*** | 0.23*** | 0.23*** | 0.20*** | 0.23*** | 0.25*** | 0.23*** | 0.23*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.TF1 | 0.03 | 0.05 | 0.10 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Toute l'Histoire | -0.18** | 0.08 | -0.14 | 0.05 | -0.42*** | 0.42*** | 0.21*** | 0.21*** | 0.18** | 0.21*** | 0.23*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.TV Breizh | -0.17** | 0.04 | 0.02 | 0.06 | -0.40*** | 0.40*** | 0.23*** | 0.23*** | 0.20*** | 0.23*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.TV5 Monde | -0.18** | 0.08 | 0.02 | 0.05 | 0.68*** | -0.68*** | 0.21*** | 0.21*** | 0.18** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Virgin Radio | 0.05 | -0.21*** | -0.03 | 0.03 | -0.45*** | 0.45*** | 0.18** | 0.18** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.Voyage | -0.18** | 0.04 | -0.06 | 0.05 | -0.42*** | 0.42*** | 0.21*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
channel_name.W9 | 0.02 | -0.01 | 0.07 | 0.05 | -0.42*** | 0.42*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
is_public_channel.False | -0.24*** | -0.18** | -0.11 | 0.22*** | -1.00*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
is_public_channel.True | 0.24*** | 0.18** | 0.11 | -0.22*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
year | -0.20*** | 0.17** | 0.13 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
women_expression_rate | 0.18** | -0.22*** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
speech_rate | -0.15 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
3.2.2 Corrélations par sous-groupes
C’est une méthode intéressante qui permet de réaliser des corrélations sur des sous-groupes de notre jeu de données. Cela permet de détecter des corrélations existantes à l’échelle d’un sous-groupe mais pas pour l’ensemble de la série statistique.
En utilisant la syntaxe tidyverse, il est simple d’évaluer les liens entre nos différentes variables par exemple selon le type de média (les différents types de média constitueront nos sous-groupes).
library(dplyr)
<- woman_speak %>%
ws_cortvradio group_by(media_type) %>%
correlation()
Vous pouvez utiliser les arguments include_factor= TRUE
et method = "auto"
pour prendre en compte les variables qualitatives du jeu de données.
<- woman_speak %>%
ws_cortvradio group_by(media_type) %>%
correlation(include_factor = TRUE, method = "auto")
Le fait d’imbriquer la sélection d’un sous-effectif puis le calcul des corrélations en utilisant la syntaxe tidyverse a pour conséquence la création d’une nouvelle variable : Group
.
datatable(ws_cortvradio)
En utilisant la fonction summary()
, nous pourrons visualiser les résultats et observer un lien significatif entre l’année et le taux d’expression des femmes à la radio, mais pas à la télévision.
summary(ws_cortvradio)
Group | Parameter | nb_hours_analyzed | speech_rate | women_expression_rate
---------------------------------------------------------------------------------------
radio | year | 0.03 | -0.08 | 0.27***
radio | women_expression_rate | -0.03 | -0.31*** |
radio | speech_rate | 0.10 | |
tv | year | -0.12 | 0.08 | 0.08
tv | women_expression_rate | 0.31*** | -0.14* |
tv | speech_rate | 0.04 | |
3.3 Représentation graphique
3.3.1 Nuage de points
Dans l’étude des corrélations, les représentations graphiques s’avèrent indispensables pour valider l’interprétation du coefficient de corrélation et enrichir son analyse. La représentation classique d’une corrélation est le nuage de points.
Un exemple avec les taux d’expression et les taux de parole.
library(ggplot2)
ggplot(woman_speak, aes(x = speech_rate, y = women_expression_rate)) +
geom_point()
Vous verrez très fréquemment ce nuage de points assorti d’une droite de régression, qui fournit une indication sur le sens et la force du lien :
library(ggplot2)
ggplot(woman_speak, aes(x = speech_rate, y = women_expression_rate)) +
geom_point() +
geom_smooth(method = "lm")
A l’aide du package ggplot
il est facile d’enrichir cette représentation graphique, comme par exemple en colorant les points en fonction du type de média.
library(ggplot2)
ggplot(woman_speak, aes(x = speech_rate, y = women_expression_rate, color = media_type)) +
geom_point() +
geom_smooth(method = "lm")
3.3.2 Graphe
Alors qu’un nuage de points permet de visualiser le lien entre deux variables, le package see
de la suite easystats
offre la possibilité de représenter aisément l’ensemble des résultats de corrélation entre toutes les variables d’un jeu de données, obtenus avec la fonction correlation
.
Exemple avec le tableau des corrélations stocké dans l’objet ws_cor
:
library(see)
library(ggraph)
plot(ws_cor)
En plus d’être originale, cette représentation sous forme de graphe est intéressante mais suppose le chargement de la librairie ggraph
.
3.3.3 Corrélogramme
La librairie see
offre également la possibilité de construire un corrélogramme, qui est une représentation graphique de la matrice de corrélation obtenue grâce à la fonction summary()
. Pour cela il suffit d’appliquer la fonction plot()
à la matrice de corrélation :
<- summary(ws_cor)
mat_cor
plot(mat_cor)
Quelques arguments sont disponibles pour personnaliser ce corrélogramme :
plot(mat_cor, show_values = TRUE, show_p = TRUE, show_legend = TRUE)
see
permet donc de visualiser rapidement les résultats renvoyés par la fonction correlation()
du package correlation
. Cependant, il faut reconnaître que la personnalisation des figures reste limitée…
3.3.4 Corrélogramme avec corrplot
Pour construire des corrélogrammes très personnalisés, il existe le package corrplot
qui est très efficace. Pour que la matrice de corrélation soit compatible avec ce package, il vous sera nécessaire de la modifier légèrement.
Étape 1 : Calcul de la matrice de corrélation, stockée dans un objet
<- summary(ws_cor, redundant = TRUE) mat_cor_comp
Étape 2 : Transformation de cet objet en une matrice de corrélation utilisable avec la librairie corrplot
# Nom des lignes = valeurs de la première colonne ("Parameter")
rownames(mat_cor_comp ) <- mat_cor_comp[,1]
# Transformation du data.frame en objet matrice (+ suppression première colonne)
<- as.matrix(mat_cor_comp[,-1]) mat_cor
Étape 3 : Construction d’une seconde matrice (structure similaire) comportant les \(p-values\)
Pour cela, on utilisera la fonction cor_to_p()
du package correlation
, qui renvoie une liste de deux matrices : celle des \(p-values\) et celle des intervalles de confiance.
# Calcul du nombre total d'individus
<- nrow(woman_speak)
nb
# Calcul des matrices de p-values et des intervalles de confiance
<- cor_to_p(mat_cor, n = nb, method = "auto")
p.value
# Extraction de la matrice des p-value uniquement
<- p.value$p p_mat
Étape 4 : Construction du corrélogramme
library(corrplot)
corrplot(mat_cor, p.mat = p_mat)
Étape 5 : Personnalisation du corrélogramme
Pour connaître l’ensemble des arguments disponibles, vous pouvez consultez la documentation du package corrplot
. Vous pouvez également utiliser la library RColorBrewer
pour créer votre palette de couleurs personnalisée.
library(RColorBrewer)
corrplot(mat_cor,
p.mat = p_mat,
type = "upper",
order = "hclust",
addCoef.col = "white",
tl.col = "gray",
tl.srt = 45,
col=brewer.pal(n = 8, name = "PRGn"),
sig.level = 0.000001,
insig = "blank",
diag = FALSE, )
3.3.5 Histogramme
La représentation des coefficients de corrélation en histogramme offre un autre regard intéressant sur les résultats. Nous pouvons par exemple représenter visuellement les corrélations d’une variable avec toutes les autres variables.
Nous devons dans premier temps transformer notre tableau de corrélation. Pour cela, nous utiliserons deux fonctions du package corrr
:
as_cordf()
pour transformer une matrice de corrélation en data.frame de corrélationfocus()
pour se focaliser sur une variable
library(corrr)
# Matrice de corrélation -> data.frame de corrélation
<- as_cordf(mat_cor)
hist_cor
# Sélection des corrélations de la variable "year"
<- focus(hist_cor, year) hist_cor
On obtient le tableau suivant :
Pour faciliter la lecture et identifier les corrélations positives et négatives sur l’histogramme, vous pouvez ajouter une variable à votre tableau, qui qualifie le sens de la relation en fonction de la valeur du coefficient :
# Si la valeur est positive = TRUE, sinon FALSE
$correlation <- hist_cor$year > 0 hist_cor
Construction de l’histogramme avec le package ggplot2
:
ggplot(hist_cor, aes(x = reorder(term, year), y = year, fill = correlation)) +
geom_bar(stat = "identity", colour = "black") +
ylab("Corrélation") +
xlab("Variables") +
scale_fill_discrete(labels = c("Négative", "Positive"))
4 Conclusion
Comme indiqué en préambule, il ne s’agissait donc pas de faire un cours de statistique sur le calcul de corrélation en SHS mais plutôt de présenter une méthodologie à la fois juste sur la plan statistique et simple à réaliser sur R.
Si toutefois cette fiche ne vous aurait pas convaincu de passer à l’utilisation de R, sachez qu’il existe divers outils en ligne pour réaliser des corrélations. Vous pouvez par exemple utiliser Mon nom est Pearson, une application que j’ai développée, qui vous permettra de réaliser une analyse de corrélation en clic-bouton, en produisant à la fois des matrices de corrélation et diverses représentations. Cette application est réalisée à l’aide de shiny
et repose donc entièrement sur R tant pour la création de l’application que pour la réalisation des analyses et représentations.
Bibliographie
Annexes
Infos session
setting | value |
---|---|
version | R version 4.0.2 (2020-06-22) |
os | Ubuntu 18.04.5 LTS |
system | x86_64, linux-gnu |
ui | X11 |
language | (EN) |
collate | fr_FR.UTF-8 |
ctype | fr_FR.UTF-8 |
tz | Europe/Paris |
date | 2021-10-12 |
package | ondiskversion | source |
---|---|---|
correlation | 0.3.0 | CRAN (R 4.0.2) |
corrplot | 0.84 | CRAN (R 4.0.2) |
corrr | 0.4.3 | CRAN (R 4.0.2) |
dplyr | 1.0.6 | CRAN (R 4.0.2) |
DT | 0.15 | CRAN (R 4.0.2) |
ggplot2 | 3.3.3 | CRAN (R 4.0.2) |
ggraph | 2.0.3 | CRAN (R 4.0.2) |
RColorBrewer | 1.1.2 | CRAN (R 4.0.2) |
see | 0.6.0 | CRAN (R 4.0.2) |
Citation
Le Campion G (2021). “Analyse des corrélations avec easystats.” doi:, 10.48645/QHAV-CB52 (URL: https://doi.org/10.48645/QHAV-CB52), <URL:, https://rzine.fr/publication_rzine/20201127_glecampion_initiation_aux_correlations/>.
BibTex :
@Misc{,
title = {Analyse des corrélations avec easystats},
subtitle = {Guide pratique avec R},
author = {Grégoire {Le Campion}},
doi = {10.48645/QHAV-CB52},
url = {https://rzine.fr/publication_rzine/20201127_glecampion_initiation_aux_correlations/},
keywords = {FOS: Other social sciences},
language = {fr},
publisher = {FR2007 CIST},
year = {2021},
copyright = {Creative Commons Attribution Share Alike 4.0 International},
}
Glossaire
Une régression renvoie à un ensemble de tests statistiques dont l’objectif est de prédire les valeurs prises par une variable en fonction d’une ou plusieurs autres variables.↩︎
La covariance en statistique est une mesure de la variation simultanée de deux variables.↩︎
La standardisation est une transformation de la donnée qui la rendra compatible avec une distribution moyenne de 0 et un écart-type de 1. Pour ce faire on soustrait à chaque valeur une valeur de référence (très souvent la moyenne) et on divise par l’écart-type. Vous pourrez aussi trouver les termes de normalisation ou de centrer-réduire.↩︎
Une distribution normale renvoie à une manière dont se distribuent vos données et qui rentrerait dans le cadre d’une loi normale. On parle également de loi de Gauss. En statistique, il s’agit d’une loi de probabilité. Elle est dite normale car elle permet de modéliser un grand nombre de distributions statistiques observées (taille, poids…). Les lois de probabilités sont utiles car elles permettent de modéliser les “phénomènes naturels” issus d’événements aléatoires.↩︎
Un rang est ici un nombre consécutif affecté à une observation spécifique dans notre échantillon d’observations triées selon leurs valeurs.↩︎
La droite de régression est un graphique linéaire représentant la corrélation théorique entre deux variables.↩︎
Une échelle de Likert est un outil psychométrique permettant de mesurer une attitude chez des individus. Elle tire son nom du psychologue américain Rensis Likert qui l’a développée. Elle consiste en une ou plusieurs affirmations pour lesquelles la personne interrogée exprime son degré d’accord ou de désaccord.↩︎
Un test d’hypothèse (ou test statistique) est une démarche qui a pour but de fournir une règle de décision permettant, sur la base de résultats d’échantillon, de faire un choix entre deux hypothèses statistiques.↩︎
L’hypothèse nulle (aussi appellée H0) est la base des tests statistiques. Cette hypothèse postule l’égalité entre des paramètres statistiques, ce qui implique le plus souvent l’affirmation d’une absence d’effet de la ou des variables indépendantes faisant l’objet de la recherche.↩︎
Le degré de liberté est un paramètre important qui intervient dans la réalisation des tests statistiques. Il dépend à la fois du nombre d’observations de votre échantillon (le nombre d’individus statistiques) et du nombre de paramètres (de variables) de votre modèle. Le degré de liberté représente la quantité d’information fournie par vos données que le modèle statistique peut “utiliser” pour estimer les valeurs des paramètres d’une population qui serait inconnue et calculer la variabilités de ces estimations.↩︎
Les tests de correction (ou d’ajustement) des p-values sont un ensemble de tests qui permettent d’ajuster les \(p-values\) pour réduire le risque d’erreur. En effet en statistique lorsqu’il y a des comparaisons multiples on augmente la probabilité de faire une erreur. Bref, plus on réalise de croisements plus on augmente les chances de se tromper. Les tests de correction des \(p-values\) vont agir afin de recalibrer, rehausser les \(p-values\) pour pouvoir continuer à les comparer dans tous les cas, à un risque de 5 %. C’est ce qu’on appelle l’ajustement des \(p-values\).↩︎