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
mardi 8 février 2011
lundi 31 janvier 2011
Trouver les éléments communs à deux vecteurs
Pour récupérer les éléments qui sont présents simultanément dans deux vecteurs, on peut utiliser la fonction intersect. Voici un exemple:
a <- c("lapin", "cheval", "loup") # création du premier vecteur
b <- c("renard", "lapin", "chien") # création du second vecteur
intersect(a,b) # le résultat affichera le mot "lapin" qui est commun aux deux vecteurs
a <- c("lapin", "cheval", "loup") # création du premier vecteur
b <- c("renard", "lapin", "chien") # création du second vecteur
intersect(a,b) # le résultat affichera le mot "lapin" qui est commun aux deux vecteurs
mercredi 26 janvier 2011
Une bonne initiation à R (et en français)
Voici une très bonne introduction à R en français, sur le site du zéro :
http://www.siteduzero.com/tutoriel-3-374508-effectuez-vos-etudes-statistiques-avec-r.html
Ce tutoriel part vraiment de zéro, mais contient de nombreuses informations très utiles pour démarrer sur de bonnes bases.
http://www.siteduzero.com/tutoriel-3-374508-effectuez-vos-etudes-statistiques-avec-r.html
Ce tutoriel part vraiment de zéro, mais contient de nombreuses informations très utiles pour démarrer sur de bonnes bases.
lundi 10 janvier 2011
Afficher deux graphiques (ou plus) dans une même fenêtre
Pour afficher plusieurs graphiques dans une même fenêtre, il faut utiliser la fonction par() avant de lancer les graphiques. Voici un exemple:
a <- c(1,2,3)
b <- c(4,5,6)
par(mfrow = c(1,2))
barplot(a)
barplot(b)
Dans l'exemple précédent, les 2 graphiques seront l'un à côté de l'autre. Si on veut les 2 graphiques l'un au-dessus de l'autre, il faut utiliser :
par(mfrow = c(2,1))
a <- c(1,2,3)
b <- c(4,5,6)
par(mfrow = c(1,2))
barplot(a)
barplot(b)
Dans l'exemple précédent, les 2 graphiques seront l'un à côté de l'autre. Si on veut les 2 graphiques l'un au-dessus de l'autre, il faut utiliser :
par(mfrow = c(2,1))
lundi 3 janvier 2011
Un code R facile à lire (2)
Voici un package qui permet de "mettre en forme" du code R:
http://cran.r-project.org/web/packages/formatR/index.html
http://cran.r-project.org/web/packages/formatR/index.html
mardi 28 décembre 2010
Un code R facile à lire
Voici 2 sites proposant des règles à suivre pour avoir un code R facile à lire et à relire :
http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html
http://www1.maths.lth.se/help/R/RCC/
http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html
http://www1.maths.lth.se/help/R/RCC/
mercredi 15 décembre 2010
Nommer les données dans un nuage de points
Voici un exemple permettant d'afficher le nom des données dans un nuage de points:
a <- c(1,2,3) # coordonnées x de 3 points
b <- c(4,5,6) # coordonnées y
nom <- c("a", "b", "c") # noms des 3 points
plot(a,b) # nuage de points
text(a,b,nom) # affichage des noms des points
On peut remarquer que les noms s'affichent par-dessus les points, ce qui n'est pas très lisible. Pour afficher les noms sans les points, voici ce qu'il faut faire:
plot(a,b, type= "n") # nuage de points sans afficher les points
text(a,b,nom) # affichage des noms des points
Inscription à :
Articles (Atom)
