Introduction au logiciel R

Transcription

Introduction au logiciel R
Matériaux 4 – TP de Traitement des données
Introduction au logiciel R
R est un logiciel libre, clone d’un autre logiciel très célèbre dans la communauté statisticienne S+ (notez le clin d’œil).
Il peut être téléchargé gratuitement sur www.r-project.org.
Sur ce site vous trouverez également des documentations très complètes, notamment le manuel d’Emmanuel Paradis,
chercheur en biologie à…Montpellier
Comme tous les logiciels libres, le développement et l’amélioration de R peuvent être effectués par tout un chacun.
Actuellement, R propose bien plus de fonctions statistiques que vous ne pourrez en utiliser pendant ce cours. Les
développeurs insistent sur le fait que R permet un calcul vectoriel lui ouvrant des applications dans d’autres domaines
que les statistiques.
R est plus précisément un langage orienté-objet interprété.
Outre les diverses procédures intégrées, R est très connu pour son interface graphique souple et qui permet d’exporter
des graphiques de très bonne qualité à des formats variés très simplement. Enfin, contrairement à d’autres logiciels
« boîtes noires », R oblige son utilisateur à une programmation minimale, ce qui le rend également plus souple que SAS
ou SPSS par exemple (et on ne parle pas de la facture…)
Avant de commencer :
• Les lignes de commandes peuvent être rappelées avec les flèches « haut » et « bas », comme sous Unix.
L’ensemble des commandes que vous passez est gardée en mémoire dans un fichier .history
•
•
•
Vous allez créer des « objets » (variables, fonctions…). Tout est stocké dans un gros fichier générique nommé
.Rdata. Mais vous avez bien sûr la possibilité de stocker vos données dans des fichiers propres (Ex :
tp.Rdata)
Toutes les données sont comprises comme des vecteurs, qui peuvent avoir des noms (attributes) distincts.
Ainsi matrix et data.frame peuvent représenter tous deux des tableaux de chiffres mais sont compris
différemment par R.
Je vous recommande de créer un répertoire de travail dédié à R et au cours de Statistique Multidimensionnelle
sur votre disque. Puis spécifiez-le sous R en passant par File/Change dir.
Voici un petit tour de quelques fonctionnalités de base.
Comme toute première approche, et puisque R vous y invite, vous pouvez commencez par taper :
>demo()
et vous vous laissez guider pour avoir un bref aperçu des capacités graphiques de R. Ces graphes s’appuient sur des
jeux de données intégrés à R, dans des librairies, et qui sont fort utiles pour tester vos programmes.
Faites également un petit tour sur l’aide en ligne : onglet Help/Html Help.
J’omets désormais le prompt >. L’affectation se fait par le signe double <- (inférieur strict, tiret)
x<-2
x
isim<-«polytech»
isim
x<-c(1,2,3);x
c() est la fonction collecteur qui assigne des valeurs (numériques ou non) à un objet (ici x)
ls() Liste les objets dans le .Rdata
search()
Liste les packages de base (un package ? posez-moi la question…)
x<-1:30
nouvelle affectation…
x
écrasement…
mode(isim) Les vecteurs ont d’office deux attributs : le mode et la longueur.
rm(isim);ls()
mode(x)
4 modes principaux : numérique, caractère, complexe, logique (F ouT).
length(x)
N.B. : il existe d’autres modes.
y<-seq(-1,1.2,0.2)
Voir aussi les fonctions rep, sequence
m<-matrix(y,nrow=4)
m
m<-matrix(y,nrow=4,byrow=T)
Comparez.
attributes(m)
Une matrice est toujours un vecteur mais qui possède un attribut supplémentaire : dim qui est un vecteur de taille 2
contenant la taille de la matrice.
-1-
Lire, importer, exporter des données
R peut importer des données de différents types (et accéder à certaines BDD). Nous nous limiterons ici à des fichiers
texte. Il est préférable de les placer dans le répertoire de travail. Pour localiser ce répertoire : getwd() et pour le
changer setwd(nom du répertoire).
Crééz avec Wordpad ou le bloc notes le petit fichier texte suivant. Placez dans votre répertoire de travail et donnez lui le
nom tp1.txt
073
466
688
10 8 4
862
811
Revenez sous R
data1<-read.table(«tp1.txt »)
Puis
data2<-read.table("tp1.txt",col.names=c("A","B","C"))
write.table(data2,file="res.txt")
Puis allez voir ce qui s’est passé dans votre répertoire de travail. La commande read.table peut être remplacé par
scan sous certaines conditions ou par read.fwf. Elle créé un objet de la classe data.frame. La commande
write est moins spécifique que write.table
data2[3,2]
data2[1:3,]
Extraction de sous-matrice
data2[c(1,3),]
What’s the difference ?
1/ VECTEURS
Création de vecteurs
Testez les lignes de commandes suivantes
> x<-1:6
> y<-c(1,4,2,5,4,3)
> z<-paste("X",1:10,sep="")
> rep("a",3)
> rep(1,4)
> rep(c(2,3),4)
> rep(c(2,3),c(4,4))
> rep(1:4,2)
> rep(1:4,1:4)
> seq(from=1,to=10,by=0.5)
> seq(from=1,to=10,length=19)
> rev(6:12)
Opération arithmétiques sur les vecteurs
+, -, *, ^, /,sqrt(), log(), exp(), abs()
> z<-c(-2,-5,3,6)
> 2*sqrt(abs(z)^2+3)
Opération logiques sur les vecteurs
Testez les lignes de commandes suivantes :
> x<-1:6
> y<-c(1,4,2,5,4,3)
> x<y
> x>y
> x==y
> x!=y
> (x<=3)&(y>3)
> (x<=3)|(y>3)
Autres fonctions utilisables sur les vecteurs. A essayer!
> min(y),max(y), sum(y), sort(y), prod(y), length(y), rank(y),
Extraction d'éléments
> y[2]
-2-
>
>
>
>
y[length(y)]
y[2:4]
y[2]<-0
y
2/ MATRICES
Création de matrices
> x<-1:12
> Z<-matrix(x,ncol=3)
> Z
> Zbis<-cbind(Z,c(rep(8,4)))
Regardez ce que vaut à présent Zbis!
> colnames(Zbis)<-c("col1","col2","col3","col4")
> rownames(Zbis)<-paste("Y",1:4,sep="")
Et maintenant?
Que fait la ligne suivante?
> c(Zbis)
Extraction d'éléments
Testez les lignes de commandes suivantes :
> Zbis[2,]
> Zbis[,2]
> Zbis[2,2]
Opérations sur les matrices
Testez les lignes de commandes suivantes :
> t(Zbis)
> dim(Zbis)
> ncol(Zbis)
> nrow(Zbis)
> Zbis%*%Z
3/ GRAPHIQUES
x<-seq(0,10,length=50)
y<-sqrt(x)
plot(x,y)
plot(x,y,type="l")
Essayer aussi type="s","h"
layout(matrix(1:4,2,2))
layout.show(4)
plot(x,y,type="l",xlab="abscisses",ylab="ordonnées",main="mon premier graphe
partitionné avec R",las=1,cex.main=0.7)
plot(x,y,type="s")
plot(x,y,pch="s")
plot(x,y,pch=17)
dev.off()
x<-rnorm(200,0,1)
y<-rnorm(200,0,0.2)
plot(x,y,xlim=c(-2,2),ylim=c(-2,2),pch=20)
Votre premier nuage de point sous R (émouvant, n’est-ce pas ?). Au fait quelle est la loi de probabilité associée à cet
échantillon ? Comment feriez-vous tourner ce nuage de 45 degrés ? Exporter ce graphique dans le répertoire de travail
au format que vous souhaitez.
La gestion des graphiques sous R pourrait à elle seule donner l’occasion d’une séance de TD bien remplie. On distingue
dans R
• des commandes graphiques « haut-niveau » qui vont créer un graphe ou la base d’un graphe : plot,
pairs, hist, piechart, etc…
• des commandes graphiques « bas-niveau » qui se rajoutent à un graphe existant : points, lines,
abline, legend, locator…
-3-
Les paramètres graphiques (taille des caractères, couleurs, axes, arrière plan, etc) peuvent être directement entrés en
option des commandes de haut niveau ou être gérés globalement par la commande par() (68 paramètres différents).
4/ SIMULATION
La simulation de variables aléatoires
Elle est enfantine sous R. Simulation de n variables pour quelques lois célèbres ( R peut simuler 18 lois différentes.)
Commande
Loi
rpois(n,m)
Poisson(m)
rbinom(n,k,p)
Binomiale(k,p)
rpois(n,l)
Poisson(l)
runif(n,a,b)
Uniforme(a,b)
rnorm(n,m,s)
Normale(m,s²)
rexp(n,m)
Exponentielle(m)
x<-rnorm(50,0,1)
x
t<-rep(0,50)
plot(x,t,pch=20)
Effectuez quelques autres tentatives en changeant les paramètres (50,0,1)
x<-runif(50,0,1)
x
t<-rep(0,50)
plot(x,t,pch=20)
Réiterez avec quelques unes des lois mentionnées dans le tableau ci-dessus et vues en cours. Que se passe-t-il en
reprenant la même séquence pour des variables aléatoires discrètes ? Essayez alors par exemple :
x<-rpois(50,5)
plot(x)
N.B. : Je pars du principe que le cours de première année est assimilé et que ces lois sont connues…
En rajoutant d, p et q devant le nom de la loi , on peut également obtenir les valeurs
• de la densité (Ex : dnorm(1))
• de la fonction de répartition (Ex : pnorm(0))
• des quantiles (Ex : qnorm(1.96))
Testez au passage ces fonctions utiles pour ordonner une suite de nombres : sort, rank.
La représentation des données
Nous allons voir que R peut, grâce à son interface graphique, nous permettre de représenter les données simulées.
x<-rnorm(200,0,1)
hist(x)
hist(x,breaks=5)
plot(density(x))
Que se passe-t-il sur ces deux dernières commandes ?
En fait la fonction hist n’est pas bien adaptée à la représentation des variables discrètes.
x<-rpois(50,5)
eff<-table(x)
barplot(eff)
Vous obtenez un diagramme en bâtons (R ne sait pas les tracer autrement et il ne vous faut pas les confondre avec les
histogrammes.)
Recopiez la petite fonction ci-dessous et dites quelle est son utilité.
po<-function(n,lambda){
p<-0
for (i in 1:n) p[i]<-dpois(x=i,lambda=lambda)
plot(p,type="h")}
puis effectuez
po(20,5)
-4-
et recommencez en variant les exemples.
Généralisez à d’autres lois discrètes.
La simulation de vecteurs aléatoires de taille 2.
x<-rnorm(200,0,1)
y<-rnorm(200,0,0.2)
plot(x,y)
Que fait-on ici ?
Comparez avec :
plot(x,y,xlim= c(-2,2),ylim= c(-2,2),pch=20)
Qu’a-t-on fait ?
z<-(x+y)/sqrt(2)
y<-(x-y)/sqrt(2)
plot(z,y,xlim= c(-3,3),ylim= c(-3,3),pch=20)
Et maintenant ?
Essayez de « retrouver » ce qui se passe d’un point de vue mathématique.
Tracez quelques autres nuages de points (vecteurs aléatoires de dimension 2) a partir d’autres types de variables
aléatoires que la loi normale ? Que remarquez-vous avec la loi uniforme ?
5/ CALCULS ET ANALYSES
Un petit détour par l’algèbre linéaire
A partir de l’aide en ligne, déterminez la commande donnant les valeurs propres et les vecteurs propres d’une matrice
carrée.
Retrouvez les valeurs propres et les vecteurs propres de la matrice carrée de taille 2 composée de 1
Reprenez la matrice rectangulaire 6,3 introduite au début du TD puis
m<-as.matrix(data1)
On transforme le data.frame data1 en une matrice. Sous réserve de compatibilité on change la classe d’un objet par la
commande : nouvonom<-as.nelleclasse(ancnom)
v<-t(m)%*%m Essayez de comprendre ce qui se passe.
Donnez les valeurs propres de la nouvelle matrice. Récupérez-les dans un vecteur de taille 3. (Comment fait-on ?).
Prenez sa racine carrée.
Maintenant faites :
svd(m)
Des commentaires ?
La loi des grands nombres : l’occasion de faire une petite boucle
Exécutez les lignes suivantes :
x<-runif(100,-0.5,1)
z<-0;y<-0
for(i in 1:50){y[i+1]<-y[i]+x[i+1];z[i]<-y[i]/i};plot(z,type="l")
Reprenez les instruction suivantes en simulant une loi normale , puis une loi de Cauchy. Quelles différences remarquezvous ?
Premières analyses statistiques avec R
Nous commençons avec l’obtention de statistiques simples via la commande summary.
La variance et la covariance s’obtiennent avec la commande var. Testez aussi mad.
data()
Liste les jeux de donnés embarqués avec R. L’embarras du choix…
data(faithful)
Cherchez dans l’aide la description de ce jeu de données
attach(faithful)
summary(faithful)
plot(faithful)
hist(eruptions,prob=T)
Que se passe-t-il avec prob=F ?
lines(density(eruptions,bw=0.1),col="blue")
rug(eruptions,col="green")
Essayez de comprendre les deux lignes de commande suivantes :
-5-
library(stepfun)
plot(ecdf(eruptions),do.points=F,verticals=T)
Nous passons maintenant à une analyse de variance. La commande est aov (essayez aussi l’instruction alternative
anova).
library(MASS)
data(michelson)
attach(michelson)
plot(Expt,Speed, xlab=”Experience No.”)
anv<-aov(Speed~Run+Expt,data=michelson)
anv<-aov(Speed~Run+Expt,data=michelson)
summary(anv)
plot(anv)
-6-

Documents pareils