Vous êtes sur la page 1sur 27

R-Presentation

D. B.

18/10/2021

Introduction à R
author: Driss Bari date: 18 octobre 2021 autosize: true

Description sommaire de R
• R est un langage dédié aux statistiques développé à partir des années ’90 à l’University of Auckland,
Nouvelle-Zélande.
• Son implémentation principale est le logiciel open source (gratuit et modifiable) R (www.cran.r-
project.org).
• R est normalement utilisé à partir de l’interface graphique et de développement RStudio
(www.rstudio.com).
• on peut exécuter un script, c’est à dire une suite de commandes qui se trouvent dans un fichier dont
l’extension est .R.

Description sommaire de R
• R est un environnement intégré de manipulation de données, de calcul et de préparation de graphiques
• R un langage de programmation complet et autonome.
• le R est interprété, c’est-à-dire qu’il requiert un autre programme - l’interprète - pour que ses commandes
soient exécutées. Par opposition, les programmes de langages compilés, comme le C ou le C++, sont
d’abord convertis en code machine par le compilateur puis directement exécutés par l’ordinateur.
• Le R est un langage particulièrement puissant pour les applications mathématiques et statistiques (et
donc actuarielles) puisque précisément développé dans ce but.

Caractéristiques intéressantes de R
• R est à la fois un logiciel (au départ de statistique, de data science aujourd’hui, c’est-à-dire couvrant
beaucoup plus de domaines), et un langage de programmation orienté objet ( en gros ça veut dire que
la programmation est simplifiée).
• langage basé sur la notion de vecteur, ce qui simplifie les calculs mathé- matiques et réduit considérable-
ment le recours aux structures itératives;
• pas de typage ni de déclaration obligatoire des variables;
• programmes courts, en général quelques lignes de code seulement;
• temps de développement très court.

1
Caractéristiques intéressantes de R
• La communauté des utilisateurs R est très active dans le monde scientifique (statistiques, science des
données, bioinformatique, sciences sociales,. . . ) et de plus en plus dans les entreprises.
• la richesse de packages développés par les utilisateurs et développeurs qu’on peut installer pour augmenter
ses capacités dans des domaines très variés des statistiques.
• R dispose d’une documentation très complète. On peut accéder à l’aide en tapant ? suivi par la fonction
sur la quelle on souhaite se renseigner
• On peut aussi trouver énormément d’informations sur le web: en cherchant sur Google un problème lié
à une tâche R on trouve presque toujours une réponse

Packages
Pour installer un package :
install.packages("dplyr")
# on telecharge et installe le package dplyr utilisé dans la manipulationd des données

Une fois un package installé, il faudra le charger en mémoire à chaque fois une nouvelle session est ouverte :
library(dplyr) #sans guillemets!
#require(dplyr) #fonction équivalente

Références
Une excellente référence en français est le livre de Vincent Goulet Introduction à la programmation en R,
qu’on peut télécharger gratuitement sur le site du CRAN :
https://cran.r-project.org/doc/contrib/Goulet_introduction_programmation_R.pdf
Une référence complète est l’introduction officielle sur le site du CRAN :
https://cran.r-project.org/doc/manuals/R-intro.html

Affectation
a est une variable, en interne c’est un vecteur de taille 1, et il peut contenir des données numériques → le
typage est donc automatique. Dans la terminologie R, a est un « objet ».
a <- 10.2
b = 20.3
10.5 -> c
print(c(a,b,c))

[1] 10.2 20.3 10.5

Lister le contenu de la mémoire


Affiche tous les objets situés dans la mémoire de l’environnement R.

2
ls()

[1] "a" "b" "c"


Supprimer un objet
rm(a)
ls()

[1] "b" "c"


où a représente le nom de l’objet à supprimer.

Supprimer tous les objets en mémoire


On liste le nom de tous les objets en mémoire et on les efface.
rm(list=ls())

Accès à l’aide d’une fonction


help(mean)

Recherche par mot dans le fichier d’aide


help.search("lm")

