Vous êtes sur la page 1sur 55

Modélisation stochastique par R

L3 M1A

Faculté des Sciences et Techniques (FAST)


Université d’Abomey-Calavi (UAC)
Qu’est ce que R ?

I langage de programmation et logiciel d’analyse statistique et


graphique ;
I logiciel gratuit disponible sur le site
http ://www.r-project.org
I avec
I les fichiers d’installation, de mise à jour, la documentation ;
I les librairies (ou packages) de base qui regroupent les fonctions
usuelles ;
I les librairies (ou packages) complémentaires.
Au démarrage de R

> est le prompt qui attend les commandes et qui apparaît en début
de chaque ligne de commandes.

# permet d’insérer un commentaire ;

+ apparaît au début d’une ligne si la ligne de commande


précédente est incomplète ;

; permet de séparer plusieurs commandes écrites sur la même ligne ;

q() permet d’arrêter le logiciel.


Au démarrage

Toutes les librairies ne sont pas chargées au démarrage ;

library() affiche la liste des librairies installées ;

library(lib) charge la librairie lib ; les fonctions de cette librairie


peuvent alors être utilisées ;

library(help = lib) afiche la liste des fonctions de la librairie lib.


Aide sur une fonction R

I help(FUN) ou ?FUN (sous windows) ? ?FUN (sous Linux)


affiche l’aide sur la fonction FUN

I example(FUN) exécute les exemples généralement présentés à


la fin du fichier d’aide de la fonction FUN

I demo() affiche la liste des démonstrations des fonctionnalités


de R.
Objets

Les objets de base sont

I vecteurs

I matrices

I tableaux de données (data.frame) : matrices dont toutes les


colonnes ne sont pas nécessairement du même type
Objets

Les objets sont caractérisés par :


I leur nom,
I leur contenu
I des attributs qui précisent le type de données représenté et les
traitements statistiques possibles.

ls() # affiche la liste des objets en mémoire.

rm(o) # supprime l’objet o.

rm(list=ls()) # supprime tous les objets en mémoire.


Attributs des objets

I Le mode : c’est le type des éléments contenus dans un objet ;


les quatre principaux sont :
I numérique
I caractère
I complexe
I logique (FALSE ou TRUE).

I la longueur : c’est le nombre d’éléments de l’objet.

mode et length affichent respectivement le mode et la longueur


d’un objet.
Opérateurs et connecteurs

+ Addition
- Soustraction
Opérateurs arithmétiques
* Produit
/ Division

> Supérieur
< Inférieur
Opérateurs logiques >= Supérieur ou égal
<= Inférieur ou égal
== Egal
!= Différent

& Et
Connecteurs
| Ou
Opérations de base sur les nombres

2+3 # addition
2-3 # soustraction
2*3 # produit
2/3 # division
2ˆ3 # puissance
sqrt(2) # racine carrée
sqrt(as.complex(-1)) # racine carrée
sqrt(-1+2i) # racine carrée
abs(-1+2i) # module
exp(1) # constante d’Euler e
exp(2) # e2
Opérations de base

log(5) # ln(5)
log10(5) # ln(5)/ln(10)
1.e4 # 104
1.e-4 # 10−4
Inf # +∞
-Inf # −∞
Na # valeur manquante
NaN # valeurs indéfinies ; ex −∞ + ∞
x=1 # affectation
x<-1 # affectation
Fonctions trigonométriques

sin() # sinus
cos() # cosinus
tan() # tangente
acos() # arccosinus
asin() # arcsinus
atan() # arctangente
cosh() # cosinus hyperbolique
sinh() # sinus hyperbolique
tanh() # tangente hyperbolique
acosh() # argument cos hyperbolique
asinh() # argument sin hyperbolique
atanh() # argument tan hyperbolique
Opération de base

Re(z) # partie réelle de z


Im(z) # partie imaginaire de z
Mod(z) # module de z
Arg(z) # argument de z
factorial(n) # n!
choose(n,k) # Cnk
Opérations sur les vecteurs


