m2 cee pr. philippe polomé, université lumière lyon 2 2016...
TRANSCRIPT
Programmation dans R 2016-17
Programmation dansM2 CEE
Pr. Philippe Polomé, Université Lumière Lyon 2
2016 – 2017
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
Outline
Ch1. Bases de RSWIRLGestion de donnéesR graphiqueFonctionalités d’édition de document
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
SWIRL
I Faites Course 1 : R programmingI Lessons 1-9 + 14I pour sortir d’une lesson : escI répondez “no” aux propositions de “register”I À la suite de ...
I il faut presser -I Parfois, il s’ensuit pas mal de texte – lisez tout
I Suivre les commandes sur AE2016.RI Avec les diapos
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
SWIRL R programming
I Passez maintenant à R-StudioI Swirl R programming 1-9 + 14
1 : Basic Building Blocks 2 : Workspace and Files3 : Sequences of Numbers 4 : Vectors5 : Missing Values 6 : Subsetting Vectors7 : Matrices and Data Frames 8 : Logic9 : Functions 10 : lapply and sapply11 : vapply and tapply 12 : Looking at Data13 : Simulation 14 : Dates and Times15 : Base Graphics
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
Quelques commandes hors SWIRL
I On va voir quelques compléments de bases, hors SWIRLI Suivre les commandes sur AE2016.R
I Fonctions math communes : log, exp, sign, sqrt, abs, min, max
I log(exp(sin(pi/4)^2)*exp(cos(pi/4)^2))I Vecteurs spéciaux
I ones <- rep(1, 10)I even <- seq(from = 2, to = 20, by =2)I trend <- 1981 :2005
I diag(4) matrice identité de taille 4
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
Opérations sur matricesI A<-matrix(1 :6, nrow = 2)
I A regardez à quoi ça ressemble et comment R donne laposition des éléments
I t(A) = transposée de A ( pas A’ )I dim(A) = dimensions de A (L puis C)I nrow(A) ; ncol(A) nbr L ; CI A[i,j] extrait l’élément (i,j)I A[,j] extrait C j (toutes les L) en un vecteur
I A[i,] même chose pour L iI A1<-A[1 :2, c(1, 3)] A1 a 2 L qui contiennent les 1er et 3eme
éléments de chaque L de AI autre façon A[,-2]
I det(A1) déterminant
Programmation dans R 2016-17
Ch1. Bases de R
SWIRL
Opérations sur matricesI eigen(A1) eigenvaluesI chol(A1) décomposition de CholeskyI solve(A1) inverseI A %*% B produit matriciel
I A*A produit élément-par-élémentI kronecker(A, B) produit de Kronecker ⌦
I crossprod(A, B) est un calcul efficient de A’BI diag(A1) extrait la diag
I cbind(1, A1) “combine” une C de 1 et A1 . . .. ! . .
I rbind(A1, diag(4, 2)) “empile” A1 et une matrice diag de taille
2 avec des 4 sur la diag
. .
. .". .. .
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Outline
Ch1. Bases de RSWIRLGestion de donnéesR graphiqueFonctionalités d’édition de document
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Dataframe
I “Frame” = cadreI Dans R, un “Dataframe” est une matrice de donnéesI qui contient de plus des méta-informations
I p.e. le type de variable ou le nom des catégoriesI et peut avoir des cols de natures différentes
I Un dataframe est un ensemble de vecteursI de même longueur, mais posisblement de nature 6=I mis l’un à côté de l’autre horizontalementI Donc un rectangle, dans lequel
I Les colonnes sont les variablesI Les lignes sont les observations
I Rem. Une “array” est, dans R, un objet plus général car ellepeut avoir + de 2 dimensions
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Création
I Un Dataframe peut être créé de pls façonsI clavier, lecture, importation
I Création clavier (cfr Swirl programming lesson 7)I mydata <- data.frame(one = 1 :10, two = 11 :20, three =
21 :30) alternative 1I mydata <- as.data.frame(matrix(1 :30, ncol=3)) and
names(mydata) <- c(“one”, “two”, “three”) alternative 2I Clairement, R n’est pas le meilleur logiciel pour entrer des
données
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
attach
I Lorsqu’un dataframe est “attached”I en utilisant la commande attach,I alors les noms des variables dans le dataframe peuvent être
utilisés dans des commandesI Par exemple
I mean(two) produit un message d’erreurI attach(mydata) et puis mean(two) produit la moyenne de la
variable “two”I detach(mydata) permet de détacher le Dataframe
I p.e. pour éviter des confusions sur les noms de variablesI Pour attacher pour une seule opération
I with(mydata, mean(two))
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Sélection de sous-ensemble (subset)
I On accède à un sous-ensemble du Dataframe par [ ou $I $ extrait une seule varaible
I Pour travailler avec un sous-ensembleI on utilise [ or subset
I mydata.sub<-subset(mydata, two<=16, select = -two)I prend toutes les observations des variables one & three
I pour lesquelles les observations correspondantes de la two sont 16
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Exporter (write) un dataframe
I write.table(mydata, file=“mydata.txt”, col.names=TRUE)I crée un fichier texte mydata.txt dans le répertoire de travailI Les méta-informations ne passent pas
I Le format du fichier texte est
“one” “two” “three”“1” 1 11 21“2” 2 12 22...
I Rem. on dirait que les intitulés de colonnes sont décalées à GI Selon le logiciel qui servira à ouvrir, il faut parfois insérer un
espace
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Importer (read) un dataframe
I À parti d’un fichier texte (.txt ou .csv)I newdata <- read.table(“mydata.txt”, header=TRUE)
I lit un fichier texte dont la première ligne porte le nom desvariables
I qui est placé dans un “data.frame” appelé newdataI Si les titres de col. ne sont pas décalées à G
I comme si ça venait d’un tableurI R comprendra la col. avec les numéros de ligne comme une
autre variableI read.table accepte des options
I sur le séparateur de col. (, ;)I sur le séparateur décimal (. ,)I peut lire du .csvI voir ?read.table
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Importer un dataframe
I scan est utilisé pour des données qui ne sont pas en matriceI ?scan pour les détails
I Pour importer d’un autre systèmeI D’abord voir s’il est possible d’exporter de ce système en txt
ou csvI perte des méta-données
I GoogleI Voir www.statmethods.net/input/importingdata.html
I pour quelques formats
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Un peu de pratique : “Journals”
I Exemple, les données JOURNALS :I souscriptions à des journaux d’économie pour quelques
bibliothèques aux USA en 2000I 180 observations (les journals) sur 10 variables, entre autres :
I subs (# of library subscriptions),I price (subscription price),I citations (total number of cites per journal)
I On étudie la relation entre le nbr de souscriptions et le prix parcitation
I La citation reflétant l’importance du journalI Donc l’intérêt pour une bibliothèque
Programmation dans R 2016-17
Ch1. Bases de R
Gestion de données
Un peu de pratique : “Journals”I data("Journals", package = "AER")
I Journals$citeprice <- Journals$price/Journals$citationsI “ / “ est une division élément par élément pour des vecteurs
I attach(Journals)I “attacher” pour utiliser dans les formules
I Calculez l’estimateur MCO de la régression de log(subs) surlog(price/citations)
I et ses t-statsI au moyen des formules de mtx
I Difficulté car �̂2 est perçu comme une matrice 1⇥ 1 non
conformable avec⇣X
0X⌘�1
I Pls solutions p.e. ⌦ produit KroneckerI Résultats : 85 et -15 environ ?
I detach(Journals)I “détacher” pour éviter des confusions de nom
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Outline
Ch1. Bases de RSWIRLGestion de donnéesR graphiqueFonctionalités d’édition de document
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
PlotI D’abord SWIRL
I course R-programming, lesson 15 Base graphicsI Quelques éléments graphiques supplémentaires
I Sur base du package plot
I Packages lattice ggplot2 plus sophistiquésI http ://varianceexplai-
ned.org/RData/code/code_lesson2/#segment1I R est considéré comme ayant de très bons graphiques
I Mais pas très aisésI La commande plot ( )
I plot( ) est la commande par défaut pour représentergraphiquement beaucoup d’objet :
I dataframes, séries temp, modèles linéaires ajustésI C’est aussi une vielle commande, assez rustique
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
“Scatterplots” - graphiques de dispersion ou XY
I Probablement les + communs en statI attach(Journals)
I plot(log(subs), log(citeprice))I rug(log(subs))
I rug(log(citeprice), side=2)
I detach(Journals)I plot(log(subs)~log(citeprice), data=Journals)
I alternative pour éviter d’avoir à attacher le dataframe
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
R Paramètres Graphiques
I Les résultats d’un plot peuvent être modifiés de nombreusesfaçons
I P.e. argument type contrôle si le plot génère des points (type= p), lignes (type = l), les 2 (type = b), des pas (type = s) oud’autres
I Pls douzaines de paramètres modifiables sont disponiblesI Voir ?parI Soit en les fixant avec par( ) après une commande plotI Soit en les fournissant à dans la fonction plot( ) p.e.
plot(log(subs)~log(citeprice), data=Journals, pch=20,col="blue", ylim=c(0,8), xlim=c(-7,4), main="LibrarySubscriptions")
I Prochaine diapo : liste de par
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
R Paramètres GraphiquesArgument Description
axes should axes be drawn ?bg background colorcex size of a point or symbolcol colorlas orientation of axis label
lty, lwd line type and line widthmain, subs main title and subtitle
mar size of marginsmfcol, mfrow array defining layout for several graphs on one plot
pch plotting symboltype types
xlab, ylab axis labelsxlim, ylim axis ranges
xlog, ylog, log logarithmic scales
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
R Paramètres Graphiques
I Ajouter des couches à un plot : lines( ), points( ), text( ),legend( )
I Ajouter 1 droite abline(a, b)I a est intercept, b pente
I 2 plots l’un sur l’autreI x <- rnorm(50)I x2 <- rnorm(50, -1)I plot(ecdf(x), xlim = range(c(x, x2)))
I ecdf empirical cumulative density functionI plot(ecdf(x2), add = TRUE, lty = "dashed")
I Barplots, pie charts, boxplots, QQ plots & histogramsI barplot( ), pie( ), boxplot( ), qqplot( ), hist( )I On y reviendra
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Exporter des graphiquesI Pour utiliser les graphiques R dans d’autres logiciels
I il faut les exporterI “Export” envoie le graphe sur un “device”
I Au fond : une extension de fichier pdf ou jpgI Tous les devices fonctionnent pareil dans R
I Voir ?devices
1. le device est ouvert par une fonction qui porte son nom, p.e.pdf( )
2. Ensuite, le plot est exécuté3. Finalement, le device est fermé dev.off( )
I ExempleI pdf("myfile.pdf", height=5, width=6)I plot(1 :20, pch=1 :20, col=1 :20, cex=2)I dev.off()
I Cherchez myfile.pdf sur votre machine
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Formules math dans un Plot
I R peut passer une formule dans un plot via LATEXI Voir ?plotmath
I ExempleI plot de la densité normal std avec sa définition mathI curve(dnorm, from=-5, to=5, col="slategray", lwd=3,
main="Density of the Standard Normal Distribution")I text(-5, 0.3, expression(f(x) == frac(1, sigma ~~ sqrt(2*pi))
~~ e^{-frac((x - mu)^2, 2*sigma^2)}), adj=0)
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Histogrammes & boxplots
I data("CPS1985") jeu de données sur le salaire & sesdéterminants
I summary(CPS1985) révèle que certaines variables sontcatégoriques
I Catégoriques : appelées factors par R, on y reviendraI levels(CPS1985$occupation)[c(2,6)] <- c("techn", "mgmt")
I abrège 2 noms d’occupationI attach(CPS1985) permet d’accéder aux variables de CPS1985
par leurs noms
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Une variable numérique : histogramme & densité
I hist(wage, freq=FALSE)I option freq=FALSE : fréquences relatives, sinon absolues
(comptage)I option binwidth=x permet de choisir la longueur des bases
I hist(log(wage), freq=FALSE)I lines(density(log(wage)), col=4)
I La function density calcule un histogramme lissé (voir coursnp)
I RemarqueI La distribution du log est moins asymétrique que celle des
données brutesI Les données en log sont svt + proches d’une normale
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Une catégorique
I La moyenne & la variance ne signifient rienI mais bien les fréquences
I summary(occupation) : fréquences absolues (comptes)I tab <- table(occupation) : stocke ces fréq. ds une tableI prop.table(tab) calcule les proportions (fréq. relatives)I Barplots & pie visualisent souvent bien les données cat.
I barplot(tab)I pie(tab)
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
2 catégoriques
I Habituellement présentées ds un Table de ContingenceI xtabs( ) avec une interface formule :
I p.e. xtabs(~ gender + occupation, data = CPS1985) data=optionel
I table(gender, occupation) mêmes résultatsI Plot de ça est un “spine plot”
I plot(gender ~ occupation)I plot(gender, occupation) regardez les différences
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
2 numériques
I Coefficient de corrélation r est typiqueI Variables positives & asymétriques : Spearman’s ⇢
I corrélation des ranks, au lieu des valeurs est souvent préférécar r n’est pas robuste à l’asymétrie
I cor(log(wage), education)I cor(log(wage), education, method="spearman")
I Résultats semblables pour ces donnéesI plot(log(wage)~education)
I Le scatterplot montre peu de corrélation
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
1 numérique & 1 catégorique
I Souvent, on calcule des moments conditionnelsI p.e. salaire moyen selon le sexeI tapply(log(wage), gender, mean)
I “Appliquer” mean sur les 2 variables gender & log(wage)I Mean peut être remplacé par n’importe quelle fonction valide
I Les Box plots & QQ (quantile-quantile) plots sont souventutilisés
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
1 numérique & 1 catégorique : Box plot
I Un box plot est une représentation grossière d’une distributionempirique
I Le box est limité par des “charnières” (1º & 3º quartiles) etmontre la médiane
I Hors du box, 2 lignes indiquent les obs. les + petites & +grandes
I à moins de 1.5 ⇥ taille du box à partir de la charnière la +proche
I Toute obs. au-delà est représentées séparément par un pointI boxplot(log(wage)~gender)
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
1 numérique & 1 catégorique : Box plotI Un QQ plot apareille les quantiles de 2 distributions
I Se rappeler que les quantiles sont des quantitésI p.e. le 1º quartile du salaire féminin est le salaire t.q 25% des
femmes gagnent moins & 75% +I Si les 2 distributions sont identiques
I le QQ plot est la diagonaleI Sinon, si p.e. les hommes tendent à gagner + que les femmes,
alorsI avec les hommes sur l’axe des x, le QQ plot sera sous la diag.I Évoque le graphe du coefficient de Gini
I mwage <- subset(CPS1985, gender == "male")$wageI fwage <- subset(CPS1985, gender == "female")$wageI qqplot(mwage, fwage)I abline(0,1)
I detach(CPS1985) pour refermer CPS1985
Programmation dans R 2016-17
Ch1. Bases de R
R graphique
Devoir 1I PARADE
I Supplément du dimanche de 500 quotidiens USI Tous les ans, un échantillon de 120-150 citoyens sélectionnés
“aléatoirement”I variables : profession, hometown, state & yearly earnings.
I dataframe PARADE2005 contient la version 2005 versionI avec une dichotomique “celebrity status” fortement
sur-échantillonnéI Devoir 1
I Earning moyen en Californie, discuterI Nombre d’échantillonnés en Idaho
I Qu’en dire sur l’échantillon ?I Earning
I moyen & médian des célébrités, commenterI Fréquence & densitéI Boxplot selon statut célébritéI Répéter avec log
I Trouver un autre jeu de données sur lequel vous adapterezl’analyse exploratoire ci-dessus
Programmation dans R 2016-17
Ch1. Bases de R
Fonctionalités d’édition de document
Outline
Ch1. Bases de RSWIRLGestion de donnéesR graphiqueFonctionalités d’édition de document
Programmation dans R 2016-17
Ch1. Bases de R
Fonctionalités d’édition de document
SWeave – Knitr – Markdown
I Quelques packages servent à connecter R avec des éditeursI “literate programming”
1. On écrit le texte y compris formules en latex & commandes R(graphiques, régressions...)
2. Si les données changent, ou bien le modèle économétrique,tout est ajusté automatiquement
3. LATEXpermet de choisir un format approprié : rapport, article,présentation & d’avoir des math bien écrites
ISWeave permet d’envoyer tout le script dans LATEX
Iknitr fait la même chose, mais combine d’autres packages etrésoud quelques problèmes de SWeave
IMarkdown convertit du texte simple en html (p.e. SPIP)
Programmation dans R 2016-17
Ch1. Bases de R
Fonctionalités d’édition de document
Markdown
I Markdown dans R-Studio pour convertir un document texteavec des instructions R-Studio en divers formats
I HTML, PDF, MS Word, LATEX, diapo...I Auto-apprentissage
I http ://rmarkdown.rstudio.com/lesson-1.htmlI selon votre processeur
I Je ne poursuis pasI “Compile notebook” (bouton ds éditeur)
I permet de tester en html, pdf & wordI http ://rmarkdown.rstudio.com/r_notebook_format.html