Recherche la chaîne de caractères « lm » dans le fichier d’aide.

Objets dans R : Modes


Dans R, tout est un objet. Le mode spécifie ce qu’un objet peut contenir. Les modes principaux sont : -
numeric : nombres réels - character : chaînes de caractères - logical : valeurs logiques vrai/faux - list : liste,
collection d’objets - function : fonction
Les objets de mode numeric, character et logical, sont des objets simples qui peuvent contenir des données
d’un seul type. Au contraire, les objets de mode list sont des objets spéciaux qui peuvent contenir d’autres
objets.

Conventions pour les noms d’objets


• Les caractères permis pour les noms d’objets sont les lettres minuscules a–z et majuscules A–Z, les
chiffres 0–9, le point « . » et le caractère de sou- lignement « _ ».
• Les noms d’objets ne peuvent commencer par un chiffre. S’ils commencent par un point, le second
caractère ne peut être un chiffre.
• Le R est sensible à la casse, ce qui signifie que foo, Foo et FOO sont trois ob- jets distincts. Un moyen
simple d’éviter des erreurs liées à la casse consiste à n’employer que des lettres minuscules.
• Certains noms sont utilisés par le système R, aussi vaut-il mieux éviter de les utiliser. En particulier,
éviter d’utiliser
t, diff, length, mean, pi, range, var.

3
Conventions pour les noms d’objets
• Certains mots sont réservés et il est interdit de les utiliser comme nom d’objet.
break, else, for, function, if, in, next, repeat, return, while, TRUE, FALSE, Inf, NA, NaN, NULL,

Conventions pour les noms d’objets


Quelques exemples de noms valides et invalides.

foo <- 5 # valide


foo.123 <- 5 # valide
foo_123 <- 5 # valide
123foo <- 5 # invalide; commence par un chiffre
.foo <- 5 # valide
.123foo <- 5 # invalide; point suivi d'un chiffre

Objets dans R : Modes


On peut accéder au mode d’un objet avec la fonction mode() :
age=c(33,28, 33) # La fonction de concatenation c() permet de créer des vecteurs
mode(age)

[1] "numeric"
noms <- c('Daniel', 'Jehanne', 'Romain')
mode(noms)

[1] "character"

Objets dans R : Modes

ma.liste <- list(noms=noms, age=age)


mode(ma.liste)

[1] "list"
mode(is.integer(pi))

[1] "logical"
mode(mode)

[1] "function"

Objets dans R : longueurs


A part le mode, un objet a aussi une longueur, définie comme le nombre d’éléments qu’il contient :

4
length(age)

[1] 3
length(noms)

[1] 3
length(ma.liste)

[1] 2

Objets dans R : longueurs


Un objet de mode character doit contenir plusieurs chaînes de caractères pour que sa longueur soit supérieure
à1:
v1 <- "actuariat"
length(v1)

[1] 1
v2 <- c("a", "c", "t", "u", "a", "r", "i", "a", "t")
length(v2)

[1] 9

Objets dans R : longueurs


Il faut utiliser la fonction nchar pour obtenir le nombre de caractères dans une chaîne :
nchar(v1)

[1] 9
nchar(v2)

[1] 1 1 1 1 1 1 1 1 1

Objets dans R : longueurs


Un objet peut être de longueur 0 et doit alors être interprété comme un contenant qui existe, mais qui est
vide :
v <- numeric(0)
length(v)

[1] 0
v <- numeric(10); v

[1] 0 0 0 0 0 0 0 0 0 0
length(v)

[1] 10

5
Objets dans R : Classes
• La classe d’un objet spécifie son comportement et donc sa façon d’interagir avec opérations et fonctions.
• Un exemple important sont les data frame : des liste spéciales dont les éléments ont tous la même
longueur.
• La classe d’un data frame est différente de celle des listes génériques et les data frame ont un système
d’indiçage qui n’existe pas pour les autres listes

Objets dans R : Classes

class(ma.liste)

[1] "list"
mon.data.frame=data.frame(noms,age)
mode(mon.data.frame)

