Corrélogrammes sous R avec prise en compte de la p-value

L'essentiel de cette page

Faire un corrélogramme est facile à faire avec la fonction corrplot() de la librairie du même nom.

On peut toutefois n'afficher que les corrélations significatives en tenant compte des p-values de ces corrélations calculées avec la fonction corr.test() de la librairie psych.

1- Corrélogramme brut en tableau de données

data(mtcars)

cor(mtcars) -> cor_matrice ; cor_matrice

Cette extrait montre les corrélations entre les variables de mtcars :

mpg cyl disp hp drat wt

mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.68117191 -0.8676594

cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.69993811 0.7824958

disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.71021393 0.8879799

hp -0.7761684 0.8324475 0.7909486 1.0000000 -0.44875912 0.6587479

drat 0.6811719 -0.6999381 -0.7102139 -0.4487591 1.00000000 -0.7124406

wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 1.0000000

qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 -0.1747159

vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 -0.5549157

am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 -0.6924953

gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 -0.5832870

carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 0.4276059

2- Corrélogramme graphique

require("corrplot")

corrplot(cor_matrice,type="lower") # cor_matrice vient de la partie 1




3- Corrélogramme graphique en tenant compte de la significativité des corrélations

require("psych")

# 0.05 seuil de significativité à 0.95%

corr.test(mtcars)$p -> pval_matrice # Matrice des p-values

pval_matrice

Voici un tableau des p-values qui traduit la significativité des corrélation des variables :

mpg cyl disp hp

mpg 0.000000e+00 3.178597e-08 4.783967e-08 8.045259e-06

cyl 6.112687e-10 0.000000e+00 9.915607e-11 1.738930e-07

disp 9.380327e-10 1.802838e-12 0.000000e+00 3.357059e-06

hp 1.787835e-07 3.477861e-09 7.142679e-08 0.000000e+00

drat 1.776240e-05 8.244636e-06 5.282022e-06 9.988772e-03

wt 1.293959e-10 1.217567e-07 1.222320e-11 4.145827e-05

qsec 1.708199e-02 3.660533e-04 1.314404e-02 5.766253e-06

vs 3.415937e-05 1.843018e-08 5.235012e-06 2.940896e-06

am 2.850207e-04 2.151207e-03 3.662114e-04 1.798309e-01

gear 5.400948e-03 4.173297e-03 9.635921e-04 4.930119e-01

carb 1.084446e-03 1.942340e-03 2.526789e-02 7.827810e-07

Corriger ainsi la matrice de corrélation de la partie 1 en fonction des p-values.

ifelse(pval_matrice<0.05,1,0) -> pval_matrice

pval_matrice* cor_matrice -> mymat

corrplot(mymat, type="lower")

Certaines corrélations ont ainsi disparu.

Corrélogramme de la partie 1

Corrélogramme n'illustrant que les corrélations significatives