v=c(1,sqrt(2),1/3,4,-3.235,5) # Création du vecteur (1, 2,1/3,4,-3
v # Affichage du vecteur
v-1 # Soustraction
2*v # Multiplication par 2
v/2 # Division par 2
v[2] # Affichage de la 2ème coordonnée d
floor(v) # Partie entière des composantes de v
round(v,2) ) # Arrondi à la 2ème décimale des com
u=v[3 :5] # Création du vecteur u = (1, 4, 5)
w=v[c(1,3,6)] # Création du vecteur w = (1, 1, 5)
x=c(0,w,u) # Création du vecteur x = (0, 1, 1, 5,
Opérations sur les vecteurs

v [v < 4] # Affichage des coordonnées de v < 4


v [which(v >= 3)] # Affichage des coordonnées de v ≥3
u+w # Somme de u et w
u*w # Produit terme à terme
u/w # Division terme à terme
t(u) # Transposée de u
sum(u) # Somme des coordonnées de u
prod(u) # Produit des coordonnées de u
length(u) # Affichage de la dimension de u
unique(u) #Affichage des composantes qui ne se répètent p
duplicated(u) #Affichage des composantes qui se répètent dans
Opérations sur les vecteurs

t(u)%*%w # Produit scalaire de t(u) et w


sort(v) ou sort(v,F) # Tri croissant des coordonnées de v
sort(v,T) # Tri décroissant des coordonnées de v
min(v) # Affichage du plus petit élément de v
max(v) # Affichage du plus grand élément de v
which.min(v) # Affichage de la position du minimum de v
which.max(v) # Affichage de la position du maximum de v
cumsum(v) # Sommes cumulées des éléments de v
Générer une séquence de données

I rep(v,n) permet de répéter n fois les éléments d’un vecteur v ;

Exemple
rep(1, 10)
rep(c(2,3),4)
v=c(0,-1,2,1.25) ; rep(v,3)
I seq(a,b,by=r) génère des termes d’une suite arithmétique de
raison r, où a est le 1er terme et le dernier est supérieur ou
égal à b

Exemple
seq(10,1,-0.5)
seq(2,12,8)
Générer une séquence régulière de données

I a :b permet de générer des termes d’une suite arithmétique de


raison 1, où le 1er terme est a et le dernier est inférieur ou égal
à b;

Exemple
1 :10
0.5 :11
I b :a génère des termes d’une suite arithmétique de raison -1,
où le 1er terme est b et le dernier est supérieur ou égal à a.

Exemple
10 :0.5
8.3 :1.2
Matrices

Pour créer une matrice à n lignes et p colonnes :

matrix(data = x, nrow = n, ncol = p, byrow = FALSE)

où x est le vecteur contenant les éléments de la matrice qui seront


rangés par colonne.
Si byrow=TRUE dans la syntaxe, les éléments de la matrice seront
rangés par ligne.
Opérations sur les matrices

x=1 :20
A=matrix(x,nrow=5,byrow=T) # Création de la matrice 5 × 4
# dont la 1ère ligne est (1,2,3,4)
B=matrix(a,nrow=5) # Création de la matrice 5 × 4
# dont la 1ère colonne est (1,2,3,4,5)
t(A) #Transposition de la matrice A
A[1,2] # Sélection de l’élément à l’intersection
# de la 1ère ligne et de la 3ème colonne de A
A[,3] # Sélection de la 3ème colonne de A
A[c(3,4),] # Sélection des 3ème et 4ème lignes de A
A[,c(3,4)] # Sélection des 3ème et 4ème colonnes de A
A[-2,] # Suppression de la 2ème ligne de A
Opérations sur les matrices

A[,-c(1,4)] # Suppression des 1ère et 4ème colonnes de A


A+1 # Addition de 1 à tous les termes de A
A*2 # Multiplication par 2 à tous les termes de A
A+1 :5 # Addition du vecteur 1 :5 à toutes les colonnes de A
A+B # Somme de A et B
A*B # Produit terme à terme de A et B
A[A>9] # Affichage des éléments de A supérieurs à 9
diag(1 :4) # Création d’une matrice diagonale de diagonale (1,2,3,4
diag(A) # Affichage de la diagonale de la matrice A
Opérations sur les matrices

rbind(A,B) # Concaténation verticale des matrices A et B


