7.3 Distribution uniforme

La loi de la distribution uniforme se rapporte à un mécanisme qui génère tous les évènements de manière équiprobable.

7.3.1 Distribution discrète

Dans le cas d’évènements discrets, si \(n_E\) est le nombre total d’évènements possibles, la probabilité d’un de ces évènements vaut donc :

\[\mathrm{P}(E) = \frac{1}{n_E}\]

La distribution uniforme est d’application pour les jeux de hasard (dés, boules de loto, …). En biologie, elle est plus rare. Dans le cas d’un sexe ratio de 1:1 (autant de mâles que de femelles), la probabilité qu’un nouveau né soit un mâle ou une femelle suit une distribution uniforme et vaut 1/2. La distribution spatiale des individus dans une population biologique peut être uniforme lorsque les individus interagissent de telle manière que la distance entre eux soit identique (par exemple, dans un groupe de manchots Aptenodytes patagonicus sur la banquise). Imaginons un animal hypothétique pour lequel la portée peut être de 1 à 4 petits de manière équiprobable. Nous avons alors 1/4 des portées qui présentent respectivement, 1, 2, 3 ou 4 petits (Fig. 7.1).

Probabilité du nombre de petits dans une portée qui suivrait un distribution strictement uniforme entre 1 et 4.

Figure 7.1: Probabilité du nombre de petits dans une portée qui suivrait un distribution strictement uniforme entre 1 et 4.

7.3.2 Distribution continue

Nous avons déjà évoqué le fait que les probabilités issues de distributions continues ne se traitent pas comme celles de probabilités discrètes. Il est maintenant temps d’approfondir la question. Considérons une distribution uniforme considérée comme discrète, mais admettant un très grand nombre d’évènements équiprobables (avec ce nombre tendant vers l’infini). Donc, la probabilité de chaque évènement est un divisé par le nombre d’évènements possibles \(n_E = \infty\) :

\[\mathrm{P}(E) = \frac{1}{n_E} = \frac{1}{\infty} = 0\]

… et ce calcul est correct ! Il correspond d’ailleurs au résultat pour une loi de distribution continue.

Dans le cas de probabilités continues, la probabilité d’un évènement en particulier est toujours nulle. Nous pouvons seulement calculer que l’un parmi plusieurs évènements se produise (compris dans un intervalle).

La représentation graphique d’une loi de distribution continue est un outil utile pour la comprendre et vérifier ses calculs. La forme la plus courante consiste à montrer la courbe de densité de probabilité pour une distribution continue. Sur l’axe X, nous avons les quantiles (les valeurs observables), et sur l’axe Y, la densité de probabilité30. Par exemple, si nous constatons qu’un insecte butineur arrive sur une fleur en moyenne toutes les 4 minutes, la probabilité qu’un butineur arrive dans un intervalle de temps compris entre 0 et 4 min depuis le moment initial \(t_0\) de nos observations suit une distribution uniforme continue (Fig. 7.2).

Probabilité qu'un nouvel insecte butineur arrive dans un intervalle de 0 à 4 min si, en moyenne, un insecte arrive toutes les 4 min.

Figure 7.2: Probabilité qu’un nouvel insecte butineur arrive dans un intervalle de 0 à 4 min si, en moyenne, un insecte arrive toutes les 4 min.

Une autre représentation courante est la densité de probabilité cumulée qui représente la probabilité d’observer un quantile ou moins. Dans le cas présent, cela représente la probabilité qu’au moins un insecte butineur soit observé pour des durées d’observation croissantes (Fig. 7.3).

Probabilité cumulée qu'un nouvel insecte butineur arrive dans un intervalle de 0 à 4 min si, en moyenne, un insecte arrive toutes les 4 min.

Figure 7.3: Probabilité cumulée qu’un nouvel insecte butineur arrive dans un intervalle de 0 à 4 min si, en moyenne, un insecte arrive toutes les 4 min.

Notation : nous noterons qu’une variable suit une loi de distribution comme ceci (le tilde ~ se lit “suit une distribution,” et U représente la distribution uniforme avec entre parenthèses, les paramètres de la distribution, ici, les bornes inférieure et supérieure de la distribution) :

\[X \sim U(0, 4)\]

Cela signifie : “la variable aléatoire X suit une distribution uniforme 0 à 4.”

La distribution \(U(0, 1)\) est particulière et est appelée distribution uniforme standard. Elle a la propriété particulière que si \(X \sim U(0, 1)\) alors \((1-X) \sim U(0, 1)\).

À vous de jouer !
h5p

7.3.3 Quantiles vers probabilités

L’aire sous la courbe représente une probabilité associée à l’intervalle considéré pour les quantiles qui bornent l’aire calculée. Concrètement, quelle est la probabilité que X, le temps d’attente pour observer un insecte butineur, soit compris entre 1 et 1.5 min ? Nous pouvons répondre en calculant l’aire sous la courbe entre les quantiles 1 et 1.5 (représentée par l’aire en rouge à la Fig. 7.4).

Probabilité qu'un insecte butineur arrive entre 1 et 1.5 min après le début d'une observation (aire P en rouge).

Figure 7.4: Probabilité qu’un insecte butineur arrive entre 1 et 1.5 min après le début d’une observation (aire P en rouge).

