Intro à R - Cours en Ligne

Transcription

Intro à R - Cours en Ligne
Master EBE
Introduction à R et Statistique inférentielle
R est un logiciel de calcul statistique et probabiliste. Il est développé dans le cadre du projet
GNU http://www.gnu.org/ ), c’est donc un logiciel libre qui présente l’avantage d’être enrichi
par l’ensemble des personnes de bonne volonté grâce au système des package . C’est un langage
de script (ligne de commandes) orienté objet. Il est disponible pour différentes palteformes
(Windows, Linux, Unix, MacOS). Enfin on trouve de nombreuses documentations en ligne.
Pour mémoire ici, on peut citer
– le site officiel : http://cran.r-project.org/, vous trouverez à cette adresse toutes les
informations nécessaires pour l’installation de R,
– et un manuel en français à l’usage des (pseudo) débutants http://cran.r-project.org/
doc/contrib/Paradis-rdebuts_fr.pdf
1
Aide
R possède une aide très sophistiquée, accessible en mode commande ou au format HTML.
Pour accéder à l’aide HTML il faut taper help.start(), ou sélectionner Aide, Aide HTML dans
le menu. On a alors accès à des manuels (introduction à R en particulier), à la documentation
des packages, et à un moteur de recherche. L’aide en mode commande se fait par l’intermédiaire
de la fonction help() ou bien ?nomfonction
?read.csv
?read.table
Les exemples proposés à la fin de la description des fonctions aident beaucoup en général à
comprendre leur fonctionnement.
On peut aussi se poser des questions sur un sujet bien précis :Comment faire un test de
student ?. Pour cela on utilise la commande help.search qui recherche dans la documentation
à quel endroit le mot apparaı̂t.
help.search("student")
2
Lecture des données
Copier le fichier T:\Master-EBE\DYST_TD_Intro\Chacals.csv dans votre répertoire personnel, puis l’ouvrir avec un éditeur de texte (NotePad par exemple) et noter comment le fichier
est constitué.
On veut maintenant l’importer dans R
1
# ce qui se trouve derriere # est un commentaire , ce n’est pas executé
setwd("monRépertoire")
maTable <- read.table(’chacal.csv’,header=TRUE, sep=";")
maTable
names(maTable)
head(maTable)
maTable$taille
maTable$sexe
maTable <- read.table("chacals.csv",header=TRUE,
colClasses=c("numeric","factor") , sep=";")
maTable$taille
maTable$sexe
ls()
taille
attach(maTable)
taille
sexe
3
Objets
R travaille avec des objets. Les données, les graphiques, les fonctions, les résultats d’analyse
sont des objets. Les objets les plus courants sont :
vector vecteur composé d’une seule variable
data.frame tableau de données. Il contient le nom des variables.
list liste d’objet, généralement le résultat d’une analyse. Chaque élément de la liste est accessible en tapant le nom de la liste suivi du symbole $ et du nom de l’élément.
La plupart des objets ont un attribut de classe. Les plus courants sont numeric, logical, integer,
factor, character, data.frame, ....
objects()
class(maTable)
class(sexe)
class(taille)
class(taille/10)
4
Graphiques
Avant d’analyser les données, il est bon de les visualiser. R dispose d’immenses capacités
graphiques ... qui ne sont pas toujours faciles à utiliser. On se contente de quelques exemples.
?plot
plot(taille,main="taille en fonction du numero de l’individu")
plot(taille,col=sexe,main="taille en fonction du numero de l’individu",pch=20)
legend("topright", legend=c("male","femelle"), pch=20, col=c(1,2))
2
plot(sexe,taille,main="Taille des cr^
anes de chacals en fonction du sexe")
?boxplot
5
5.1
Etude du jeu de données Chacals
Création de variables et calculs élémentaires
On voudrait centrer les tailles des crânes pour cela, on a besoin de calculer la moyenne et
de calculer la différence entre la taille d’un crâne et la moyenne.
5.1.1
Sur l’échantillon complet
moy <- mean(taille)
taille.cent <-taille -moy
ecart2 <- taille.cent^2
A l’aide de la variable ecart2, de la fonction sum et de la fonction length calculer la variance
de l”échantillon. Comparer au résultat de la fonction var.
Pour ajouter une variable à notre table de données, il suffit de concaténer cette variable
avec le reste de la table, en expliquant à R qu’on veut ajouter une colonne.
maTable<-cbind(maTable,taille.cent, ecart2)
head(maTable)
5.1.2
Extraire un sous echantillon
Pour sélectionner uniquement les femelles chacals, on dispose de l’opérateur [ ]. A partir
des commandes suivantes, on peut calculer la moyenne et la variance de lӎchantillon en fonction
du sexe.
taille.femelle<- taille[sexe==2]
taille.male<-taille[sexe==1]
moy.male<- mean(taille.male)
...
La fonction by permet de faire la même chose plus facilement.
?by
5.2
Un premier test
On se demande si la taille d’un crâne de chacal mâle est différente de la taille d’un crâne
d’un chacal femelle. On met en place un test de Student.
Justifier l’hypothèse d’égalité des variances.
help.search("student")
?t.test
3
6
Simulation
On veut simuler un échantillon gaussien X1 , . . . , X15 de moyenne µ = 10 et de variance
σ = 4. Pour cela on peut utiliser la fonction rnorm.
2
monEchantillon <- rnorm(15,mean=10,sd=2)
hist(monEchantillon)
monEchantillon <- rnorm(60,mean=10,sd=2)
hist(monEchantillon)
On veut maintenant vérifier que l’estimateur de la moyenne suit une loi normale de moyenne
µ et de variance ? ? ? ?
mesEchantillons <- matrix(rnorm(60*50,mean=10,sd=2),ncol=50, nrow=60)
mesEchantillons <- as.table(mesEchantillons)
mesEchantillons
moy.estim <- apply(mesEchantillons,2,mean)
hist(moy.estim, freq=F)
qqnorm(moy.estim)
Vérifier par un QQplot que moy.est suit la loi attendue.
7
A vous de jouer
Dans le cadre d’une étude phyto-écologique dans les Vosges, on a noté, pour une série de 260
peuplements de hêtres ou de sapins, le type d’humus réparti en six classes de niveau trophique
décroissant : dysmoder, moder, mull moder, mull acide, mull mésotrophe et mull eutrophe. Les
effectifs obtenus par essence et classe d’humus sont donnés dans le tableau suivant :
Dysmoder
Sapin
36
Hêtre
9
Moder
36
11
Mull model
17
20
Mull acide
40
32
Mull méso Mull eutrophe
16
12
25
6
total
157
103
Que peut-on dire de la répartition des espèces par type d’humus ?
8
8.1
Compléments
Fonctions
Une fonction associe un objet (la sortie) à un ensemble d’objets (les arguments d’entrée).
Les arguments d’entrée peuvent être définis par défaut. Ils sont associés à un nom générique
qui peut être omis si l’ordre des arguments est celui de la définition. L’objet en sortie est le
plus souvent une liste. La description des fonctions de R est accessible par l’aide en ligne en
tapant ?nomdelafonction.
?seq
seq(1,10)
seq(to=10,from=1,by=1)
seq(to=10,from=1,l=10)
4
seq(1,10,2)
seq(1,10,l=5)
tri = sort(Taille, index.return=TRUE)
tri$x;tri$ix
8.2
Fichiers script
Un fichier script permet d’écrire plusieurs commande à la fois et de les exécuter séquentiellement
(c’est un programme) ou bien de créer une nouvelle fonction. On donne habituellement l’extension .R au fichier texte contenant les instructions. La commande source(nomprogramme)
permet d’exécuter le programme ou la fonction.
Boucles et tests
boucles
for (indices in vecindices){ instructions }
while (condition) { instructions }
tests
if (condition){ instructions
} else { instructions }
fonction
sortie = function(arg1=defaut1,arg2=defaut2,...){
instructions
return(sortie) }
fecart<- function(taille.ind, taille.echant){
vMessage=c(’Mignon’, ’Normal’, ’EFFRAYANT’)
tiers<-round(length(taille.echant)/3)
seuils<-rep(0,2)
seuils[1]<-sort(taille.echant)[tiers]
seuils[2]<-sort(taille.echant)[2*tiers]
groupe<-sum(taille.ind>seuils)+1
diagnostic = list(groupe=groupe, message=vMessage[groupe])
return(diagnostic)
}
fecart(125,taille)
detach(maTable)
8.3
Sauvegarde
R propose à la fin de chaque session de sauvegarder tout l’espace de travail. Celui-ci est en
général énorme et contient beaucoup d’objets intermédiaires inutiles. Pour sauvegarder uniquement quelques objets, utiliser la fonction save(). Pour charger les données sauvegardées utiliser
la fonction load().
save(t.taille, maTable,file=’sauve.res’)
rm(maTable); maTable;
load(’sauve.res’); maTable
5
Pour sauvegarder un tableau de donnéees au format ASCII utiliser la fonction write.table()
write.table(maTable,file=’resultats.txt’,quote=FALSE,row.names=FALSE,col.names=c(’Sexe’,
Pour sauvegarder un graphique on peut soit utiliser le menu de la fenêtre graphique, soit utiliser
les fonctions pdf(), postscript(), jpeg().
pdf("monGraphique")
hist(taille)
dev.off()
6