Quand on a plusieurs variables numériques, on peut faire une matrice de corrélation pour voir le coefficient de corrélation entre toutes les variables prises 2 à 2. Mais une telle matrice n'est pas toujours très agréable à lire. Voici une méthode pour représenter visuellement une matrice de corrélation. Cela donnera au final le graphique suivant :
Pour chaque corrélation, on a le nuage de points et le coefficient de corrélation (avec le degré de significativité).
Voici tout d'abord le code pour créer les variables et pour avoir une matrice de corrélation classique :
v1<-c(1,2,4,5,7) # création d'un vecteur v1
v2<-c(7,8,5,9,8) # création d'un vecteur v2
v3<-c(7,5,3,2,1) # création d'un vecteur v3
tab<-matrix(data=c(v1,v2,v3), nrow=5, ncol=3, byrow=F) # création d'une matrice contenant les 3 vecteurs
colnames(tab)=c("variable 1","variable 2","variable 3") # on donne un nom à chaque colonne
cor(tab) # matrice de corrélation classique
Voici maintenant le code pour obtenir le graphique ci-dessus.
# Il faut d'abord créer la fonction suivante (nommée panel.cor)
panel.cor <- function(x, y, digits=2, prefix="", cex.cor)
{
usr <- par("usr"); on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
r <- (cor(x, y))
txt <- format(c(r, 0.123456789), digits=digits)[1]
txt <- paste(prefix, txt, sep="")
if(missing(cex.cor)) cex <- 0.8/strwidth(txt)
test <- cor.test(x,y)
# borrowed from printCoefmat
Signif <- symnum(test$p.value, corr = FALSE, na = FALSE,
cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
symbols = c("***", "**", "*", ".", " "))
text(0.5, 0.5, txt, cex = cex * abs(r))
text(.8, .8, Signif, cex=cex, col=2)
}
# Puis on utilise la fonction pairs()
pairs(tab[,c(1,2,3)], lower.panel=panel.smooth, upper.panel=panel.cor)
remarque: la fonction panel.cor et l'idée du graphique proviennent du lien suivant (j'ai légèrement modifié le code pour afficher le signe du coefficient de corrélation) :
http://addictedtor.free.fr/graphiques/RGraphGallery.php?graph=137
Aucun commentaire:
Enregistrer un commentaire