Ici, le calcul est assez simple à faire à la main. Mais nous verrons d’autres lois de distribution plus complexes. Dans tous les cas, R offre des fonctions qui calculent les aires à gauche ou à droite d’un quantile donné. Le nom de la fonction est toujours p<distri>(), avec pour la distribution uniforme punif(). L’aire à gauche du quantile nécessite de spécifier l’argument lower.tail = TRUE (“queue en bas de la distribution” en anglais). Pour l’aire à droite, on indiquera évidemment lower.tail = FALSE. Donc, pour calculer la probabilité qu’un insecte arrive en moins de 1.5 minutes, nous écrirons :

punif(1.5, min = 0, max = 4, lower.tail = TRUE)
# [1] 0.375
À vous de jouer !
h5p

Mais comme nous voulons déterminer la probabilité qu’un insecte arrive entre 1 et 1.5 minutes, nous devons soustraire à cette valeur la probabilité qu’un insecte arrive en moins de 1 min (la zone hachurée en rouge dans la Fig 7.4 est en effet l’aire à gauche depuis le quantile 1.5 moins l’aire à gauche depuis le quantile 1) :

punif(1.5, min = 0, max = 4, lower.tail = TRUE) -
punif(1.0, min = 0, max = 4, lower.tail = TRUE)
# [1] 0.125

La réponse est 0.125, soit une fois sur huit observations, en moyenne, le temps d’attente enregistré sera compris entre 1 et 1.5 minutes.

Le calcul de probabilités sur base de lois de distributions continues se fait via les aires à gauche ou à droite d’un quantile sur le graphique de densité de probabilité. Pour une aire centrale, nous soustrayons les aires à gauche des deux quantiles respectifs.

7.3.4 Probabilités vers quantiles

Le calcul inverse est parfois nécessaire. Par exemple pour répondre à la question suivante :

  • Combien de temps devons-nous patienter pour observer l’arrivée d’un insecte butineur sur la fleur une fois sur trois observations en moyenne ?

Ici, nous partons d’une probabilité (1/3) et voulons déterminer le quantile qui définit une aire à gauche de 1/3 sur le graphique (Fig. 7.5).

Temps d'observation nécessaire (quantile Q) pour voir arriver un butineur une fois sur trois (aire P en rouge de 1/3 à gauche de Q).

Figure 7.5: Temps d’observation nécessaire (quantile Q) pour voir arriver un butineur une fois sur trois (aire P en rouge de 1/3 à gauche de Q).

Dans R, la fonction qui effectue ce calcul est q<distri>(). Donc ici, il s’agit de qunif(). Les arguments sont les mêmes que pour punif() sauf le premier qui est une ou plusieurs probabilités. Nous répondons à la question de la façon suivante :

qunif(1/3, min = 0, max = 4, lower.tail = TRUE)
# [1] 1.333333

Donc il faut observer pendant 1.33 min (1 min et 20 sec) pour avoir une chance sur trois d’observer l’arrivée d’un insecte butineur.

À vous de jouer !
h5p

7.3.5 Calcul avec les snippets

La SciViews Box propose différents snippets pour nous aider à effectuer nos calculs et graphiques relatifs à la distribution uniforme continue. Ils se retrouvent dans le menu (d)istributions accédé depuis .... Donc ..i donne directement accès à ce menu, et puis (d)istributions: uniform accédé depuis .iu directement. Ensuite, il suffit de choisir le snippet dans le menu déroulant (voir ci-dessous).

  • .iuproba : calcul de probabilités depuis des quantiles
  • .iuquant : calcul de quantile depuis des probabilités
  • .iurandom : génération de nombres pseudo-aléatoires selon cette distribution
  • .iudens : graphique de la densité de probabilité
  • .iucumul : graphique de la densité de probabilité cumulée
  • .iullabel : ajout d’un label sur le graphique à gauche
  • .iurlabel: ajout d’un label sur le graphique à droite

Le snippet .iurandom nécessite quelques explications supplémentaires. R est capable de simuler la génération de nombres aléatoires selon différentes lois de distribution (r<distri>()). runif() est la fonction qui le fait pour une distribution uniforme continue. Comme il ne s’agit pas réellement de nombres aléatoires, on parle de générateur de nombres pseudo-aléatoires. En fait, il s’agit d’une série de nombres qui a les mêmes propriétés que des nombres réellement aléatoires à peu de choses près. R se positionne au hasard dans cette série. Donc, à chaque fois que vous appelez la fonction runif(), vous obtenez logiquement des valeurs différentes. A des fins de reproductibilité, il est possible de forcer R à partir en un point précis de la série avec la fonction set.seed() avec un nombre comme argument qui donne la position. Par exemple set.seed(281)31. La génération de nombres pseudo-aléatoires dans les instructions qui suivent seront alors toujours les mêmes. Voici un exemple de 10 nombres aléatoires générés depuis une distribution uniforme standard (compris entre 0 et 1). Chaque fois que vous exécuterez ces deux instructions exactement l’une après l’autre, vous obtiendrez toujours la même suite. Si vous ré-exécutez la seconde instruction sans la première, vous obtiendrez par contre une suite différente.

set.seed(946)
runif(10, min = 0, max = 1)
#  [1] 0.6378020 0.7524999 0.5593599 0.6688387 0.8989262 0.5300384 0.1520689
#  [8] 0.9031163 0.2693327 0.6738862
À vous de jouer !
h5p

  1. Plus la densité de probabilité est élevée, plus les évènements dans cette région du graphique sont probables.↩︎

  2. Si vous utilisez set.seed() prenez soin de spécifier toujours une valeur différente prise au hasard comme argument de la fonction !↩︎