[1] "list"
class(mon.data.frame)

[1] "data.frame"

Objets dans R : Classes

mon.data.frame[1,2] # pour extraire le 1e élément de la 2ème "colonne""

[1] 33
# Essayer la commande suivante:
# ma.liste[1,2]

Données, Types et Opérateurs : numeric


le type de base est le vecteur → scalaire = vecteur de taille 1
• numeric qui peut être integer (entier) ou double (double).
Les opérateurs applicables sont : + , - , * , / , ˆ , %% (modulo) , %/% (division entière)
1 + 2 # addition

[1] 3
10 - 5 # soustraction

[1] 5

Données, Types et Opérateurs : numeric

5 * 3 # multiplication

6
[1] 15
15 / 2 # division entre valeurs réelles

[1] 7.5
15.3 / 2.1 # division entre valeurs réelles

[1] 7.285714
2 ^ 3 # puissance

[1] 8

Données, Types et Opérateurs : numeric

8 %% 4 # modulo

[1] 0
8 %% 3 # modulo

[1] 2
7 %/% 2 # division entière

[1] 3

Données, Types et Opérateurs : logical


• logical correspond au type booléen, il prend deux valeurs possibles TRUE et FALSE (en majuscule)
que l’on peut abréger avec T et F. Les opérateurs sont ! (négation), && (ET logique), || (OU logique),
xor() (OU exclusif)
!T

[1] FALSE
xor(T,F)

[1] TRUE

Données, Types et Opérateurs : logical

T && F

[1] FALSE
T || F

[1] TRUE

7
Données, Types et Opérateurs : character
character désigne les chaînes de caractères. Une constante chaîne de caractère doit être délimitée par des
guillemets
ch = "voiture"

affecte la valeur « voiture » à l’objet ch qui devient donc une variable de type chaîne de caractères. Les
fonctions de manipulation sont : paste(..), grep(..), etc.
a=10
paste("il y a ",a," voitures dans la parking",sep="")

[1] "il y a 10 voitures dans la parking"

Données, Types et Opérateurs : character

x <- c("d", "a", "c", "abba")


grep("a", x) # chercher occurrence de "a"

[1] 2 4
grepl("a", x) # logical recherche

[1] FALSE TRUE FALSE TRUE


grep("a|c", x) # recherche multiple

[1] 2 3 4

Valeurs particulières : Inf


• La valeur Infinie Inf
a = 1/0; a # a prend la valeur Inf

[1] Inf
t=is.infinite(a); t

[1] TRUE
b = 1/Inf; b # affecte la valeur 0 à b

[1] 0

Valeurs particulières : NaN


• La valeur indéfinie NaN (Not a umber)
a=0/0 ; a

[1] NaN

8
b=b+a ; b

[1] NaN

Valeurs particulières : NA
• Donnée manquante NA (Not available), très utile en statistique
a=10+NA; a

[1] NA
b=a+5; b

[1] NA
is.na(b)

[1] TRUE

Valeurs particulières : NULL


• Pointeur NULL
a=NULL # a pointe sur un espace non alloué
is.null(a)

[1] TRUE

Vecteurs
• En R l’unité de base dans les calculs est le vecteur (un scalaire est considéré comme un vecteur de
longueur un).
• La fonction la plus utilisée pour créer un vecteur est la concaténation :
prix <- c(150, 162, 155, 157); prix

[1] 150 162 155 157


L’indiçage se fait par les crochets :
prix[1] # Le premier indice est toujours 1!!

[1] 150

Vecteurs

prix[c(1,3)]

[1] 150 155


prix[-(1:2)] # pour extraire tous les éléments sauf le 1e et le 2e

[1] 155 157

9
Vecteurs
On peut aussi utiliser un vecteur d’indiçage booléen, les éléments extraits sont bien évidement ceux corre-
spondants aux valeurs TRUE. Par exemple pour extraire les prix supérieurs à 156 :
prix > 156 # le vecteur booléen

[1] FALSE TRUE FALSE TRUE