cbind(x1,x4) # Concaténation horizontale des matrices A et B
colSums(A) # Calcul des sommes par colonne de A
rowSums(A) # Calcul des sommes par ligne de A
colMeans(A) # Calcul des moyennes par colonne de A
rowMeans(A) # Calcul des moyennes par ligne de A
C=A%*%t(B) # Produit matriciel de A par la transposée de B
det(C) # Calcul du déterminant de C
eigen(A) # Calcul des valeurs/vecteurs propres de A
solve(A) # Calcul de l’inverse de A
solve(A,b) # Calcul de la solution x de l’équation Ax=b
Statistique descriptive ; caractéristiques numériques

table(Nile) # Affichage du tableau des modalités de x av


range(Nile) # Affichage du maximum et du minimum de
mean(Nile) # Calcul de la moyenne de Nile
var(Nile) # Calcul de la variance empirique
sd(Nile) # Calcul de l’écart-type Nile
median(Nile) # Calcul de la médiane empirique de Nile
quantile(Nile) # Calcul des quantiles empiriques de Nile
summary(Nile) # Résumé statistique de Nile
x=c(0.5,1,2.2) ; y=x-1
cov(x,y) #covariance entre x et y
corr(x,y) #coefficient de corrélation entre x et y
plot(ecdf(x)) # tracé de la fonction de répartition de x
Statistique descriptive : représentations graphiques

plot(x) # Tracé du nuage de points


pie(x) # Diagramme en secteurs
barplot(x) # Diagramme en barres
hist(Nile,nclass=10) # Histogramme de Nile constitué de 10 classes
boxplot(Nile) # Boîte à moustâche
Lancer de dés et tirage dans une urne

I Un résultat du lancer d’un dé bien équilibré, n fois

sample(1 :6,n,replace=T)

I Une urne contenant 10 boules dont 3 noires, 5 blanches et


deux rouges

urne=c(rep("black",3),rep("white",5), rep("red",2))

I Un tirage de quatre boules sans remise dans cette urne

sample(urne,4,replace=F)
I Un tirage de quatre boules avec remise dans cette urne
sample(urne,4,replace=T)
Echantillonnage

I sample(v,n,rep=T) tire avec remise n éléments parmi les


composantes d’un vecteur v

sample(10 :15,8,rep=T)
I sample(v,n,rep=F) tire sans remise de n éléments parmi les
composantes d’un vecteur v

sample(1 :20,8,rep=F)
I sample(v) permute les composantes du vecteur v

sample(c(0.5,1,-0.2,3))
Echantillon d’une loi discrète finie

Pour générer un échantillon de taille n d’une v.a.r.d de loi de


probabilité {(xi , pi ), i = 1, · · · , k},

sample(x,n,replace=T,prob)

où x = (x1 , x2 , · · · , xk )
prob = (p1 , p2 , · · · , pk )

I Si replace=F, c’est un tirage sans remise et l’échantillon n’est


pas iid ;
I Si prob n’est pas spécifié, il y a équiprobabilité ;
Lois de probabilité usuelles

Sous R, les lois de probabilité usuelles sont notées comme suit :

Loi Notation Paramètres


uniforme unif min=0, max=1
binomiale binom size, prob
Poisson pois lambda
géométrique geom prob
normale norm mean=0, sd=1
exponentielle exp rate=1
Student t df
Fisher Snedecor f df1, df2
Khi-deux chisq df
Calcul de probabilité, fonction de répartition, quantile,
échantillon des lois usuelles
I dnotationdist :c’est la fonction de densité pour une loi continue
et la fonction de probabilité P(X = k) pour une loi discrète.

I rnotationdist : c’est la fonction qui génère des réalisations


aléatoires indépendantes de la loi ;

I pnotationdist : (avec l’option lower.tail=TRUE (par défaut))


c’est la fonction de répartition P(X ≤ x) ;

I pnotationdist : (avec l’option lower.tail=FALSE ) c’est la


fonction P(X > x) ;

I qnotationdist : c’est la fonction qui permet d’obtenir les


quantiles ;
Loi binomiale

Exemple
Soit X une v.a de loi B(35, 0.45)

dbinom(10, size = 35, prob = 0.45)# P(X = 10)

pbinom(15, size = 35, prob = 0.45)# P(X ≤ 15)

pbinom(11, size = 35, prob = 0.45, lower.tail = FALSE)#


