R est un logiciel de statistiques interactif et interprété. Il est dédié à l’analyse statistique et à la visualisation de données, permettant entre autres:
R est distribué librement sous les termes de la GNU General Public Licence; son développement et sa distribution sont assurés par plusieurs statisticiens rassemblés dans le R Development Core Team.
Le but de ce cours et de vous familiariser à cet outil très apprécié des statisticiens. Les fonctionalités de R seront présentées le long du semestre en parallèle aux méthodes abordées en cours, afin de vous permettre de les appliquer directement sur des jeux de données.
Tout d’abord, pour télécharger le logiciel R, allez sur le site: https://cran.rstudio.com. Il est aussi conseillé d’installer RStudio, un environnement de dévelopement intégré (IDE) pour R, comprenant une console, un éditeur de texte et beaucoup d’outils facilitant la programmation.
Voici quelques commandes de base en R:
x qui vaut \(1\).x <- 1
x
## [1] 1
+, -, *, /,^ pour combiner ces variables, ainsi que d’autres fonctions mathématiques prédéfinies sur R (comme la racine carrée sqrt, le sinus sin,…)y <- 2
#additionner x et y
x+y
## [1] 3
# créer une variable booléenne qui compare x et y
x>y
## [1] FALSE
# calcul:
sqrt(y*40+x)
## [1] 9
Pour comprendre ce que fait une fonction (disons sqrt) sur R, le plus simple est de taper ?sqrtdans la console et la page correspondante s’affiche dans l’aide. On peut aussi directement chercher des fonctions dans l’aide en tapant des mots clés qui y sont liés..
Les objets définis sur R ne sont pas seulement des variables scalaires; Ils peuvent être des vecteurs, des matrices, des tables de données, des chaines de charactères, des fonctions etc…
Pour créer un vecteur par exemple:
z <- c(43,71,25)
z
## [1] 43 71 25
# Pour afficher le premier élément du vecteur
z[1]
## [1] 43
# Pour afficher la taille du vecteur
length(z)
## [1] 3
# pour sommer tous les éléments du vecteur
sum(z)
## [1] 139
#pour ordonner les éléments du vecteur dans l'order croissant
#(taper ?sort pour voir comment obtenir l'order décroissant!)
sort(z)
## [1] 25 43 71
a <- c(" probabilités","statistiques")
a
## [1] " probabilités" "statistiques"
# on peut concatener le vecteur en une seule chaine en reliant les éléments avec un ' et '
paste(a,collapse = ' et ')
## [1] " probabilités et statistiques"
R, c’est la table de données (data.frame). Voici par exemple, une base de données disponible sur R. Elle est formée de deux colonnes: la première contient la vitesse de la voiture (speed) et la deuxième la distance de freinage correspondante (dist). La table contient 50 lignes (i.e. les deux variables ont été observées sur 50 voitures).data=cars
data
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
## 7 10 18
## 8 10 26
## 9 10 34
## 10 11 17
## 11 11 28
## 12 12 14
## 13 12 20
## 14 12 24
## 15 12 28
## 16 13 26
## 17 13 34
## 18 13 34
## 19 13 46
## 20 14 26
## 21 14 36
## 22 14 60
## 23 14 80
## 24 15 20
## 25 15 26
## 26 15 54
## 27 16 32
## 28 16 40
## 29 17 32
## 30 17 40
## 31 17 50
## 32 18 42
## 33 18 56
## 34 18 76
## 35 18 84
## 36 19 36
## 37 19 46
## 38 19 68
## 39 20 32
## 40 20 48
## 41 20 52
## 42 20 56
## 43 20 64
## 44 22 66
## 45 23 54
## 46 24 70
## 47 24 92
## 48 24 93
## 49 24 120
## 50 25 85
# pour accéder à la première ligne
data[1,]
## speed dist
## 1 4 2
#pour accéder à la première colonne
data[,1]
## [1] 4 4 7 7 8 9 10 10 10 11 11 12 12 12 12 13 13 13 13 14 14 14 14 15 15
## [26] 15 16 16 17 17 17 18 18 18 18 19 19 19 20 20 20 20 20 22 23 24 24 24 24 25
#pour accéder à la distance de freinage de la 13ème voiture
data[13,2]
## [1] 20
plot(data[,1],data[,2],pch=20,type='p',main='Distance de freinage versus vitesse de la voiture*',
xlab='vitesse (mph)',ylab='distance (ft)',sub='(*données récoltées en 1920)')
lm, on estime les paramètres de modèle et l’incertitude qui leur est associée.LM=lm(dist~speed,data=data)
summary(LM)
##
## Call:
## lm(formula = dist ~ speed, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.069 -9.525 -2.272 9.215 43.201
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.5791 6.7584 -2.601 0.0123 *
## speed 3.9324 0.4155 9.464 1.49e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 48 degrees of freedom
## Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
## F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
plot(data[,1],data[,2],pch=20,type='p',main='Distance de freinage versus vitesse de la voiture*',
xlab='vitesse (mph)',ylab='distance (ft)',sub='(*données récoltées en 1920)')
# Afficher la droite de régression linéaire de la distance du freinage sur la vitesse (à voir plus tard dans le cours)
abline(LM,col=4,lwd=2)
Pour en savoir plus sur R, il y a beaucoup de tutoriels disponibles sur internet. Par exemple,