prix[prix>156]

[1] 162 157

Vecteurs
Une alternative est donnée par la fonction which() qui rend les indices dont les éléments vérifient une condition
logique :
which(prix>155)

[1] 2 4
prix[which(prix>156)]

[1] 162 157

Vecteurs
On peut utiliser l’indiçage pour changer un élément :
prix[1] <- 0; prix

[1] 0 162 155 157


Il est possible de donner des étiquettes aux éléments d’un vecteur et d’extraire des éléments sur la base de
celles-ci :
names(prix) # NULL est un objet spécial de mode NULL qui se lit "pas de contenant"

NULL

Vecteurs

names(prix) <- c('model.1', 'model.2', 'model.3', 'model.4')


prix

model.1 model.2 model.3 model.4


0 162 155 157
prix['model.3']

model.3
155

10
Vecteurs
Dans un vecteur, tous les éléments doivent avoir le même mode :
x <- c(1,2,'a', 'b'); x

[1] "1" "2" "a" "b"


mode(x)

[1] "character"

Vecteurs
Pour générer le vecteur des n premiers entiers on utilise la syntaxe 1:n
1:10

[1] 1 2 3 4 5 6 7 8 9 10
2:6

[1] 2 3 4 5 6

Vecteurs
Pour générer des suites plus générales on utilise la fonction seq() :
seq(from=2, to=20, by=2) # ou plus simplement seq(2,20,2)

[1] 2 4 6 8 10 12 14 16 18 20
On peut créer un vecteur d’éléments répétés avec rep() :
rep(1,len=3) # même chôse que rep(1,3)

[1] 1 1 1

Vecteurs

rep(NA,4)

[1] NA NA NA NA
seq_len(10)

[1] 1 2 3 4 5 6 7 8 9 10

Vecteurs

x <- c(50, 30, 10, 20, 60, 30, 20, 40)


seq(-2, by = 0.5, along = x)

11
[1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5
seq_along(x)

[1] 1 2 3 4 5 6 7 8

Vecteurs

x <- c(50, 30, 10, 20, 60, 30, 20, 40)


sort(x) # classement en ordre croissant

[1] 10 20 20 30 30 40 50 60
sort(x, decr = TRUE) # classement en ordre décroissant

[1] 60 50 40 30 30 20 20 10
sort(c("abc", "B", "Aunt", "Jemima")) # chaînes de caractères

[1] "abc" "Aunt" "B" "Jemima"


sort(c(TRUE, FALSE)) # FALSE vient avant TRUE

[1] FALSE TRUE

Vecteurs
La fonction ‘order’ retourne la position, dans le vecteur donné en argument, du premier élément selon l’ordre
croissant, puis du deuxième, etc.
order(x)

[1] 3 4 7 2 6 8 1 5
x[order(x)]

[1] 10 20 20 30 30 40 50 60

Vecteurs

## Renverser l'ordre d'un vecteur.


rev(x)

[1] 40 20 30 60 20 10 30 50
## Seulement les éléments différents d'un vecteur.
unique(x)

[1] 50 30 10 20 60 40

12
Vecteurs

x <- c(50, 30, 10, 20, 60, 30, 20, 40)


which.min(x)

[1] 3
which.max(x)

[1] 5
match(20, x)

[1] 4

Vecteurs

match(c(20, 30), x)

[1] 4 2
60 %in% x

[1] TRUE
70 %in% x

[1] FALSE

Vecteurs

## ARRONDI
(x <- c(-21.2, -pi, -1.5, -0.2, 0, 0.2, 1.7823, 315))

[1] -21.200000 -3.141593 -1.500000 -0.200000 0.000000 0.200000 1.782300


[8] 315.000000
round(x) # arrondi à l'entier

[1] -21 -3 -2 0 0 0 2 315


round(x, 2) # arrondi à la seconde décimale

[1] -21.20 -3.14 -1.50 -0.20 0.00 0.20 1.78 315.00

Vecteurs

x <- c(-21.2, -pi, -1.5, -0.2, 0, 0.2, 1.7823, 315)


round(x, -1) # arrondi aux dizaines

[1] -20 0 0 0 0 0 0 320


ceiling(x) # plus petit entier supérieur

13
[1] -21 -3 -1 0 0 1 2 315
floor(x) # plus grand entier inférieur

[1] -22 -4 -2 -1 0 0 1 315


trunc(x) # troncature des décimales

[1] -21 -3 -1 0 0 0 1 315

Matrices :
Une matrice est un vecteur avec un attribut dim de longueur deux. Tous les élément d’une matrice ont donc
le même mode. Pour créer une matrice :
x <- matrix(1:4, nrow=2, ncol=2); x

[,1] [,2]
[1,] 1 3
[2,] 2 4
nrow, ncol : nombre de lignes et de colonnes d’une matrice
nrow(x); ncol(x)

[1] 2
[1] 2

Matrices :
rowSums, colSums : sommes par ligne et par colonne, respectivement, des éléments d’une matrice
rowSums(x); colSums(x)

[1] 4 6
[1] 3 7
rowMeans, colMeans : moyennes par ligne et par colonne, respectivement, des éléments d’une matrice
rowMeans(x); colMeans(x )

[1] 2 3
[1] 1.5 3.5

Matrices :
t -> transposée
t(x)

[,1] [,2]
[1,] 1 2
[2,] 3 4

14
det : déterminant
det(x)

[1] -2

Matrices :
solve
- 1) avec un seul argument (une matrice carrée) : inverse d’une matrice ; - 2) avec deux arguments (une
matrice carrée et un vecteur) : solution du système d’équations linéaires Ax = b
solve(x)