P(X > 11)

sum(dbinom(16 :19, size = 35, prob = 0.457))#


P(16 ≤ X ≤ 19)pbinom(19, size = 35, prob = 0.45)-pbinom(15,

size = 35, prob = 0.45)# P(16 ≤ X ≤ 19)


Loi de Poisson

Exercice
Identifier ce que chacune des commandes suivantes effectue :

1. dpois(6, lambda=5)
2. dpois(0 :5,5)
3. dpois(c(2,4,8,10), 5)
4. ppois(6, 10, lower.tail = TRUE)
5. ppois(6, 10, F)
6. qpois(0.25, 10, T)
7. qpois(0.25, 10, F)
8. rpois(50,5).
Loi géométrique

Exercice
Quelle est la définition de la loi géométrique considérée par R ?

Identifier ce que chacune des commandes suivantes effectue :

1. dgeom(1,1/3)
2. dgeom(0 :9,1/3)
3. dgeom(1,c(1/3,2/3))
4. pgeom(9, 1/3,)
5. pgeom(9, 1/3, F)
6. qgeom(0.35, 1/3, T)
7. qgeom(0.35, 1/3, F)
8. rgeom(1,1/3)
Loi uniforme

Exercice
Identifier ce que chacune des commandes suivantes effectue :

1. runif(12,0,1)
2. runif(15)
3. dunif(0.5, min = 0, max = 1) ; dunif(1.5)

4. dunif(- 2,-3,5)
5. punif(-4,-3,5,F) ; punif(-3,-3,5,F)
6. punif(5,T)
7. punif(5.25,-3,5)
8. qunif(0.75, -3,5)
9. qunif(0.6, -3,5,F)
Loi exponentielle

Exercice
Identifier ce que chacune des commandes suivantes effectue :
1. dexp(3.2, rate = 1)
2. pexp(10, 1.5, T)
3. pexp(10, 1.5, F)
4. qexp(0.5, 1,T)
5. qexp(0.5, 1, F)
6. qexp(c(0.25,0.5,0.75), 1,T)
7. qexp(0.5, 2 :5, F)
8. rexp(20, 17.5)
Loi normale

Exercice
Identifier ce que chacune des commandes suivantes effectue :

1. dnorm(0, mean = 0, sd = 1) ; dnorm(0, 0, 1)


2. dnorm(2)
3. pnorm(5, 0, 1, T)
4. pnorm(5,T)
5. pnorm(5, 5, 1, F)
6. pnorm(5, 5, 1, T)
7. qnorm(0.95,10, 10, T)
8. qnorm(0.75)
9. qnorm(0.95,10, 10, F)
10. rnorm(10, 77, 25) ; rnorm(10)
Loi de Student

Exercice
Identifier ce que chacune des commandes suivantes effectue :

1. dt(0.5, 5)
2. pt(0.5,5,T)
3. pt(0.5,5,F)
4. pt(0.5,5,c(F,T)) ; pt(0.5,5 :10,T)
5. pt(0.5,5 :10,F)
6. qt(0.5,5,T) ; qt(0.5,5,F)
7. qt(0.5,5,c(F,T))
8. qt(0.5,5 :10,T)
9. qt(0.5,5 :10,F)
10. rt(25,5)
Représentations graphiques

plot qui réalise des représentations graphiques.

Exemple
plot(1 :20)
x=rnorm(50)
print(x)
summary(x)
y=2*x+7+rnorm(50,sd=0.6)
plot(x,y)
Quelques paramétrages de la fonction plot

I xlab (resp ylab) pour spécifier le titre de en abcisse (resp en


ordonnée) ;
I col pour spécifier la couleur ;
I xlim (resp ylim) pour spécifier les bornes de l’axe des abcisses
(resp des ordonnées) ;

Exemples
x<- seq(-pi,pi,0.05)
y <- cos(x)
plot(x,y,xlab="x",ylab="cos x")
plot(x,y,type="l", main="trait continu")
plot(x,y,type="s")
plot(x,y,col="blue") plot(x,y,xlim=c(-2*pi,2*pi))
plot(x,y,xlim=c(-2*pi,2*pi),ylim=c(-2,2))
Représentation d’une fonction

