site sans réclame GNU/LinuxDebianÉcrireS'abonner

R, l'application universelle de statistiques

L

E logiciel R est un logiciel libre d'analyse statistique de données, et consacré à la sortie, notamment LATEX. Cette page est écrite pour une prise en main rapide pour la personne qui a un besoin urgent.

Pour utiliser R comme outil de conversion, voir annexe.

1. Prise en main

Pour disposer de R sur un système UNIX, il faut installer le paquet r-base, qui installera les paquets complémentaires.

1.1 En mode console

R dans une console lance l'application en mode interactif. Apparaît l'invite >, la ligne suivant est la réponse:

> 2+2
[1] 4
> sum(3,2,4)
[1] 9
> max(3,5,4)
[1] 5

Rscript essai.r dans une console lance le script essai.r. Il faut évidemment que les éventuels fichiers de données appelés par le script et que toutes les librairies nécessaires soient présentes sur le système.

Une façon d'utiliser R est d'éditer un fichier de commandes (un script) dans un éditeur de fichier (notepad++, crimson, gedit, kedit, kwrite, pluma...) et le lancer dans une console. Il faut veiller à ce que le script soit lancé à son adresse réelle: en UNIX, si le script essai.r est sauvegardé à l'adresse /home/toto/R/script/, il sera lancé par:

Rscript /home/toto/R/script/essai.r

1.2 Interface graphique

Plusieurs inerfaces graphiques existent pour R, comme RGui sur Windows, ou Rcmdr. Il est possible que le paquet sous GNU/Linux soit r-cran-rcmdr. Il est possible que l'installation place l'application dans le menu graphique du bureau.

Pour la première fois, il est peut-être nécessaire de lancer R dans une console en mode super-utilisateur:

suEn mode superutilisateur:
su + mot de passe
R

Une fois dans R, frapper la commande suivante et [Enter]:

> library(Rcmdr)

Les librairies que Rcmdr semble nécessiter seront demandées. Soit vous en disposez dans un répertoire particulier, auquel cas vous pouvez fournir le nom du répertoire dans une boîte de dialogue, soit elles seront téléchargées et installée avec les droit de superutilisateur.

Rcmdr présente deux fenêtres: celle du haut permet la saisie de commande ou de calcul, le bouton Soumettre interprète la partie surlignée à la souris et en donne la solution dans la fenêtre du bas.

Il y a encore rstudio (entre 65 et 117Mo, Affero GPL).

2. Valeurs, variables et opérateurs

## permet un commentaire à droite du double # (ne sera pas pris en compte dans la lecture du script).
; sépare deux opérations ou commandes sur une même ligne.

2.1 Opérateurs basiques

x <- 5 affecte la valeur numérique 5 à la variable x
ch <- "Eggs" affecte la chaîne Eggs à la variable ch

+, -, *, / s'organisent entre eux comme appris à l'école. Pour changer l'ordre de préséance entre les opérateurs, il faut utiliser les parenthèses: 3*5-7/4 n'égale pas 3*(5-7)/4

paste("n","a") donne la chaîne na (contrairement à beaucoup de langage qui utillisent +)

letters[n] donne la nième minuscule de l'alphabet
LETTERS[n] donne la nième majuscule de l'alphabet

^ est l'opérateur exposant: 7^3 donne 343

x %/% y division entière de x par y: 16 %/% 3 donne 1
x %% y opération modulo, reste de la division entière de x par y: 16 %% 5 égale 1

min(x,y,z) retourne la valeur minimale entre deux ou plusieurs valeurs
max(x,y,z) retourne la valeur maximale entre deux et plusieurs valeurs

abs(n) valeur absolue (abrogation du signe)

2.2 Booléens et opérateurs logiques

TRUE et FALSE sont les valeurs «booléennes» VRAI et FAUX.

Ces valeurs sont générées par les opérateurs suivants:

x == y retourne TRUE si x et y sont égaux ; FALSE sinon
x != y retourne TRUE si x et y sont différents ; FALSE sinon
x < y retourne TRUE si x est strictement inférieur à y ; FALSE sinon
x > y retourne TRUE si x est strictement supérieur à y ; FALSE sinon
x <= y retourne TRUE si x est inférieur ou égal à y ; FALSE sinon
x >= y retourne TRUE si x est supérieur ou égal à y ; FALSE sinon