[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
solve(x, c(1, 2))

[1] 1 0

Matrices :
diag - 1) avec une matrice en argument : diagonale de la matrice ; - 2) avec un vecteur en argument : matrice
diagonale formée avec le vecteur ; - 3) avec un scalaire p en argument : matrice identité p × p
diag(x)

[1] 1 4
diag(c(1,2))

[,1] [,2]
[1,] 1 0
[2,] 0 2
diag(3)

[,1] [,2] [,3]


[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1

Matrices :

M <- matrix(2:7, nrow=2, ncol=3); M

[,1] [,2] [,3]


[1,] 2 4 6
[2,] 3 5 7
M[2,] # 2e ligne

15
[1] 3 5 7
M[,3] # 3e colonne

[1] 6 7

Matrices :

M[2,3]

[1] 7
M[3]

[1] 4
M[,-2] # pour extraire toutes les colonnes sauf la 2e

[,1] [,2]
[1,] 2 6
[2,] 3 7

Matrices :
Pour fusionner verticalement (horizontalement) deux matrices on utilise rbind() (resp. cbind()) :
cbind(M,-M)

[,1] [,2] [,3] [,4] [,5] [,6]


[1,] 2 4 6 -2 -4 -6
[2,] 3 5 7 -3 -5 -7
rbind(M,2*M)

[,1] [,2] [,3]


[1,] 2 4 6
[2,] 3 5 7
[3,] 4 8 12
[4,] 6 10 14

Opérations sur vecteurs et matrices numériques

v <- c(3,4,1,6)
v + 2

[1] 5 6 3 8
v * 2 # multiplication par une constante

[1] 6 8 2 12

16
Opérations sur vecteurs et matrices numériques

v * v

[1] 9 16 1 36
v/2

[1] 1.5 2.0 0.5 3.0


v/v

[1] 1 1 1 1

Opérations sur vecteurs et matrices numériques

v + v^2

[1] 12 20 2 42
v %*% t(v) # v est consideré comme un vecteur-colonne!

[,1] [,2] [,3] [,4]


[1,] 9 12 3 18
[2,] 12 16 4 24
[3,] 3 4 1 6
[4,] 18 24 6 36

Opérations sur vecteurs et matrices numériques

t(v) %*% v

[,1]
[1,] 62
v %*% v # v est consideré un vecteur-ligne et un vecteur-colonne

[,1]
[1,] 62

Opérations sur vecteurs et matrices numériques

sqrt(M)

[,1] [,2] [,3]


[1,] 1.414214 2.000000 2.449490
[2,] 1.732051 2.236068 2.645751
M * M

[,1] [,2] [,3]


[1,] 4 16 36
[2,] 9 25 49

17
Opérations sur vecteurs et matrices numériques

N <- M[,-3]
N %*% diag(1,2)

[,1] [,2]
[1,] 2 4
[2,] 3 5

Structures de contrôle : if

if ( condition )
{
instructions
} else {
instructions
}

• Attention aux acoladres : else doît être sur la même ligne de }


