Introduction au langage R
et applications
statistiques
partie I
Pr Hocine Fellag
Master1
Probabilités/Statistique
2016/2017
Le R est interactif
>4+7
[1] 11
> log(2)
[1] 0.6931472
> exp(0.6931472)
[1] 2
> log(-1)
[1] NaN
Warning message:
NaNs produced in: log(x)
Le R est interactif
> 30:6
[1] 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8 7 6
> a <- 89
> b <- 45
> result <- (a + b)^2
> result
[1] 17956
Données du R
• Il y’a des données incorporées dans R
• Pour les connaître taper
data()
• Exemple : fichier faithful
• Tapez : help(faithful)
• Réponse : Waiting time between eruptions and the
duration of the eruption for the Old Faithful geyser in
Yellowstone National Park, Wyoming, USA.
• Donc, les données dans le fichier faithful représentent
les délais entre éruptions et les durées des éruptions
d’un geyser dans le parc Yellowstone aux USA.
Un geyser est un type particulier de source
d'eau chaude qui jaillit par intermittence
en projetant à haute température et à
haute pression de l'eau et de la vapeur.
Données du R
• data frame avec 272 observations sur 2 variables.
• [,1] eruptions en minutes
• [,2] temps d’attente jusqu’à l’éruption suivante en
minutes
• data(faithful) : charger les données
• attach(faithful) : adopter le fichier dans R
• summary() : donne les différentes
caractéristiques numériques
Minimum, quartiles, moyenne et maximum.
Caractéristiques statistiques
• summary(faithful)
• Réponse:
eruptions waiting
Min. :1.600 Min. :43.0
1st Qu.:2.163 1st Qu.:58.0
Median :4.000 Median :76.0
Mean :3.488 Mean :70.9
3rd Qu.:4.454 3rd Qu.:82.0
Max. :5.100 Max. :96.0
Caractéristiques statistiques
• On peut aussi taper
• mean(eruptions) moyenne
• median(eruptions) médiane
• sd(eruptions) ecart-type
• var(eruptions) Variance
• quantile(eruptions) Quantiles
Caractéristiques statistiques
> mean(eruptions)
[1] 3.487783
> median(eruptions)
[1] 4
> sd(eruptions)
[1] 1.141371
> var(eruptions)
[1] 1.302728
> quantile(eruptions)
0% 25% 50% 75% 100%
1.60000 2.16275 4.00000 4.45425 5.10000
Vecteurs
• La fonction c() permet de créer un vecteur
• Exemple:
• Taper
• ages = c(28, 25, 23, 24, 26, 23, 21, 22, 24, 29, 24,
26, 31, 28, 27, 24, 23, 25, 27, 25,24, 21, 24, 23,
25, 31, 28, 27, 24, 23)
Ensuite, taper : ages
• [1] 28 25 23 24 26 23 21 22 24 29 24 26 31 28 27
24 23 25 27 25 24 21 24 23 25 31 28 27 24 23
Vecteurs
• La fonction c() permet aussi de concaténer des vecteurs :
• Exemple :
G1 = c(75.0, 69.2, 75.4, 87.3)
G2 = c(70.5, 64.2, 76.4, 81.6)
G = c(G1,G2)
G
• [1] 75.0 69.2 75.4 87.3 70.5 64.2 76.4 81.6
• Il est possible d’acc éder à un élément du vecteur avec des
crochets. Par exemple pour accéder au troisème élément
du vecteur, on écrit : G[3]
• Réponse : 75.4
Vecteurs
• Il est aussi possible d’accéder à l’ensemble des poids répondant à
une condition,
• Par exemple l’ensemble des valeurs supérieurs
à 70.0
Taper : G[G > 70.0]
[1] 75.0 75.4 87.3 70.5 76.4 81.6
• Il est possible de créer un vecteur contenant une suite de nombres
entiers avec la fonction seq :
> seq(1, 10)
• [1] 1 2 3 4 5 6 7 8 9 10
> seq(1, 10, by = 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5
8.0 8.5 9.0 9.5 10.0
Matrices
• Une matrice est créee à partir d’un vecteur contenant
les valeurs, et d’un nombre de lignes (nr, pour Number
of Row) et de colonne (nc, pour Number of Column) :
> ma_matrice = matrix(c(1.5, 2.1, 3.2, 1.6, 1.4, 1.5),nr=3,
nc=2)
> ma_matrice
[,1] [,2]
[1,] 1.5 1.6
[2,] 2.1 1.4
[3,] 3.2 1.5
Matrices
Les éléments de la matrice peuvent être obtenus en
donnant entre crochets le numéro de la ligne puis celui
de la colonne :
> ma_matrice[1, 1]
• [1] 1.5
• Il est aussi possible de récupérer une ligne ou une
collone entière, en mettant le numéro correspondant :
> ma_matrice[1,]
[1] 1.5 1.6
> ma_matrice[,1]
[1] 1.5 2.1 3.2
Importer des données
• Exemple : Une étude a été réalisée sur 100 patients
d’un service hospitalier afin de vérifier la relation entre
le tabac et les problèmes pulmonaires. Pour cela, il a
été demandé à chaque personne
• son âge,
• son sexe,
• sa situation (célibataire, mariée,...),
• sa consommation de tabac (nombre de cigarettes par
jour),
• la présence de tabagisme passif,
• la présence de problème pulmonaire (cancer du
poumon, BPCO,...) chez cette personne.
> t = read.table("tabac.txt“, header=TRUE)
> attach(t)
> names(t)
[1] "ID" "age" "sexe"
[4] "situation" "tabac" "tabagisme_passif"
[7] "probleme_pulmonaire"
> age
[1] 37 23 21 55 61 37 56 29 63 46 46 34 27 41 30 40 21
35 22 32 58 27 34 36 47 41 53 58 59 51 44 62 64 29 25
41 46 47 25 56 27 43 29 50 58 20 53 48 31 36 61 50 30
20 43 58 57 25 60 62 38 49 30 26 34 41 47 52 32 28 50
29 38 20 30 63 28 44 23 51 42 56 32 42 22 60 26 38 58
27 44 41 51 57 34 52 62 60 26 35
Analyse statistique
• Ajouter une colonne “fumeur” de type
booléenne.
> t["fumeur"] = tabac > 0
> attach(t)
> names(t)
• [1] "ID" "age" "sexe"
• [4] "situation" "tabac"
"tabagisme_passif"
• [7] "probleme_pulmonaire" "fumeur"
Statistique descriptive
> table(sexe)
sexe
femme homme
46 54
> table(sexe)/length(sexe)
sexe
femme homme
0.46 0.54
> 100*table(sexe)/length(sexe)
sexe
femme homme
46 54
Graphiques
• barplot(table(sexe))
• pie(table(sexe))
> summary(age)
Min. 1st Qu. Median Mean 3rd Qu. Max.
20.00 29.75 41.00 41.38 52.25 64.00
> hist(age)
Deux variables numériques
> cor(age,tabac)
[1] -0.04700102
> plot(tabac,age)
Efficacité des herbicides
• Une étude a porté sur sur l’efficacité de trois herbicides
sur trois plantes : blé, chiendent et liseron.
• Pour cela, des cultures de ces plantes ont été mises en
présence de l’un des trois herbicides, ou d’aucun
d’entre eux.
• Le nombre de plants vivants dans la culture a été
compté avant l’expérience, et 10 jours après.
• Chaque combinaison plante - herbicide a fait l’objet de
20 expérimentations, plus un témoin sans herbicide
(soit 240 expérimentation en tout).
• Le tableau de données est disponible dans le fichier
herbicide.txt
> x = read.table("herbicide.txt",header=TRUE)
> attach(x)
> names(x)
[1] "ID" "herbicide" "plante"
[4] "nb_plants" "nb_plants_survivants" «
survivants"
• plante : qualitative non-ordonnée
• herbicide : qualitative non-ordonnée
• survivants : numérique
chiendent Liseron
Blé
Quelle espèce résiste le mieux aux trois herbicides ?
On trace un boxplot (boite à moustaches)
> boxplot(survivants ~ plante)
Le blé résiste le mieux
Quel herbicide semble le plus efficace ?
> boxplot(survivants ~ herbicide)
L’herbicide 3 est le plus efficace
Ex: sur une route où on souhaite qu’aucune plante ne pousse
Quel herbicide est le plus approprié pour appliquer
sur un champ de blé, où l’on souhaite que le blé
pousse, mais
pas le chiendent ni le liseron ?
> boxplot(survivants ~ plante * herbicide)
L’herbicide 1 (surtout efficace contre le chiendent) ou le 2 (surtout efficace contre
le liseron).
Conclusion : Tester l’association des herbicides 1 et 2 peut améliorer l’efficacité du
traitement de ce champ de blé ?
Simulation de variables aléatoires
• Le recours à la simulation de données est très
fréquent en statistique, aussi R dispose-t-il
d’une bibliothèque de fonctions de densité de
probabilités qui permettent de simuler des
échantillons d’observations provenant d’une
loi de probabilités donnée.
• Le tableau ci-dessous donne la liste et les
commandes correspondantes des lois de
probabilités usuelles :
• Exemples :
1. Normale rnorm(n, mean=’’,sd=’’)
2. rexp(n,lambda)
3. Student rt (n, df)
4. Khi-deux rchisq(n, df)
5. Fisher rf(n, df1, df2)
6. Uniforme runif(n, min=’’, max=’’)
7. Poisson rpois(n, lambda)
8. Binomiale rbinom(n, size, prob)
• Toutes les fonctions peuvent être adaptées en
changeant la première lettre de la fonction :
• rfonction() pour générer des observations,
• dfonction() pour calculer la densité de
probabilités ,
• pfonction() pour calculer la densité de
probabilités cumulées et
• qfonction() pour calculer le quantile
correspondant à une probabilité donnée.
• Tracer la densité de la loi normale N(0,1)
plot(density(rnorm(100000,0,1)),xlim=c(-5,5))
• Tracer la densité de la loi exponentielle Ex(1)
plot(density(rexp(100000,1)),xlim=c(0,5))
Soit X:N(0,1). Alors P(X<=1.96)=0.975
> pnorm(1.96,mean=0,sd=1)
[1] 0.9750021
Ou encore
> qnorm(0.975,mean=0,sd=1)
[1] 1.959964
1.96 est un quantile de X
Générer 10 observations de N(0,1)
> rnorm(10,0,1)
[1] 0.16029481 -0.66069659 0.09132995 -1.67771550 -
0.69734199 0.94267966
[7] -0.49974828 0.57179816 1.65362975 -0.52278948
Loi des grands nombres
• Loi Bernouilli B(0.5)=Binomiale(1,0.5)
# Mille lancers de la pièce de monnaie
>z=rbinom(1000,1,0.5)
> mean(z)
[1] 0.503
• Exercice : Essayez avec la loi normale