Télécharger - Cours en Ligne
Transcription
Télécharger - Cours en Ligne
Introduction à R R est un logiciel libre de calcul statistique basé sur un environnement orienté objet et sur le langage de programmation S. Il est constitué d’un noyau de base et de multiples packages développés et mis à disposition de tous par des utilisateurs. Dans sa version de base il est utilisable en mode commande, mais plusieurs packages fournissent un mode interfacé. De nombreuses introductions, documentations et tutoriaux sont disponibles en français et en anglais sur internet. 1 Installation Télécharger R sur le site http://www.r-project.org/ (Download, CRAN, mirror, Windows, base, R-nnn-win.exe) et procéder à l’installation. Télécharger et installer Rstudio (RStudio.org). Ouvrir Rstudio. En version de base, seuls quelques packages les plus courants sont disponibles. Pour des analyses plus spécialisées on peut avoir accès aux fonctions d’autres packages. Pour cela il faut les charger s’ils ont déjà été installés, ou les installer sinon (onglet Packages dans la fenêtre en bas à gauche). 2 Aide R possède une aide très sophistiquée, accessible par l’onglet Help dans la fenêtre en bas à gauche. Les exemples proposés à la fin de la description des fonctions aident beaucoup en général à comprendre leur fonctionnement. 3 Scripts R marche en mode commande mais la plupart du temps pour des programmes un peu longs on utilise un fichier script. Pour créer un nouveau script ou en ouvrir un nouveau on utilise l’éditeur disponible dans la fenêtre en haut à droite. On peut exécuter une commande de cette fenêtre en plaçant le curseur sur la ligne et en cliquant sur le bouton Run, ou un groupe de commandes en les surlignant et en cliquant sur le bouton Run. 4 Lecture de données Copier le fichier Promo-Agro93.xls dans votre répertoire de travail. Le convertir en fichier txt (séparateur tab) et csv (séparateur ” ;”) . Sous R il faut d’abord se placer dans le répertoire de trvail setwd(’N:/Monrepertoire/TDStat/’) Lecture des fichiers : AGRO = read.csv(’Promo-Agro93.csv’,header=TRUE,sep=’;’) names(AGRO) AGRO = read.table(’Promo-Agro93.txt’,skip=1) names(AGRO) = c(’Date’,’Promo’,’Taille’,’Poids’,’Pointure’,’Age’,’Sexe’) 1 Affichage des données AGRO AGRO$Age attach(AGRO);Age Attention : éviter d’attacher plusieurs fois de suite un tableau de données. Pour détacher les données detach(AGRO) 5 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(AGRO) class(Sexe) class(Pointure) class(Pointure/10) 6 6.1 Langage de commandes Opérateurs Opérateurs mathématiques : +, ∗, /, −,ˆ Poids/(Taille/100)^2 Opérateurs logiques : & (et), | (ou), ! (négation), == (identité) (Poids < 50) & (Sexe ==’M’) Fonctions mathématiques : sqrt(), log(), exp(), ... sqrt(Poids) Fonctions statistiques : min(), max(), sum(), mean(), var(), median(), range(), order(), ... mean(Poids) var(Poids) min(Age) range(Age) summary(AGRO) sort(Taille) 2 Opérations vectorielles : concaténation éléments : c(), colonnes : cbind(), lignes : rbind() c(3,5,-1) cbind(Poids,Taille,Poids/(Taille/100)^2) extraction vec[i], mat[i, j], mat[, j] (i : ligne, j : colonne) Poids[9] Poids[Sexe==’F’] AGRO[5,2] AGRO[,5] AGRO[Promo==1994,5] suppression vec[−i] AGRO[,-5] multiplication matricielle % ∗ % fonctions sur des colonnes d’un tableau : apply(tab,2,fun), sur les lignes : apply(tab,1,fun) apply(AGRO[,3:6],2,max) tapply(Taille,Sexe,mean) 6.2 Création de variables Au départ R utilisait les symboles <− pour l’affectation. Mais les versions récentes admettent également le symbole = pour l’affectation. IMC <- Poids/(Taille/100)^2 IMC = Poids/(Taille/100)^2 Le résultat n’est plus affiché. Pour le visualiser il suffit de taper son nom, ou d’utiliser la fonction print. IMC print(IMC) 6.3 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) seq(1,10,2) seq(1,10,l=5) tri = sort(Taille, index.return=TRUE) tri$x;tri$ix 3 6.4 programmation 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) } fIMC = function(pds,taille){ vMessage=c(’Denutrition’,’Maigreur’,’Normal’,’Surpoids’, ’Obesite moderee’,’Obesite severe’,’Obesite massive’) seuils = c(16.5,18.5,25,30,35,40) imc = pds/(taille/100)^2 indMes = findInterval(imc,seuils) IMCres = list(imc=imc,message=vMessage[indMes+1]) return(IMCres) } fIMC(Poids,Taille);fIMC(58,165) 7 Graphiques Le graphique de base est obtenu par la fonction plot(x,y) qui admet de multiples options. plot(Taille, Poids) couleur = rep(’blue’,length(Taille)) couleur[Sexe ==’F’]=’deeppink’ plot(Taille, Poids, pch=20, cex=0.8, col=couleur, xlab=’Taille (cm)’, ylab=’Poids (Kg)’, main=’Promos 94, 95 et 96’) legend(’topleft’,legend=c(’Garcons’,’Filles’),pch=20,col=c(’blue’,’deeppink’), cex=1.2) x=seq(150,205);y=x-110 lines(x,y,lwd=2) points(mean(Taille),mean(Poids),cex=1.5,pch=20) text(175,90,"Garçons") text(155,60,"Filles") 8 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(). 4 save(Taille,Poids,IMC,file=’sauve.res’) rm(IMC); IMC; load(’sauve.res’); IMC Pour sauvegarder un tableau de donnéees au format ASCII utiliser la fonction write.table() tab = cbind(Sexe,round(IMC,2)) write.table(tab,file=’IMC.txt’,quote=FALSE,row.names=FALSE,col.names=c(’Sexe’,’IMC’)) Pour sauvegarder un graphique on peut utiliser le menu de la fenêtre graphique (fichier,sauver sous). 9 Distributions et simulations R donne les lois de probabilités, les quantiles et permet la simulation de nombreuses distributions. Si nomloi est le nom de la loi (par exemple norm pour normale, binom pour binomiale...) les fonctions qnomloi(), pnomloi(), dnomloi(), rnomloi() donnent les quantiles, la fonction de réparition, la densité, et des simulations de la loi nomloi. qnorm(0.95) pnorm(1.96) # simulation d’une loi exponentielle #----------------------------------n = 100 u = rexp(n) hist(u,probability=TRUE) x=seq(0,5,0.1) y = dexp(x) lines(x,y,col=’red’) 10 Régression et ANOVA La fonction de base pour le modèle linéaire est lm(formula, ...) (pour Linear Model). Mais il en existe d’autres telles que aov() pour Analysis Of Variance, glm() pour Generalized Linear Model. formula décrit le modèle sous la forme variable expliquée ∼ variables explicatives avec les conventions suivantes : V 1 + V 2 : pas d’interaction, V 1 : V 2 interaction de V1 et V2, V 1 ∗ V 2 = V 1 + V 2 + V 1 : V 2. boxplot(Taille ~ Sexe) cor(Taille,Poids) cor(Taille[Sexe==’F’],Poids[Sexe==’F’]) cor(AGRO[,3:6]) pairs(AGRO) # test d’egalite #--------------5 var.test(Taille~Sexe) t.test(Taille~Sexe) t.test(Taille~Sexe,var.equal=TRUE) # Regression Poids sur Taille #---------------------------regressionF = lm(Poids ~Taille,subset = Sexe==’F’) summary(regressionF) opar = par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0)) plot(regressionF) par(opar) newTaille = data.frame(Taille=seq(140,185,5)) predicF = predict(regressionF,newTaille,interval=’prediction’) plot(Taille[Sexe==’F’],Poids[Sexe==’F’],pch=19, main=’Intervalles de prediction’,xlab=’Taille (cm)’,ylab=’Poids (Kg)’) matplot(newTaille$Taille,predicF,add=TRUE,lty=c(1,2,2),type=’l’) # Regression multiple #-------------------cor(AGRO[Sexe==’F’,3:6]) regMultF = lm(Poids ~ Taille + Pointure + Age, subset=Sexe==’F’) summary(regMultF) plot(regMultF) # Analyse de la variance #----------------------ClAge = Age ClAge[Age>=25]=25 ClAge = as.factor(ClAge) table(Sexe,ClAge) AnovaF = lm(Poids ~ Sexe*ClAge) summary(AnovaF) anova(AnovaF) # Analyse de la covariance #------------------------Anaco = lm(Poids ~ Sexe*Taille) summary(Anaco) anova(Anaco) 6