• La partie else est facultative
• On peut imbriquer des if()

Structures de contrôle : if

# demander le prix
print("saisir prix ht")
ht <- scan()
# demander le type de produit
print("type de produit : 1 = luxe, 2 = normal")
typprod <- scan()
# tva
if ( typprod == 1)
{ tva <- 0.33
} else { tva <- 0.19
}
# calcul TTC
ttc <- ht * (1 + tva)
# affichage
print(paste("prix ttc = ",as.character(ttc)))

Structures de contrôle : if
On peut simplifier la structure de branchement, surtout quand il s’agit d’effectuer une simple affectation -
renvoyer une valeur selon que la condition est vraie ou pas
tva <- ifelse( typprod == 1, 0.33, 0.19)

• on procède à une opération simple suivie d’une affectation

18
ifelse(typeprod == 1, ttc <- ht * 1.33, ttc <- ht * 1.19)

Structures de contrôle : for

for ( indice in sequence)


{
instructions
}
# On peut casse la boucle avec "break"

calculer
n
X
S= i2
i

Structures de contrôle : for

n=10
s <- 0
for (i in 1:n)
{
s <- s + i^2
}
print(paste("la somme = ",s))

[1] "la somme = 385"

for : Suite de Fibonacci


La suite de Fibonacci est une suite de nombres entiers très connue. Les deux premiers termes de la suite sont
0 et 1 et tous les autres sont la somme des deux termes précédents.

f (0) = 0
f (1) = 1
f (n) = f (n − 1) + f (n − 2), n ≥ 2

for : Suite de Fibonacci

n <- 10
x <- numeric(n) # création du contenant
x[2] <- 1 # x[1] vaut déjà 0
for (i in 3:n) x[i] <- x[i - 1] + x[i - 2]
x

[1] 0 1 1 2 3 5 8 13 21 34

19
Structures de contrôle : while

while (condition)
{
instructions
}
n=10
s <- 0
i <- 1
while ( i <= n)
{
s <- s + i^2
i <- i + 1
}
print(paste("la somme = ",s))

[1] "la somme = 385"

Structures de contrôle : repeat

x = 1
repeat {
print(x)
if ( x > 4) break
x <- x + 1
}

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Fonctions définies par l’utilisateur

ma.fonction <- function( x, y)


{
z=x+y
return(z)
}
ma.fonction(5,8)

[1] 13

Fonctions définies par l’utilisateur


affecter une valeur par défaut à y

20
ma.fonction <- function( x, y =10)
{
z=x+y
return(z)
}
ma.fonction(5)

[1] 15
ma.fonction(y = 20, x = 10)

[1] 30

Facteurs
Un facteur est un vecteur utilisé pour contenir une variable qualitative, c’est à dire une variable à valeurs
discrètes. Ses valeurs, ou catégories ou encore modalités, sont appelées les levels en R.
ville <- c('paris', 'lyon', 'lyon', 'paris', 'nantes')
fact.ville <- as.factor(ville); fact.ville

[1] paris lyon lyon paris nantes


Levels: lyon nantes paris
class(fact.ville)

[1] "factor"

Facteurs
Un facteur a le mode numeric : en effet ses éléments sont stockés comme les entiers énumérant les différentes
modalités :
mode(fact.ville)

[1] "numeric"
as.numeric(fact.ville)

[1] 3 1 1 3 2

