Il existe de nombreux phénomènes dans la réalité dus au hasard et il peut être utile, parfois numériquement, de pouvoir modéliser ces phénomènes pour balayer les différents cas/scénarios possibles. R est un logiciel d’analyse des données : il est donc bien évidemment possible de simuler des données selon n’importe quelle loi de probabilité.
Simuler des données selon une loi de probabilité
L’une des plus connues est la loi gaussienne (ou normale). Si vous ne la connaissez pas encore, laissez-moi vous la présenter ! La loi normale est l’une des lois de probabilité les plus adaptées pour modéliser des phénomènes naturels issus de plusieurs événements aléatoires. Ce sont l’ensemble de ces phénomènes où la majeure partie des individus se situent autour d’une moyenne, avec des proportions décroissantes en dessous et au-dessus de cette moyenne. Voici un exemple très parlant avec la répartition de la population par quotient intellectuel :

R vous permet de générer des nombres aléatoires selon cette loi : c’est-à-dire que l’on a beaucoup plus de chances d’avoir des valeurs proches de la moyenne (avec l’exemple ci-dessus, entre 85 et 115) que des valeurs un peu plus extrêmes (proche de 70 ou 130).
La syntaxe générale pour simuler selon une loi quelconque que nous noterons maloi
est :
rmaloi
pour simuler des données selonmaloi
, avecr
pour randomdmaloi
pour calculer la densité demaloi
pmaloi
pour calculer des probabilités demaloi
qmaloi
pour calculer des quantiles demaloi
Commençons par simuler 5 valeurs selon une loi normale. Nous allons donc utiliser r
pour random et norm
pour normale :
rnorm(5)
# [1] 1.8689633 -1.8802292 0.2101458 0.3831138 -1.0888056
Par défaut, R simule une loi normale centrée réduite, mais il est possible de changer les valeurs de la moyenne via l’argument mean, et l’écart-type via l’argument sd.
Afin de pouvoir répliquer des valeurs simulées, il est possible de fixer la graine du générateur de nombres aléatoires en utilisant la fonction set.seed
. Cela permet de répliquer une expérience aléatoire en limitant les variations :
set.seed(12345)
rnorm(5)
# [1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875
set.seed(12345)
rnorm(5)
# [1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875
Vous noterez que nous obtenons les mêmes résultats !
Autres fonctions autour des lois de probabilités
Pour calculer les probabilités, on utilise pnorm
. Ainsi, si l’on calcule pnorm(0)
, on devrait trouver 0,5 et pour pnorm(1.96)
, 97,5 % :
pnorm(0)
# [1] 0.5
pnorm(1.96)
# [1] 0.9750021
La fonction dnorm
calcule la densité et en appliquant :
gx <- seq(-3,3,length=100)
plot(gx,dnorm(gx),type="l")
on retrouve le dessin de la courbe gaussienne.
Enfin, pour calculer les quantiles d’une normale centrée réduite, on applique :
qnorm(c(0.025,0.5,1))
# [1] -1.959964 0.000000 Inf
Le quantile à 2,5 % vaut bien -1,96, la médiane 0 et le quantile à 1 vaut l’infini. Pour les autres lois, nous avons :
unif
pour uniformet
pour la loi de Studentf
pour la loi de Fisherexp
pour l’exponentiellepois
pour la loi de Poissonbinom
pour la loi binomiale
En résumé
Vous pouvez générer des nombres aléatoires avec R pour représenter des phénomènes ou distributions concrètes.
Vous pouvez simuler des données selon une loi donnée.
Vous pouvez calculer la densité d’une loi donnée.
Vous pouvez calculer les probabilités selon une loi donnée.
Vous pouvez calculer les quantiles selon une loi donnée.
A présent, nous allons aller un peu plus loin dans l'analyse statistique en découvrant comment localiser les données manquantes au sein d'un dataframe.