Pour représenter la fonction fun :


I plot(x,fun(x),type="l")
I plot(fun,min,max)
I curve(fun,min,max).

Exemples
x<- 0 :30
plot(x,log(xˆ 3+2*x+1),type="l")
curve(log(xˆ 3+2*x+1),0 :30)
plot(sin,-pi,pi)
Plusieurs représentations sur le même graphe
I matplot permet de représenter dans un même repère les
colonnes d’une matrice
I points permet d’ajouter des points à un graphique existant
I segments permet d’ajouter un segment joignant deux points à
un graphique.

Exemples
A=matrix(5 :16, 4)
matplot(A, type="o")
matplot(A, type="c")
matplot(A, type="l")
matplot(A, type="s")
points(1 :4,1 :4+5,col="blue")
points(1 :4,1 :4+5,col="blue",type="s")
curve(sin,-pi,pi)
segments(0,-1,0,0,col="red")
segments(-2,0.5,-1,-0.5,col="blue")
Plusieurs représentations sur le même graphe

I lines permet d’ajouter une ligne à un graphique existant.


I abline permet d’ajouter une ou plusieurs droites verticales ou
horizontales à un graphique.

Exemples
curve(tan(x),-5,5)
lines(-5 :5,10*(-5 :5))
abline(h=0,v=0,col="green")
Plusieurs représentations sur une même page
Pour représenter n × m graphiques sur n lignes et m colonnes dans
la même fenêtre, il suffit d’écrire :

par(mfrow=c(n,m))

avant les commandes permettant de représenter les n × m


graphiques.
Exemple
par(mfcol=c(1,2))
plot(dnorm,-5,5)
plot(dexp,0,5)

Exemple
par(mfrow=c(1,2))
plot(dnorm,-5,5)
plot(dexp,0,5)
Exporter un graphique au format jpeg

I Pour exporter un graphique en jpeg , il faut


1. écrire jpeg(filename="nomdufichier%d.jpeg")
2. réaliser le graphique
3. écrire dev.off() pour enregistrer le graphique dans le fichier
nomdufichier.jpeg.

I Pour exporter un graphique en bmp ou png , il faut procéder


de même en remplaçant jpeg par bmp ou par png.
I Pour exporter les graphiques en pdf, il faut procéder comme
suit
1. écrire pdf("nomdufichier.pdf", height=, width=)
2. réaliser le graphique
3. écrire dev.off() pour enregistrer le graphique le graphique dans
le fichier nomdufichier.pdf.
Importer/Exporter des données

I scan() permet de créer un vecteur à partir de données stockées


dans un fichier ;

I read.table() permet d’importer un fichier de données ;

I read.csv() et read.csv2() sont analogues à read.table() ;

I write.table() permet d’exporter des données.


Structures de contrôle : condition
I Pour exécuter des instructions si une condition est vraie et des
instructions alternatives sinon :

if (condition) instructions else instructions alternatives

I S’il n’y a pas d’instructions alternatives

if (condition) instructions

I Si les instructions se limitent à un seul calcul, on peut utiliser


ifelse

ifelse(condition, instructions, instructions alternatives)

Exemple
if (x>0) y=log(x) else y=0
y=ifelse(x>0,log(x),0)
Structures de contrôle : itération avec for

Pour exécuter des instructions pour les valeurs du compteur


appartenant à la séquence

for(compteur in séquence) instructions

Exemple
somme<-0
for(i in 1 :10)
{
somme<-somme+i}
somme
Structures de contrôle : itération avec while

Pour exécuter des instructions tant qu’une condition est vraie

while(condition) instructions

Exemple
i=1
somme<-0
while ( i <= 10 )
{
somme<-somme+i
i<-i+1
} somme
Structures de contrôle : itération avec repeat
Pour exécuter de façon répétée les instructions jusqu’à ce qu’une
condition soit vérifiée :

repeat (instructions) if(condition) break

Exemple
somme< −0
i=1
repeat
{
somme<-somme+i
i<-i+1
if(i>10) break
}
somme
Créer une fonction

mafonction=function (liste des paramètres)