Data frames
• Un des conteneurs de données le plus utilisé est le data frame, une liste spéciale de classe data.frame
dont tous les éléments ont la même longueur.
• Pour cette raison, un data frame est représenté sous forme d’un tableau à deux dimensions dont les
colonnes sont ses éléments.
• Typiquement, dans un data frame les colonnes représentent les variables et les ligne les observations.
• Contrairement aux matrices, les éléments d’un data frame peuvent avoir des modes différents.

21
Data frames

id <- c('id.1', 'id.2', 'id.3', 'id.4')


age <- c(19, 45, 67, 53)
fumeur <- c(TRUE, FALSE, TRUE, TRUE)
sex <- c('f', 'f', 'h', 'h')
ma.bd <- data.frame(Id=id, Age=age, Fumeur=fumeur, Sex=sex); ma.bd

Id Age Fumeur Sex


1 id.1 19 TRUE f
2 id.2 45 FALSE f
3 id.3 67 TRUE h
4 id.4 53 TRUE h

Data frames

dim(ma.bd)

[1] 4 4
nrow(ma.bd)

[1] 4
ncol(ma.bd)

[1] 4
names(ma.bd)

[1] "Id" "Age" "Fumeur" "Sex"

Data frames

ma.bd$Sex # une colonne de caractères est transformée automatiquement en facteur

[1] f f h h
Levels: f h
ma.bd[,2]

[1] 19 45 67 53
ma.bd$Age[ma.bd$Fumeur==FALSE]

[1] 45

Importation et exportation des données

filein <- '/home/bari/Bureau/EHTP-GLT1-Analyse-de-donnees/R-Labs/Iris.txt'


d1 <- read.table(filein,
header=TRUE, # la première ligne contient le nom des variables

22
sep=';') # les variables sont separées par des ;
head(d1)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species


1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

Importation et exportation des données

setwd("/home/bari/Bureau/EHTP-GLT1-Analyse-de-donnees/R-Labs")
d2 <- read.table("heart.txt",
header=TRUE,
sep='\t') # les variables sont separées par une tabulation
dim(d2); names(d2)

[1] 270 13
[1] "age" "sexe" "type_douleur" "pression" "cholester"
[6] "sucre" "electro" "taux_max" "angine" "depression"
[11] "pic" "vaisseau" "coeur"

Statistique descritptive unidimensionnelle


1. Données utilisées
• On illustrera les fonctions de base en utilisant le jeu de données mtcars disponible dans R.
• une description de ces données, consulter l’aide ?mtcars. On peut avoir une idée de la classe et du
contenu de mtcars à l’aide de str() :
str(d2)

'data.frame': 270 obs. of 13 variables:


$ age : int 70 67 57 64 74 65 56 59 60 63 ...
$ sexe : Factor w/ 2 levels "feminin","masculin": 2 1 2 2 1 2 2 2 2 1 ...
$ type_douleur: Factor w/ 4 levels "A","B","C","D": 4 3 2 4 2 4 3 4 4 4 ...
$ pression : int 130 115 124 128 120 120 130 110 140 150 ...
$ cholester : int 322 564 261 263 269 177 256 239 293 407 ...
$ sucre : Factor w/ 2 levels "A","B": 1 1 1 1 1 1 2 1 1 1 ...
$ electro : Factor w/ 3 levels "A","B","C": 3 3 1 1 3 1 3 3 3 3 ...
$ taux_max : int 109 160 141 105 121 140 142 142 170 154 ...
$ angine : Factor w/ 2 levels "non","oui": 1 1 1 2 2 1 2 2 1 1 ...
$ depression : num 2.4 1.6 0.3 0.2 0.2 0.4 0.6 1.2 1.2 4 ...
$ pic : int 2 2 1 2 1 1 2 2 2 2 ...
$ vaisseau : Factor w/ 4 levels "A","B","C","D": 4 1 1 2 2 1 2 2 3 4 ...
$ coeur : Factor w/ 2 levels "absence","presence": 2 1 2 1 1 1 2 2 2 2 ...

