Algorithmes en Python : espérance, variance et fréquences - Exercice 1

25 min
40
On considère le programme Python ci-dessous. La liste valeurs contient les valeurs x1x_{1}, …, xnx_{n} prises par une variable aléatoire XX, et la liste probas les probabilités p1p_{1}, …, pnp_{n} correspondantes, dans le même ordre.
Question 1

Expliquer ce que calcule la fonction esperance.

Correction
  • En Python, une liste s'écrit entre crochets : [-2, 1, 4]. Ses éléments sont numérotés à partir de 00 : si L = [-2, 1, 4], alors L[0] vaut −2-2 et len(L) vaut 33.
  • for i in range(n): fait prendre à i les valeurs 00, 11, …, n−1n-1.
La variable e part de 00. À chaque passage dans la boucle, on lui ajoute le produit valeurs[i] * probas[i], c'est-à-dire xi×pix_{i}\times p_{i}.
À la fin de la boucle, e contient x1×p1+x2×p2+…+xn×pnx_{1}\times p_{1}+x_{2}\times p_{2}+\ldots+x_{n}\times p_{n}.
Ainsi :
la fonction esperance renvoie l'espérance E(X)E\left(X\right)
Question 2

Que renvoie esperance([-2, 1, 4], [0.25, 0.5, 0.25]) ? Présenter les étapes dans un tableau de suivi.

Correction
On suit les valeurs des variables à chaque passage dans la boucle :
Ainsi :
l'appel renvoie 1.0, c'est-à-dire E(X)=(−2)×0,25+1×0,5+4×0,25=1E\left(X\right)=\left(-2\right)\times 0{,}25+1\times 0{,}5+4\times 0{,}25=1
Question 3

Que renvoient variance([-2, 1, 4], [0.25, 0.5, 0.25]) et ecart_type([-2, 1, 4], [0.25, 0.5, 0.25]) ?

Correction
La formule de l'écart type σ\sigma est obtenue après avoir calculé la variance VV. Les formules de la variance et de l'écart type sont données ci-dessous :
  • V(X)=∑pi×(xi−E(X))2V\left(X\right)=\sum p_{i}\times\left(x_{i}-E\left(X\right)\right)^{2}
  • σ(X)=V(X)\sigma\left(X\right)=\sqrt{V\left(X\right)}
La fonction variance calcule d'abord E(X)=1E\left(X\right)=1, puis ajoute les termes pi×(xi−E(X))2p_{i}\times\left(x_{i}-E\left(X\right)\right)^{2} :
V(X)=0,25×(−2−1)2+0,5×(1−1)2+0,25×(4−1)2V\left(X\right)=0{,}25\times\left(-2-1\right)^{2}+0{,}5\times\left(1-1\right)^{2}+0{,}25\times\left(4-1\right)^{2}
V(X)=0,25×9+0+0,25×9V\left(X\right)=0{,}25\times 9+0+0{,}25\times 9
D'où :
V(X)=4,5V\left(X\right)=4{,}5

La fonction ecart_type renvoie la racine carrée de la variance :
σ(X)=4,5\sigma\left(X\right)=\sqrt{4{,}5}
D'où :
σ(X)≈2,121\sigma\left(X\right)\approx 2{,}121

Ainsi, variance([-2, 1, 4], [0.25, 0.5, 0.25]) renvoie 4.5 et ecart_type([-2, 1, 4], [0.25, 0.5, 0.25]) renvoie 2.1213203435596424, soit environ 2,1212{,}121.
Question 4

Écrire une fonction variance_kh(valeurs, probas) qui calcule la variance avec la formule de König-Huygens, puis vérifier qu'elle donne le même résultat sur l'exemple.

Correction
Formule de König-Huygens :
  • V(X)=E(X2)−(E(X))2V\left(X\right)=E\left(X^{2}\right)-\left(E\left(X\right)\right)^{2} où E(X2)=∑xi2×pi=x12×p1+x22×p2+…+xn2×pnE\left(X^{2}\right)=\sum x_{i}^{2}\times p_{i}=x_{1}^{2}\times p_{1}+x_{2}^{2}\times p_{2}+\ldots+x_{n}^{2}\times p_{n}.
On calcule E(X2)E\left(X^{2}\right) dans une boucle, puis on retranche le carré de l'espérance :
Sur l'exemple :
E(X2)=(−2)2×0,25+12×0,5+42×0,25=1+0,5+4=5,5E\left(X^{2}\right)=\left(-2\right)^{2}\times 0{,}25+1^{2}\times 0{,}5+4^{2}\times 0{,}25=1+0{,}5+4=5{,}5
V(X)=5,5−12V\left(X\right)=5{,}5-1^{2}
D'où :
V(X)=4,5V\left(X\right)=4{,}5

On retrouve le même résultat.
Question 5

Avant tout calcul, on veut vérifier que la liste probas est bien une loi de probabilité. Écrire une fonction loi_ok(probas) qui renvoie True si les probabilités sont positives et de somme 11, et False sinon.

Correction
  • Donner la loi de probabilité de XX, c'est donner les valeurs x1x_{1}, x2x_{2}, …, xnx_{n} prises par XX et les probabilités pi=P(X=xi)p_{i}=P\left(X=x_{i}\right).
  • La somme des probabilités vaut 11 : p1+p2+…+pn=1p_{1}+p_{2}+\ldots+p_{n}=1.
On teste chaque probabilité, puis la somme :
Les nombres décimaux sont arrondis en machine : par exemple 0.1 + 0.2 donne 0.30000000000000004. C'est pourquoi on ne teste pas s == 1 mais un écart très petit entre s et 11.

Signaler une erreur

Aide-nous à améliorer nos contenus en signalant les erreurs ou problèmes que tu penses avoir trouvés.

Connecte-toi ou crée un compte pour signaler une erreur.