x & y ou x && y: «ET logique»: retourne TRUE si x et y sont vrai ; FALSE sinon
x | y ou x || y: «OU logique»: retourne TRUE si x ou y sont vrai ; FALSE sinon
xor(x, y): «OU exclusif» un seul TRUE donne TRUE ; deux TRUE donnent FALSE
! x inversion logique

Ces deux classes d'opérateurs permettent des compositions, parfois avec des parenthèses:

(3 > 2) | (2 == 3)

2.3 Types de données

Numériques: integer (entiers négatif, nul ou positif), double (non entiers) ou numeric (l'un ou l'autre)
Chaînes: character, comme "cinq", "", "43"
Booléenne: logical, comme TRUE, FALSE et NA
Facteur: factor???

class() permet de connaître le type d'une variable.

Attention! Dans le cas d'un vecteur contenant au moins une chaîne de caractères, tout nombre est considéré comme une chaîne

> a <- c(1,2,3,4,5)
> class(a)
[1] "integer"
> a[5] <- "cinq"
> class(a)
[1] "caracter"
> a[1]/3
Error in a[1]/3 : argument non numérique pour un opérateur binaire

2.4 Vecteurs

liste <- c(5,6,4,8,2) affecte le vecteur (5,6,4,8,2) à la variable liste ; c() pour «combine»

is.vector(var) retourne TRUE si var est un vecteur, FALSE sinon.

Il est possible de générer une séquence de nombre de x à y inclus avec l'expression x:y:

> s <- 13:19
> s
[1]  13 14 15 16 17 18 19

Une opération sur un vecteur s'applique sur chacun de ses éléments:

> carres <- c(1, 4, 9, 16)
> carres/6
[1] 0.1666667 0.6666667 1.5000000 2.6666667