23
Statistique descritptive unidimensionnelle
Variables quantitatives
Pour une variable quantitative, les statistiques de base qu’on peut calculer sont le minimum, le maximum, la
moyenne, la variance et l’écart type, la médiane et les autres quantiles (on rappelle que le quantile d’ordre p
est la valeur q t.q. p est la fraction des valeurs observées inférieures à q).
min(d2$age)

[1] 29
max(d2$age)

[1] 77
range(d2$age)

[1] 29 77
mean(d2$age)

[1] 54.43333

Statistique descritptive unidimensionnelle

var(d2$age)

[1] 82.97509
sd(d2$age)

[1] 9.109067
median(d2$age)

[1] 55
quantile(d2$age)

0% 25% 50% 75% 100%


29 48 55 61 77

Statistique descritptive unidimensionnelle

quantile(d2$age, probs = 0.99) #pour le percentile d'ordre 99

99%
71.93
quantile(d2$age, probs = c(0.01, 0.1, 0.9, 0.99))

1% 10% 90% 99%


34.69 42.00 66.00 71.93

24
Statistique descritptive unidimensionnelle

summary(d2)

age sexe type_douleur pression cholester


Min. :29.00 feminin : 87 A: 20 Min. : 94.0 Min. :126.0
1st Qu.:48.00 masculin:183 B: 42 1st Qu.:120.0 1st Qu.:213.0
Median :55.00 C: 79 Median :130.0 Median :245.0
Mean :54.43 D:129 Mean :131.3 Mean :249.7
3rd Qu.:61.00 3rd Qu.:140.0 3rd Qu.:280.0
Max. :77.00 Max. :200.0 Max. :564.0
sucre electro taux_max angine depression pic
A:230 A:131 Min. : 71.0 non:181 Min. :0.00 Min. :1.000
B: 40 B: 2 1st Qu.:133.0 oui: 89 1st Qu.:0.00 1st Qu.:1.000
C:137 Median :153.5 Median :0.80 Median :2.000
Mean :149.7 Mean :1.05 Mean :1.585
3rd Qu.:166.0 3rd Qu.:1.60 3rd Qu.:2.000
Max. :202.0 Max. :6.20 Max. :3.000
vaisseau coeur
A:160 absence :150
B: 58 presence:120
C: 33
D: 19

Statistique descritptive unidimensionnelle

summary(d2$age)

Min. 1st Qu. Median Mean 3rd Qu. Max.


29.00 48.00 55.00 54.43 61.00 77.00
boxplot(d2$age, outline = TRUE)

Statistique descritptive unidimensionnelle

hist(d2$age)

Statistique descritptive unidimensionnelle

hist(mtcars$mpg, breaks = 20) #si on veut 20+1 intervalles

25
Variables qualititatives
Les fonctions summary() et table() appliquées à un facteur (ou à un vecteur de caractères) comptent les
occurrences des différents niveaux.
summary(d2$sexe)

feminin masculin
87 183
table(d2$type_douleur)

A B C D
20 42 79 129

Variables qualititatives

# Pour obtenir les proportions :


prop.table(table(d2$sexe))

feminin masculin
0.3222222 0.6777778

Variables qualititatives

# En présence de valeurs manquantes, summary() compte aussi les NA :


x <- as.factor(c('a','a','b','c',NA,'c'))
summary(x)

a b c NA's
2 1 2 1
table(x)

x
a b c
2 1 2

Variables qualititatives

prop.table(table(x)) #les effectifs sont divisés par le nb total des valeurs non-manquantes

x
a b c
0.4 0.2 0.4
prop.table(summary(x)) #les effectifs sont divisés par le nb total des valeurs

26
a b c NA's
0.3333333 0.1666667 0.3333333 0.1666667

Variables qualititatives

# On utilisera un graphiques à barres ou un camembert (déconseillé) :


barplot(table(d2$type_douleur))

Variables qualititatives

pie(summary(d2$type_douleur))

27

Vous aimerez peut-être aussi