Introduction à R pour la statistique
Introduction à R pour la statistique
avec R
ISEM
R c’est quoi
2
Installation
Télécharger et installer R:
[Link]
Guide d’installation:
[Link]
3
Bus vs SUV
When talking about user friendliness of computer software I like the analogy of cars vs. busses: [...] Using this
analogy programs like SPSS are busses, easy to use for the standard things, but very frustrating if you want to do
something that is not already preprogrammed. R is a 4-wheel drive SUV (though environmentally friendly) with a
bike on the back, a kayak on top, good walking and running shoes in the passenger seat, and mountain climbing
and spelunking gear in the back. R can take you anywhere you want to go if you take time to learn how to use the
equipment, but that is going to take longer than learning where the bus stops are in SPSS.
4
Débuter avec R
5
Saisir des commandes dans la console R
L'une des choses à faire avec R est de l'utiliser comme une simple calculatrice.
Par exemple, essayez de taper 10 + 20, et appuyez sur la touche Entrée. Lorsque vous faites cela, vous
entrez une commande, et R va "exécuter" cette commande. Voici ce que vous voyez à l'écran :
> 10 + 20
[1] 30
6
Saisir des commandes dans la console R
10 + 20
## [1] 30
10+20
## [1] 30
7
Saisir des commandes dans la console R
R peut parfois dire que vous n'avez pas encore terminé (mais pas souvent)
> 10 +
+ 20
[1] 30
8
Addition, soustraction, multiplication et division
addition + 10 + 2 12
subtraction - 9-3 6
multiplication * 5*5 25
division / 10 / 3 3
power ^ 5^2 25
9
Effectuer les calculs dans le bon ordre
The “BEDMAS” order.22 That is, first calculate things inside Brackets (), then calculate Exponents ^, then
Division / and Multiplication *, then Addition + and Subtraction -
1 + 2 * 4
## ?
(1 + 2) * 4
## ?
4 / 2 * 3
## ?
10
Effectuer les calculs dans le bon ordre
The “BEDMAS” order.22 That is, first calculate things inside Brackets (), then calculate Exponents ^, then
Division / and Multiplication *, then Addition + and Subtraction -
1 + 2 * 4
## 9
(1 + 2) * 4
## 12
4 / 2 * 3
## 6
11
Stocker un nombre dans une variable
Vous pouvez considérer une variable comme une étiquette pour un certain élément d'information, ou
même plusieurs éléments d'information différents.
sales
## [1] 350
12
Stocker un nombre dans une variable
sales
## [1] 350
sales = 350
sales
## [1] 350
13
Effectuer des calculs à l'aide de variables
350 * 7
## [1] 2450
sales * royalty
## [1] 2450
14
Effectuer des calculs à l'aide de variables
revenue
## [1] 2450
revenue
## [1] 3000
15
Règles et conventions pour nommer les variables
16
Règles et conventions pour nommer les variables
if, else, repeat, while, function, for, in, next, break, TRUE, FALSE, NULL, Inf, NaN, NA, NA_integer_,
NA_real_, NA_complex_, NA_character_.
Ne vous sentez pas particulièrement obligé de les mémoriser : si vous faites une erreur et essayez
d'utiliser l'un des mots-clés comme nom de variable, R va retourner une erreur.
17
Conventions informelles
● Utiliser des noms de variables informatifs. En règle générale, il est préférable d'utiliser des noms
significatifs tels que ventes et revenus plutôt que des noms arbitraires tels que variable1 et
variable2.
● Utiliser des noms de variables courts.
● Choisir un style pour les variables à plusieurs mots. Par exemple pour “mon nouveau salaire”:
○ [Link]
○ mon_nouveau_salaire
○ monNouveauSalaire
18
Utiliser des fonctions pour effectuer des calculs
Lorsque nous utilisons une fonction pour faire quelque chose, nous appelons généralement cela l'appel de
la fonction, et les valeurs que nous saisissons dans la fonction (il peut y en avoir plusieurs) sont appelées
les arguments de cette fonction.
sqrt( 225 )
## [1] 15
abs( -13 )
## [1] 13
19
Utiliser des fonctions pour effectuer des calculs
Lorsque nous utilisons une fonction pour faire quelque chose, nous appelons généralement cela l'appel de
la fonction, et les valeurs que nous saisissons dans la fonction (il peut y en avoir plusieurs) sont appelées
les arguments de cette fonction.
sqrt( 225 )
## [1] 15
abs( -13 )
## [1] 13
sqrt( 1 + abs(-8) )
## [1] 3
20
Arguments, leurs noms et leurs valeurs par défaut
La fonction round() permet d'arrondir une valeur au nombre entier le plus proche.
round( 3.1415 )
## [1] 3
Pour arrondir à deux décimales : càd obtenir 3,14 comme résultat. La fonction round() vous permet
d'entrer un deuxième argument dans la fonction, qui spécifie le nombre de décimales auquel vous
voulez arrondir le nombre.
round( 3.14165, 2 )
## [1] 3.14
21
Arguments, leurs noms et leurs valeurs par défaut
La plupart des fonctions R utilisent des noms d'arguments. Pour la fonction round(), par exemple, le
nombre qui doit être arrondi est spécifié à l'aide de l'argument x, et le nombre de décimales auquel vous
voulez qu'il soit arrondi est spécifié à l'aide de l'argument digits.
22
Arguments, leurs noms et leurs valeurs par défaut
Lorsque vous spécifiez les arguments en utilisant leurs noms, l'ordre dans lequel vous les saisissez n'a pas
d'importance. Si vous n'utilisez pas les noms des arguments, vous devez les saisir dans le bon ordre.
round( 3.14165, 2 )
## [1] 3.14
round( 2, 3.14165 )
## [1] 2
23
Arguments, leurs noms et leurs valeurs par défaut
round( 3.1415 )
## [1] 3
Comment cela s'est-il produit ? L'argument digits a une valeur par défaut de 0, ce qui signifie que si
vous décidez de ne pas spécifier de valeur pour digits, R agira comme si vous aviez tapé digits = 0.
24
Laisser RStudio vous aider avec vos commandes
25
Stocker plusieurs nombres sous forme de vecteur
La façon la plus simple de créer une liste de valeurs dans R est d'utiliser la fonction de combinaison, c().
Pour ce faire, il suffit de taper tous les nombres que vous souhaitez stocker dans une liste séparée par
des virgules
[Link]
## [1] 0 100 200 50 0 0 0 0 0 0 0 0
26
Stocker plusieurs nombres sous forme de vecteur
[Link]
## [1] 0 100 200 50
## [5] 0 0 0 0
## [9] 0 0 0 0
Faute de place sur l'écran, R a imprimé les résultats sur trois lignes. La première ligne est précédée
d'un [1], tandis que la deuxième ligne commence par [5] et la troisième par [9]. Pour la première ligne, R
a imprimé le premier élément jusqu'au quatrième, et commence donc cette ligne par un [1]. Pour la
deuxième ligne, R a imprimé le 5e élément du vecteur jusqu'au 8e, et il commence donc cette ligne par
un [5] afin que vous puissiez savoir où il en est d'un coup d'œil.
27
Obtenir des informations à partir de vecteurs
[Link][2]
## [1] 100
[Link]
## [1] 100
28
Modification des éléments d'un vecteur
[Link][5] <- 25
[Link]
## [1] 0 100 200 50 25 0 0 0 0 0 0 0
29
Choses utiles à savoir sur les vecteurs
length( x = [Link] )
## [1] 12
[Link] * 7
## [1] 0 700 1400 350 175 0 0 0 0 0 0 0
30
Choses utiles à savoir sur les vecteurs
[Link] <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
profit <- [Link] * 7
Diviser un vecteur par un autre (division élément par élément), profit journalier:
profit / [Link]
## [1] 0.000000 25.000000 45.161290 11.666667 5.645161 0.000000 0.000000
## [8] 0.000000 0.000000 0.000000 0.000000 0.000000
31
Stockage des données texte
Parfois, vos données doivent être décrites à l'aide de texte, et non de chiffres. Pour cela, nous devons
considérer la situation où nos variables stockent du texte. Pour créer une variable qui stocke le mot
"hello", nous pouvons taper ceci :
greeting
## [1] "hello"
32
Stockage des données texte
R stocke l'intégralité du mot "hello" en un seul élément : notre variable " greeting" n' est pas un vecteur de
cinq lettres différentes. Elle ne comporte qu'un seul élément, qui correspond à l'ensemble de la chaîne de
caractères "hello".
greeting[1]
## [1] "hello"
33
Stockage des données texte
months[4]
## [1] "April"
34
Travailler avec du texte
nchar() est une fonction qui compte le nombre de caractères individuels qui composent une chaîne de
caractères
nchar( x = greeting )
## [1] 5
nchar( x = months )
## [1] 7 8 5 5 3 4 4 6 9 7 8 8
35
Évaluation des vérités mathématiques
2 + 2 = 5
## Error in 2 + 2 = 5: target of assignment expands to non-language
object
36
Évaluation des vérités mathématiques
Une valeur logique est une affirmation selon laquelle quelque chose est vraie ou fausse. Il existe deux
valeurs logiques, à savoir TRUE et FALSE.
Nous utilisons l'opérateur d'égalité, ==, pour forcer R à faire un jugement "vrai ou faux".
2 + 2 == 4
## [1] TRUE
2+2 == 5
## [1] FALSE
37
Évaluation des vérités mathématiques
Nous pouvons combiner des opérations logiques avec d'autres opérations et fonctions de manière plus
complexe.
sqrt( 25 ) == 5
## [1] TRUE
38
Évaluation des vérités mathématiques
operation operator example input answer
equal to == 2 == 3 FALSE
39
Évaluation des vérités mathématiques
operation operator example input answer
40
Évaluation des vérités mathématiques
Comme les autres opérateurs logiques, leur comportement est plus ou moins conforme à ce que l'on
attend de leur nom. Par exemple, si je vous demande d'évaluer l'affirmation "soit 2+2=4 , soit 2+2=5",
vous direz qu'elle est vraie.
(2+2 == 4) | (2+2 == 5)
## [1] TRUE
41
Évaluation des vérités mathématiques
Si je vous demande d'évaluer l'affirmation "2+2=4 et 2+2=5", vous répondrez qu'elle est fausse. Puisqu'il
s'agit d'une affirmation et, il faut que les deux parties soient vraies. C'est ce que fait l'opérateur & :
42
Évaluation des vérités mathématiques
Si je vous demande d'évaluer l’affirmation selon laquelle "il n'est pas vrai que 2+2=5", vous répondrez que
l’affirmation est vraie.
! (2+2 == 5)
## [1] TRUE
43
Évaluation des vérités mathématiques
! FALSE
## [1] TRUE
2+2 != 5
## [1] TRUE
44
Stockage et utilisation de données logiques
[Link] <- 2 + 2 == 5
[Link]
## [1] FALSE
45
Stockage et utilisation de données logiques
R offre un raccourci : vous pouvez utiliser T et F à la place de TRUE ou FALSE (mais c'est sensible à la
casse : t et f ne fonctionnent pas).
[Link] <- F
[Link]
## [1] FALSE
46
Vecteurs d'éléments logiques
Il est possible de stocker des vecteurs de valeurs logiques exactement de la même manière que de
stocker des vecteurs de nombres et des vecteurs de données textuelles.
47
Vecteurs d'éléments logiques
Il est possible aussi de produire un vecteur de logiques en appliquant un opérateur logique à un vecteur
[Link] > 0
## [1] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [12] FALSE
48
Vecteurs d'éléments logiques
49
Appliquer une opération logique à un texte
Je peux demander à R si le mot "cat" est le même que le mot "dog", comme ceci :
"cat" == "dog"
## [1] FALSE
"cat" == "cat"
## [1] TRUE
50
Appliquer une opération logique à un texte
Si deux chaînes diffèrent de quelque manière que ce soit, R dira qu'elles ne sont pas égales l'une à l'autre
"cat" == "CAT"
## [1] FALSE
51
Extraction de plusieurs éléments
d’un vecteur
52
Indexation des vecteurs
Pour extraire une information d'un vecteur, on tape quelque chose comme months[4]; et R imprime le
quatrième élément du vecteur mois
months[4]
## [1] "April"
53
Extraction de plusieurs éléments
Pour extraire plus d'un élément à la fois. Nous pouvons également utiliser un vecteur. Supposons que je
veuille les données de février, mars et avril. Je pourrais utiliser le vecteur c(2,3,4) pour indiquer les
éléments que je veux extraire.
[Link][ c(2,3,4) ]
## [1] 100 200 50
54
Extraction de plusieurs éléments
Notez que l'ordre est important ici. Si j'ai demandé les données dans l'ordre inverse (c'est-à-dire avril
d'abord, puis mars, puis février) en utilisant le vecteur c(4,3,2), alors R fournit les données dans l'ordre
inverse :
[Link] <- c(0, 100, 200, 50, 0, 0, 0, 0, 0, 0, 0, 0)
[Link][ c(2,3,4) ]
## [1] 100 200 50
[Link][ c(4,3,2) ]
## [1] 50 200 100
55
Extraction de plusieurs éléments
R vous fournit des raccourcis pratiques pour des situations très courantes.
[Link] <- c(0, 100, 200, 50, 0, 0, 0, 0, 0, 0, 0, 0)
[Link][ c(2,3,4,5,6,7,8) ]
## [1] 100 200 50 25 0 0 0
2:8
## [1] 2 3 4 5 6 7 8
[Link][2:8]
## [1] 100 200 50 25 0 0 0
56
Extraction de plusieurs éléments
Indexation logique
57
Extraction de plusieurs éléments
Indexation logique
months[ [Link] ]
## [1] "February" "March" "April" "May"
58
Extraction de plusieurs éléments
Indexation logique
## [1] "high" "high" "low" "out" "out" "high" "high" "high" "high" "high"
## [11] "high" "high"
months[[Link] == "out"]
## [1] "April" "May"
59
Extraction de plusieurs éléments
Indexation logique
[Link]
## [1] "high" "high" "low" "out" "out" "high" "high" "high" "high" "high"
## [11] "high" "high"
months[[Link] != "high" ]
## [1] "March" "April" "May"
60
Extraction de plusieurs éléments
Le caractère de commentaire, #, indique à R d'ignorer tout ce que vous avez écrit sur cette ligne.
## [1] 8.539539
61
Installation et chargement de
packages
62
Installation et chargement de packages
Un package est une grande collection de fonctions, d'ensembles de données et d'autres objets R
regroupés sous un nom commun.
Certains packages sont déjà installés lorsque vous installez R sur votre ordinateur, mais la grande
majorité sont disponibles sur l'internet.
63
Installation et chargement de packages
Installer un package
[Link]("tidyverse")
Charger un package
library(tidyverse)
Décharger un package:
detach("package:tidyverse", unload=TRUE)
64
Installation et chargement de packages
Dans le cas où le package à décharger est utilisé, comme dépendance, par un autre package déjà chargé. R
va refuser de le décharger car cela vous empêche de supprimer accidentellement quelque chose dont
vous avez encore besoin. Ainsi, si je veux supprimer à la fois Matrix et lattice, je dois le faire dans le bon
ordre
library( Matrix )
## Loading required package: lattice
detach("package:lattice", unload=TRUE)
## Error: package `lattice' is required by `Matrix' so will not be detached
65
Gestion de l'espace de travail
66
Lister le contenu de l'espace de travail
La façon la plus simple de procéder est d'utiliser le panneau "Environnement" dans le coin supérieur droit.
Si vous utilisez la ligne de commande, la fonction objects() peut s'avérer utile
objects()
## [1] "[Link]" "msg" "[Link]" "x"
La fonction rm() permet de supprimer les variables dont vous n’avez plus besoin, elle consiste simplement
à saisir une liste (séparée par des virgules) de toutes les variables que vous souhaitez supprimer.
rm( [Link], x )
who()
## -- Name -- -- Class -- -- Size –
## [Link] character 3
## msg character 1
68
Naviguer dans le système de fichiers
getwd()
## [1] "/Users/khalid"
setwd("./Documents/Teaching/data")
setwd("/Users/khalid/Documents/Teaching/data")
69
Naviguer dans le système de fichiers
getwd()
## [1] "/Users/khalid"
setwd("./Documents/Teaching/data")
setwd("/Users/khalid/Documents/Teaching/data")
setwd( "C:/Users/khalid/data" )
setwd( "C:\\Users\\khalid\\data" )
70
Naviguer dans le système de fichiers
[Link]()
## [1] "Applications" "[Link]" "[Link]"
71
Chargement et enregistrement des données
● Les fichiers de l'espace de travail sont ceux qui portent l'extension .Rdata. Il s'agit du type de
fichier standard utilisé par R pour stocker les données et les variables.
● Les fichiers de valeurs séparées par des virgules (CSV ) portent l'extension .csv. Il s'agit de fichiers
texte classiques, qui peuvent être ouverts avec presque tous les logiciels.
● Les fichiers de script sont ceux qui portent l'extension .R. Ils servent à enregistrer une collection
de commandes que vous voulez que R exécute plus tard.
72
Enregistrement d'un fichier d'espace de travail
Si vous souhaitez enregistrer toutes les variables de votre espace de travail dans le fichier de
données, vous devez utiliser [Link](). Et si vous voulez que R enregistre le fichier dans le
répertoire de travail actuel, tout ce que vous avez à faire est ceci :
[Link]( "[Link]" )
73
Enregistrement d'un fichier d'espace de travail
who()
## -- Name -- -- Class -- -- Size –
## data [Link] 3 x 2
## handy character 1
## junk numeric 1
74
Enregistrement d'un fichier d'espace de travail
75
Chargement des fichiers de l'espace de travail
Vous pouvez utiliser la fonction load() en donnant un chemin absolu ou relatif, ou en se déplaçant au
répertoire contenant le fichier avant en utilisant setwd()
Les nouvelles variables apparaîtront dans l'espace de travail (vous les verrez dans le panneau
Environnement de RStudio, ou si vous tapez who()
76
Importation de données à partir de fichiers CSV
Les fichiers CSV sont de simples fichiers texte avec séparateur. La fonction [Link]() permet d’ouvrir ce
type de fichiers. Il n'y a que deux arguments à la fonction que je vais mentionner :
77
Choses utiles à savoir sur les
variables
78
Valeurs spéciales
Ces valeurs sont Inf, NaN, NA et NULL. Ces valeurs peuvent apparaître à différents endroits et il est
donc important de comprendre ce qu'elles signifient.
Infinity(Inf) correspond à une valeur infiniment grande. Il est également possible d'avoir -Inf. La façon
la plus simple d'obtenir Inf est de diviser un nombre positif par 0 :
1 / 0
## [1] Inf
79
Valeurs spéciales
NaN c'est l'abréviation de "Not a Number" (pas un nombre),il est conventionnel de dire par exemple
que 0/0 n'a pas de réponse correcte : les mathématiciens diraient que 0/0 est indéfini. R dit que ce
n'est pas un nombre.
0 / 0
## [1] NaN
80
Valeurs spéciales
NA (Not Available) indique que la valeur qui est "censée" être stockée ici est manquante. C'est quelque
chose que l'on a le plus de chances de voir lors de l'analyse de données provenant d'expériences réelles.
Il arrive que l'équipement tombe en panne, que l'on perde une partie des données, etc.
Notez la différence entre NA et NaN. Dans le cas de NaN, nous savons réellement ce qui est censé être
stocké, mais il se trouve que cela correspond à quelque chose comme 0/0 qui n'a aucun sens. En
revanche, NA indique que nous ne savons pas ce qui est censé être stocké. L'information est
manquante.
81
Valeurs spéciales
NULL affirme que la variable n'a aucune valeur. C'est très différent de NaN et NA. Dans le cas de NaN,
nous savons en fait quelle est la valeur, car il s'agit de quelque chose d'insensé comme 0/0. Pour NA,
nous pensons qu'il est censé y avoir une valeur, mais nous ne savons donc pas exactement ce que c'est.
Mais pour NULL, nous croyons fermement qu'il n'y a pas de valeur du tout.
82
Attribution de noms aux éléments d’un vecteur
Supposons que je dispose de données sur les bénéfices trimestriels d'une entreprise. Si je me contente
de créer un vecteur, je dois faire appel à ma mémoire pour savoir quel élément correspond à quel
événement.
83
Attribution de noms aux éléments d’un vecteur
profit <- c( "Q1" = 3.1, "Q2" = 0.1, "Q3" = -1.4, "Q4" = 1.1 )
profit
## Q1 Q2 Q3 Q4
## 3.1 0.1 -1.4 1.1
profit["Q1"]
## Q1
## 3.1
84
Classes de variables
Les variables que nous avons définies jusqu'à présent étaient soit des données de caractères (texte),
soit des données numériques, soit des données logiques. La fonction class() permet de rappeler quel
type d'information chaque variable stocke.
Les variables à échelle nominale, par exemple niveau de satisfaction de 1 à 4, peuvent être représentée
sous forme de factors:
satisfaction
## [1] 1 1 1 2 2 2 3 3 4
## Levels: 1 2 3 4
86
Factors
Il n’y a pas de sens à ajouter les niveaux 1 à 2 et trouver le niveau 3, même s’il s’agit d’une variable
numérique.
class(satisfaction)
## [1] "factor"
satisfaction + 2
## Warning in [Link](satisfaction, 2): '+' not meaningful for factors
## [1] NA NA NA NA NA NA NA NA NA
87
Factors
print(group)
## [1] group 1 group 1 group 1 group 2 group 2 group 2 group 3 group 3 group 3
## Levels: group 1 group 2 group 3
88
Data frames
Les tableaux de données ( dataframes en anglais) sont une structure particulière sur R. Elles
permettent de stocker un jeu de données composé de différents individus (ou observations) en ligne et
de différentes variables en colonne.
age <- c(17, 19, 21, 37, 18, 19, 47, 18, 19)
gender <- c(1, 1, 1, 1, 1, 2, 2, 2, 2)
group <- c(1,1,1,2,2,2,3,3,3)
score <- c(12, 10, 11, 15, 16, 14, 25, 21, 29)
89
Data frames
expt
## age gender group score
## 1 17 male group 1 12
## 2 19 male group 1 10
## 3 21 male group 1 11
## 4 37 male group 2 15
## 5 18 male group 2 16
## 6 19 female group 2 14
## 7 47 female group 3 25
90
Data frames
Pour extraire la variable qui vous intéresse à l’intérieur d’un data frame, on utilise le $
expt$score
## [1] 12 10 11 15 16 14 25 21 29
Pour voir les noms des variables à l’intérieur d’un data frame, on utilise names()
names(expt)
## [1] "age" "gender" "group" "score"
91
Data frames
who(expand = TRUE)
92
Listes
Une liste est un objet spécial dont les éléments peuvent être de toute nature (y compris d'autres listes).
Pour créer une liste, il suffit d'utiliser la fonction list() et d'écrire entre les parenthèses les différents
éléments.
93
Listes
print( Omar )
## $age
## [1] 34
##
## $student
## [1] TRUE
##
## $parents
## [1] "Adil" "Mouna"
94
Listes
Omar$student
## [1] TRUE
?load
help("load")
??load
[Link]("load")
96
Statistiques descriptives
Mesures de tendance centrale
97
Mesures de tendance centrale
Les mesures de tendance centrale s’intéressent aux valeurs qui sont "au milieu" ou "populaires" dans les
données. Comme la moyenne, la médiane pour les variables quantitatives, ou le mode pour les variables
qualitatives.
98
Moyenne
La moyenne d'un ensemble d'observations est simplement une moyenne normale : il suffit d'additionner
toutes les valeurs, puis de les diviser par le nombre total de valeurs.
(10 + 12 + 14 + 8 + 15) / 5
## [1] 11.8
99
Moyenne
Nous pouvons utiliser la fonction mean()pour calculer la moyenne d'un ensemble d'observations.
mean( x = notes )
## [1] 11.8
100
Moyenne
mean( notes[1:3] )
## [1] 12
sum( notes[1:3] ) / 3
## [1] 12
101
Médiane
La médiane d'un ensemble d'observations est simplement la valeur du milieu. Pour déterminer la
médiane, nous classons ces chiffres par ordre croissant :
8,31,32,56,56
Il est évident que la valeur médiane de ces 5 observations est 32, puisque c'est celle qui se trouve au
milieu de la liste triée.
102
Médiane
8,14,31,32,56,56
la médiane est définie comme la moyenne de ces deux nombres, qui est bien sûr 31,5. La médiane est
définie comme la moyenne de ces deux nombres, qui est bien sûr 31,5.
103
Médiane
median( x = notes )
## [1] 12
104
Moyenne ou médiane ? Quelle est la différence ?
105
Moyenne ou médiane ? Quelle est la différence ?
Pour donner un exemple concret, supposons que Bob (revenu de 50 000 $), Kate (revenu de 60 000
$) et Jane (revenu de 65 000 $) soient assis à une table : le revenu moyen à la table est de 58 333 $ et
le revenu médian est de 60 000 $.
Puis Bill s'assit à côté d'elles (revenu de 100 000 000 $). Le revenu moyen est passé à 25 043 750
dollars, mais le revenu médian ne s'élève qu'à 62 500 dollars.
Si vous vous intéressez au revenu global de la table, la moyenne peut être la bonne réponse ; mais si
vous vous intéressez à ce qui compte comme un revenu typique de la table, la médiane serait un
meilleur choix ici.
106
Moyenne ajustée
La moyenne ajustée est utilisée pour corriger les moyennes statistiques qui incluent des déséquilibres
évidents en raison de valeurs aberrantes dans l’ensemble de données.
mean( x = dataset )
## [1] 12.9
median( x = dataset )
## [1] 5.5
107
Moyenne ajustée
Si nous prenons une moyenne ajustée de 10 %, nous laisserons de côté les valeurs extrêmes de chaque
côté et nous prendrons la moyenne du reste :
108
Mode
Le mode, ou valeur dominante, est la valeur la plus représentée d'une variable quelconque dans une
population donnée.
table( mentions )
## ABien Bien Passable TBien
## 1 3 2 1
109
Mode
Pour avoir le mode, nous pouvons utiliser la fonction modeOf() du package lsr. La fonction
maxFreq()donne la fréquence, ou nombre d'occurrences du mode.
library(lsr)
modeOf(mentions)
## [1] "Bien"
maxFreq(mentions)
## [1] 3
110
Statistiques descriptives
Mesures de variabilité
111
Mesures de variabilité
Les mesures de la variabilité des données s’intéressent aux questions suivantes: dans quelle mesure les
données sont-elles "étalées" ? À quel point les valeurs observées ont-elles tendance à s'éloigner de la
moyenne ou de la médiane ?
112
Étendue ou Range
Le Range est l’étendue d' une variable entre la plus grande valeur et la plus petite. Nous pouvons calculer
ces valeurs dans R à l'aide des fonctions max() et min():
min( notes )
## [1] 7
range( notes )
## [1] 7 18
113
Quantile
Le 10e quantile (ou percentile) d'un ensemble de données est le plus petit nombre x tel que 10 % des
données sont inférieures à x.
114
Intervalle interquartile (Inter Quartile Range)
L'intervalle interquartile (IQR) calcule la différence entre le 25e quantile et le 75e quantile. En d'autres
termes, un quart des données est inférieur au 25e centile, un quart des données est supérieur au 75e
centile, ce qui laisse la "moitié médiane" des données entre les deux.
IQR( x = notes )
## [1] 4
115
Variance
La variance est une mesure de dispersion. Elle saisit dans quelle mesure les données se situent autour de
la moyenne. Si nous avons des données très supérieures et très inférieures à la moyenne, la moyenne sera
moins représentative, ce qui se traduira par une variance élevée.
var(notes)
## [1] 14.47619
116
Écart-type (Standard Deviation)
L'écart-type sert à mesurer la dispersion, ou l'étalement, d'un ensemble de valeurs autour de leur
moyenne. Plus l'écart-type est faible, plus la population est homogène. C'est la racine carrée de la
variance.
sd( notes )
## [1] 3.804759
117
Quelle mesure utiliser?
● L'étendue nous donne l'étendue complète des données. Elle est très vulnérable aux valeurs
aberrantes et n'est donc pas souvent utilisée.
● L'écart interquartile indique où se situe la "moitié moyenne" des données. Il est assez robuste et
complète bien la médiane. Il est très utilisé.
● La variance indique l'écart moyen au carré par rapport à la moyenne. C'est une bonne façon de
décrire la variation autour de la moyenne, mais c'est totalement ininterprétable parce qu'elle
n'utilise pas les mêmes unités que les données. Elle n'est pratiquement jamais utilisée.
● L’écart-type est la racine carrée de la variance. Il est exprimé dans les mêmes unités que les
données, de sorte qu'il peut être interprété assez facilement. C'est de loin la mesure de variation la
plus populaire.
118
Obtenir un résumé général d'une variable
La fonction summary() est une fonction générique. L'idée de base de la fonction summary() est qu'elle
affiche des informations utiles sur l'objet (c'est-à-dire la variable, en ce qui nous concerne) que vous
spécifiez en tant qu'argument de l'objet. Le comportement de la fonction summary() diffère selon la
classe de l'objet que vous lui donnez. Commençons par lui donner un objet numérique:
119
Obtenir un résumé général d'une variable
reponses <-c(T, T, F, F, F, T, F, T, T, T)
Nous pouvons utiliser aussi la même fonction pour les objets de type factor ou dataframe.
120
Gestion des valeurs manquantes
Les ensembles de données réelles comportent très souvent des valeurs manquantes : quelqu'un a peut-
être oublié de répondre à une question d'enquête particulière, par exemple.
notes <-c(12,17,NA,20,7,15)
mean( x = notes )
## [1] NA
121
Correlation
122
Analyse de corrélation
123
Analyse de corrélation
# Sample data
study_hours <- c(5, 7, 3, 8, 6, 9)
exam_scores <- c(80, 85, 60, 90, 75, 95)
Output
[1] 0.9569094
124
Visualiser les données et la corrélation
125
Graphiques
126
Tracer des graphiques
La visualisation des données est l'une des tâches les plus importantes de l'analyste de données. Elle est
importante pour deux raisons distinctes mais étroitement liées.
● L'affichage de vos données d'une manière propre et visuellement attrayante permet à votre lecteur
de comprendre plus facilement ce que vous essayez de lui dire.
● Le fait de dessiner des graphiques vous aide vous même à comprendre les données.
127
Tracer des graphiques
128
Tracer des graphiques
plot( x = Fibonacci,
main = "You specify title using the 'main' argument",
sub = "The subtitle appears here! (Use the 'sub'
argument for this)",
xlab = "The x-axis label is 'xlab'",
ylab = "The y-axis label is 'ylab'"
)
129
Tracer des graphiques
130
131
Tracer des graphiques
132
Diagramme à barres
barplot( Fibonacci,
main = "Graphique à barres",
xlab = "Index",
ylab = "Fibonacci"
)
133
Diagramme circulaire
pie(depenses,
main = "Diagramme circulaire",
)
134
Diagramme en boîte
boxplot(notes,
main = "boxplot"
)
135
Diagrammes multiples
136
Sauvegarder un diagramme en tant qu’image
Pour sauvegarder un diagramme sous forme d'image, il faut suivre les étapes suivantes. Veuillez noter
que nous devons appeler la fonction [Link]() pour sauvegarder le fichier.
137
Filtrer les données
138
Filtrer les données
La fonction filter() est utilisée pour produire un sous-ensemble de la base de données, en conservant
toutes les lignes qui satisfont aux conditions spécifiées.
Les expressions comprennent des opérateurs de comparaison (==, >, >= ), des opérateurs logiques (&, |, !,
xor()), des opérateurs de plage (between(), near()) ainsi qu'une vérification de la valeur NA par rapport
aux valeurs des colonnes.
139
Filtrer les données
library(dplyr)
# sample data
df=[Link](x=c(12,31,4,66,78),
y=c(22.1,44.5,6.1,43.1,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
# condition
filter(df, x<50 & z==TRUE)
140
Filtrer les données
library(dplyr)
df=[Link](x=c(12,31,4,66,78),
y=c(22.1,44.5,6.1,43.1,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
df %>%
filter(y < 45, z != FALSE)
141
Filtrer les données
La fonction [Link]() accepte une valeur et renvoie VRAI s'il s'agit d'une valeur NA et FAUX s'il ne s'agit pas
d'une valeur NA.
library(dplyr)
df=[Link](x=c(12,31,NA,NA,NA),
y=c(22.1,44.5,6.1,10,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
df %>% filter()
142
Filtrer les données
L'opérateur %in% est utilisé pour filtrer uniquement les colonnes qui contiennent les données fournies
dans le vecteur.
library(dplyr)
df=[Link](x=c(12,31,10,2,99),
y=c(22.1,44.5,6.1,10,99),
z=c("Apple","Guava", "Mango", "Apple","Mango"))
df %>%
filter(z %in% c("Apple", "Mango"))
143
Concepts additionnels
144
Ajouter une colonne à un dataframe
145
Supprimer des colonnes d’un dataframe
print('Original dataframe:-')
df2
146
Modifier les noms des colonnes d’un dataframe
148
Fusion de deux dataframes
149
R scripts
150
R scripts
Ecrire un script
## --- helloWorld.R
x <- "hello world"
print(x)
source( "helloWorld.R" )
151
Boucles
Boucle while()
## --- while.R
x <- 0
while ( x < 100 ) {
x <- x + 1
}
print( x )
152
Boucles
Boucle for()
## --- for.R
for ( i in 1:3 ) {
print( "hello" )
}
153
Boucles
## --- for2.R
words <- c("you","decide",”now”)
for ( w in words ) {
[Link] <- nchar( w ) # calculate the number of letters
W <- toupper( w ) # convert the word to upper case letters
msg <- paste( W, "has", [Link], "letters" ) # a message to print
print( msg ) # print it
}
154
Conditions
## --- ifElse.R
# find out what day it is…
today <- [Link]() # pull the date from the system clock
day <- weekdays( today ) # what day of the week it is_
# now make a choice depending on the day…
if ( day == "Monday" ) {
print( "I don't like Mondays" )
} else {
print( "I'm a happy" )
}
155
Fonctions
## --- function1.R
addition <- function(x, y) {
z <- x + y
return(z)
}
156
Fonctions
## --- function1.R
puissance <- function(x, y = 1) {
#if y is not specified, the default value 1 will be used
z <- x^y
return(z)
}
157
R Markdown
158
R Markdown
R Markdown est un format de fichier qui combine du code R, du texte et la sortie du code en un seul
document. Il serait utile de produire des rapports incluant à la fois le code et votre narration.
Les documents R Markdown sont des fichiers de texte simple que vous pouvez éditer à l'aide de n'importe
quel éditeur de texte, y compris RStudio. En général, les fichiers R Markdown portent l'extension de nom
de fichier ".Rmd". Les fichiers R Markdown peuvent être convertis en plusieurs formats, y compris HTML
et PDF.
[Link]('rmarkdown')
159
R Markdown
RStudio vous fournira un modèle. Vous pouvez commencer votre travail d'édition à partir d'ici.
Une fois que vous avez fini d'éditer votre document R Markdown, vous pouvez l'enregistrer en tant que
fichier *.Rmd en texte clair. Vous pouvez également exporter le document au format HTML ou PDF.
RStudio appelle cela knit (pour tricoter). Vous pouvez le faire dans le menu Fichiers ou dans la barre
d'outils.
160
R Markdown
Par exemple, vous pouvez créer un titre avec ## et une liste à puces avec *.
Il est facile à apprendre et à mémoriser. Il est facile de trouver sur l'internet une "Markdown cheat sheet".
Vous trouverez dans le slide suivant un exemple de syntaxe Markdown courante.
161
R Markdown
# Level-1 header
This is a markdown document.
## Level-2 header
You can make **bold** or *italic* in text. You can also create a
[link]([Link]
New paragraph needs a blank line to separate. And you can create a bulleted list:
* list item 1
* list item 2
* list item 2.1
* list item 3
or a numbered list:
1. list item
2. list item
162
R Markdown
```{r}
# r code here
```
Les morceaux de code sont évalués lorsque vous faites un Knit de votre document R Markdown. Vous
verrez à la fois le code source R et la sortie évaluée.
163
R Markdown
Si vous ne voulez que la sortie mais pas le code qui l'a créée, vous ajoutez le paramètre echo=FALSE,
comme suit :
```{r, echo=FALSE}
# r code here
```
164
R Markdown
[Link]
165