{
instructions
return (l’objet contenant les résultats )
}
Pour exécuter la fonction :
mafonction(valeurs des paramètres)
Exemple
ecart-type <- function(x) sqrt(mean(xˆ 2)-mean(x)ˆ 2)
x<-c(9,5,2,3,7)
ecart-type(x)
Exercice 1

1. Créer un vecteur x de 50 réels choisis au hasard entre 2 et
25.
2. Arrondir les éléments de x à la 3ème décimale.
3. Extraire les éléments de x d’indice impair.
4. Afficher les éléments de x compris strictement entre 10 et 15.

Exercice 2
On lance 10 fois une pièce de monnaie bien équilibrée. Soit X le
nombre de Pile obtenus.
1. Calculer la probabilité d’obtenir exactement 4 fois Pile.
2. Calculer la probabilité d’obtenir au moins 4 fois Face.
3. Représenter la fonction de répartition de X .
4. Calculer la médiane.
Exercice 3
On lance une pièce de monnaie bien équilibrée jusqu’à obtenir
Face.Calculer
1. la probabilité d’obtenir Face au 5ème lancer.
2. la probabilité d’effectuer plus de 5 lancers pour obtenir Face.
3. le nombre moyen de lancers à effectuer pour obtenir Face.

Exercice 4
P500 3;
1. Calculer i=1 i
2. Effectuer 20 tirages successifs avec remise dans une population
de 100 personnes dont 45 hommes et 55 femmes.
3. Choisir au hasard et sans remise 15 observations dans un
ensemble 20 observations d’une loi uniforme sur [0, 1] et 15
observations d’une loi de Poisson P(5).
Exercice 5
1. Simuler 100 lancers indépendants d’un dé cubique équilibré
dont les faces sont numérotées de 6 à 12.
2. Former la distribution des fréquences de la série statistique
ainsi obtenue ;
3. Déterminer le mode de cette série.
4. Déterminer les déciles de cette série.

Exercice 6
1. Simuler l’épreuve qui consiste à lancer 25 fois une pièce de
monnaie équilibrée.
2. Calculer la probabilité d’obtenir Pile 5 fois à l’issue de cette
épreuve.
3. Calculer la probabilité d’obtenir Face au moins 2 fois à l’issue
de cette épreuve.
4. Calculer la probabilité d’obtenir Face plus de 5 fois et au plus
13 fois à l’issue de cette épreuve.
Exercice 7 √
Soit une variable aléatoire X ∼ N (2, 5, 0, 5).
1. Calculer P(|X | ≥ 4, 75);
2. Déterminer x tel que P(X ≤ x) = 0, 95 et y tel que
P(X > y ) = 0, 95.
3. Déterminer z tel que P(|X | ≤ z) = 0.975.
4. Représenter la densité de probabilité de X sur l’intervalle
[−20, 20] avec une subdivision régulière de pas 0,1.
5. Ajouter un segment vertical joignant le point (x,0) à la courbe.
Que représentent les aires situées à gauche et à droite du
segment, entre la courbe et l’axe des abcisses ?
Exercice 8
1. Simuler un échantillon (x1 , x2 , · · · , x1 000) d’une v.a. X de loi
de Bernoulli de paramètre 0.75.
2. Représenter l’histogramme de série en considérant 20 classes.
3. Tracer la courbe de m 7→ x̄m , ∀m = 1, 2, · · · , 1000.
4. Ajouter au graphique la droite d’équation y = 0.75.
5. Que constatez-vous ?
6. Quel résultat important de probabilité cette expérience illustre
t-elle ?
Exercice 9
airquality désigne un jeu de données disponible sous R.
1. Afficher airquality. De quel type d’objet s’agit-il ?
2. Déterminer le résumé des statistiques descriptive des airquality.
3. Représenter les boîtes à moustache de airquality.
4. Créer la matrice A des trois dernières colonnes de airquality.
5. Créer la matrice V des covariances des trois variables en
colonne dans A puis calculer le déterminant de V .
6. Afficher toutes les observations supérieures ou égales au 3ème
quartile de la 3ème colonne de A.
7. Afficher les observations des quatre premières variables
obtenues le 20 juillet.
8. Afficher les observations des quatre premières variables
obtenues le 20 de chaque mois considéré.
9. Retirer les lignes de airquality contenant des données
manquantes.

Vous aimerez peut-être aussi