Leçon 8
Python, espérance, variance, écart type
Le cours écrit
8.1 Une loi, deux listes
On range les valeurs de dans une liste, et les probabilités dans une autre, dans le même ordre : valeurs[i] a pour probabilité probas[i].
valeurs = [0, 5, 10]
probas = [0.6, 0.2, 0.2]
8.2 L'espérance
On parcourt les deux listes en même temps, et on accumule les produits.
def esperance(valeurs, probas):
s = 0
for i in range(len(valeurs)):
s = s + probas[i] * valeurs[i]
return s
8.3 Variance et écart type
La variance appelle la fonction précédente : le programme se construit par morceaux.
from math import sqrt
def variance(valeurs, probas):
e = esperance(valeurs, probas)
s = 0
for i in range(len(valeurs)):
s = s + probas[i] * (valeurs[i] - e) ** 2
return s
def ecart_type(valeurs, probas):
return sqrt(variance(valeurs, probas))
Exemple 38. Pour le jeu des enveloppes, Python affiche
3.0pouresperance(valeurs, probas),16.0pour la variance et4.0pour l'écart type. Pour le second stand, avec[2, 4]et[0.5, 0.5], il affiche3.0,1.0et1.0.
8.4 Vérifier qu'une loi est correcte
Les nombres à virgule sont stockés de façon approchée en machine. Pour la loi de la résidence, sum([0.4, 0.3, 0.2, 0.1]) donne 0.9999999999999999, et non 1. On compare donc après un arrondi.
def loi_correcte(probas):
return round(sum(probas), 9) == 1
8.5 La formule de König-Huygens en Python
La liste des carrés se construit en compréhension. Il suffit ensuite de réutiliser esperance.
def variance2(valeurs, probas):
carres = [v ** 2 for v in valeurs]
return esperance(carres, probas) - esperance(valeurs, probas) ** 2
Exemple 39.
variance2([0, 5, 10], [0.6, 0.2, 0.2])renvoie16.0, commevariance.
Exercices 15 et 16
- Exercice 15 : lire un programme
- Exercice 16 : écrire des fonctions
Corrigés
Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.