(le [1] indique que la valeur suivante est la première d'une série)

Il est possible d'additionner, multiplier... les vecteurs entre eux:

> n <- c(1, 2, 3, 4)
> p <- c(4, 3, 2, 1)
> n^2*p
[1]  4 12 18 16

Mais dans ce cas, les vecteurs doivent être de même longueur.

Il est possible d'accéder à une valeur particulière d'un vecteur:

> carres <- c(1, 4, 9, 16, 25, 36, 49)
> carres[7]
[1]  49

Attention! le premier élément d'un vecteur est désigné par l'indice [1], contrairement à la grande majorité des langages informatiques, où un vecteur commence à l'indice [0].

NA («not available») est une valeur qui rend le résultat de tout calcul NA.

min(v1) donne la valeur minimale d'un vecteur
min(v1,v2) donne la valeur minimale parmi deux (ou plusieurs) vecteurs

max(v1) donne la valeur maximale d'un vecteur
max(v1,v2) donne la valeur maximale parmi deux (ou plusieurs) vecteurs

seq(debut, fin, by=pas) fabrique un vecteur des nombres entre debut et fin avec une distance de pas:

> seq(1, 2.99, by=0.2)
[1] 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8

rep(qqch,n) répète n fois une valeur ou un vecteur:

> rep(2:4,3)
[1] 2 3 4 2 3 4 2 3 4

Il est possible de répéter chaque élément un à un:

> rep(2:4,each=3)
[1] 2 2 2 3 3 3 4 4 4

sort(vect) trie les valeurs du vecteur vect:

> sort(c(5,0,6,4,8,3,2,9,1,7))
 [1] 0 1 2 3 4 5 6 7 8 9

sample(vect,n) retourne un vecteur de n valeurs au hasard choisies dans le vecteur vect (tirage sans remise: n ne peut dépasser la longueur du vecteur):

> sample(0:6,3)
 [1] 5 1 2

sample(vect,n,replace=TRUE) permet un tirage avec remise et donc un nombre plus grand que la longueur du vecteur (rep=T est un équivalent):

> sample(c("P","F"),5,rep=T)
[1] "F" "P" "P" "F" "P"

Note: les deux réponses ci-dessus sont susceptibles d'être différentes à chaque «tirage».

2.4 Matrices

Les matrices sont des tableaux à deux dimensions. Elle sont importantes dans les distributions bivariées, ou les enquêtes individus/variables.

matrix() fabrique une matrice (la première valeur donne la valeur de remplissage, la seconde le nombre de lignes et la troisièmme le nombre de colonnes. Il est possible de remplir la matrice, par une variable (ou un vecteur défini en première position)

> x=c(1,0,91,8,47,4)
> m <- matrix(x,2,3)
> m
     [,1] [,2] [,3]
[1,]    1   91   47
[2,]    0    8    4

L'accès à une donnée se fait au moyen de ses coordonnées:

> m[1, 2]
[1] 91

Pour une matrice ne contenant qu'une seule valeur à chaque endroit, il suffit de l'indiquer en première position:

> m <- matrix(0,2,3)
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0

Pour initialiser une matrice de chaînes:

> matrix("", 2, 3)
     [,1] [,2] [,3]
[1,]   ""   ""   ""
[2,]   ""   ""   ""

Puisque 0:5 défini un vecteur des nombres de 0 à 5 (inclus), il est possible de définir une matrice de premiers nombres impairs:

> matrix(0:5*2+1, 2, 3)
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    3    7   11

Comme les vecteurs, deux matrices de mêmes dimension peuvent s'additionner et se soustraire. Elles peuvent également se multiplier et se diviser dans certains cas. En général, vous le savez quand vous en avez besoin.

det() retourne le déterminant d'une matrice, nécessairement carrée.

3. Fonctions

c() fabrique une variable vecteur

min() retourne la valeur minimale d'un vecteur numérique

max() retourne la valeur maximale d'un vecteur numérique

length() retourne" le nombre d'éléments d'un vecteur

read("") ouvre un fichier de données (tableau Excel, SPSS, STAT, SAS...). La chaîne est le chemin et le fichier ("D:\chemin\fichier" sous Windows ou "/chemin/fichier" sous Unix.
fichier <- read.csv2("fichier")

sum() retourne la somme des éléments d'un vecteur

mean() retourne la moyenne des éléments d'un vecteur (leur somme divisée par leur nombre)
mean(x, na.rm=TRUE) permet le calcul en écartant les NA («NA remove»)

var() retourne la variance de la distribution représentée par un vecteur numérique

La variance est une mesure de dispersion d'une distribution ; il s'agit de la somme des différences au carré de chaque valeur à la moyenne, divisée par le nombre d'observations.

sd() retourne l'écart-type d'une distribution représentée par un vecteur numérique

L'écart-type équivaut à la racine carrée de la variance.

Fonctions mathématiques

floor() arrondissement par défaut
ceiling() arrondissement par excès

round(reel) arrondissement au nombre entier le plus proche.
round(reel, n) arrondissement à n décimales

Note: un .5 final est tantôt arrondit par défaut, tantôt par excès, vers le nombre entier pair:

> round(2.5)
2
> round(3.5)
4

exp(n) retourne la valeur de e (environ 2.718282) exposant n
log(n) retourne le logaritme népérien du nombre n

names()
str() scan() permet l'introduction de valeurs

cos(n) retourne la valeur du cosinus d'un angle exprimé en radian
sin(n) retourne la valeur du sinus d'un angle exprimé en radian
tan(n) retourne la valeur de la tangente d'un angle exprimé en radian


Outil de conversion

Si une base de données a été fournie sous format .dta, il vous faudra passer par l'application libre R, en installant le paquet r-base. L'application se lance avec R (majuscule) dans une console. Le prompt > apparaît.

help.start() lance la documentation dans le navigateur de l'environnement graphique. Sur un système Linux, la documentation html se trouve à l'adresse (ou similaire): /usr/share/R/doc/html/ ou /usr/share/R/doc/manual/.

Pour importer une base de données .dta de STATA, il faut utiliser la bibliothèque foreign, normalement installée avec r-base (dans le système Linux, sous le nom de paquetage r-cran-foreign). Les trois lignes qui suivent importe la librairie, assigne les données au format dta à une variable, puis sauvegarde la variable en fichier csv («comma separated values»), sauf que les valeurs seront séparées non par une virgule, mais par une tabulation.

> library(foreign)
> db=read.dta("votre_base.dta")
> write.table(db, file="votre_base.csv", row.names=TRUE, col.names=TRUE, sep="\t")

En GNU/Linux, le chemin est ~/, c'est-à-dire /home/toto pour l'utilisateur toto. Il faudra peut-être indiquer le chemin complet du fichier à importer s'il ne se trouve pas en /home/toto.

Il sera possible d'importer le fichier .csv dans LibreOffice, XLS, SPSS ou pspp.