Moyennes et intervalles de confiance en python
Les différentes moyennes
Page en construction : moyenne, médiane, moyenne géométrique, moyenne harmonique, moyenne glissante, moyenne mobile, moyenne mobile par itération : laquelle prendre ?
Pour certaines de ces moyennes : suivre ce lien.
Désolé pour l'absence de code en attendant une prochaine mise à jour...
# Moyenne glissante en python
# https://xdze2.github.io/confiance.html
Intervalles de confiance
Intervalles de confiance d'un échantillon (et non d'une population !)
Voici une formule à copier coller pour calculer l'intervalle de confiance d'un échantillon :
Cette fonction, int_ech() nécessite les modules scipy et statistics que l'on peut installer en tapant la commande suivante dans la console windows
python -m pip install --user scipy statistics
Puis il suffira de copier-coller le code ci-dessous dans la console python :
from scipy.stats import t
from scipy import sqrt
from statistics import variance, mean
def int_ech(values,conf=0.95) :
n = len(values)
m = mean(values)
s = variance(values)
proba = (1-conf)*100 ; proba = (100-proba/2)/100
ddl = n - 1
intervalle = sqrt(s/n) * t.ppf(proba, ddl)
return(intervalle)
Remarque importante : la fonction variance du module statistics a été utilisée comme pertinente (les modules scipy (éviter les fonctions var et sem) ou numpy ne renvoient pas des écart-types et variances classiques pour un échantillon car elles font ces calculs pour une population : cela risque de fausser les calculs de plus d'un).
Voici un exemple d'utilisation de cette fonction int_ech()
X1 = [1,3,4,2,1] ; print( int_ech(X1) ) # intervalle de confiance à 95% avec python par défaut
int_ech(X1,0.99)# Intervalle de confiance à 99% avec python
Intervalles de confiance d'une population (attention : pas d'un échantillon !)
Voici une formule à copier coller pour calculer l'intervalle de confiance d'une population :
Cette fonction, int_pop() nécessite les modules scipy, math et statistics :
from statistics import *
from scipy.stats import norm
from math import *
Il suffira de copier-coller le code ci-dessous dans la console python :
def int_pop(vector,conf_level=0.95, sigma=[]) :
# vector : un échantillon
# sigma : écart-type de la population
if (len(sigma)==0) :
sigma=stdev(vector)
n = len(vector)
proba =(100-(((1-conf_level)*100)/2))/100
z = norm.ppf(proba) ; # Récupération des quantiles de la loi normale ==> Par exemple : si on veut englober 95% des valeurs : estimer la variabilité de la population en prenant le risque de négliger 5% de celle-ci, spot 2,5% en tête de distribution
intervalle = z*sigma/sqrt(n)
#moyenne = mean(vector)
return(intervalle)
Voici un exemple d'utilisation de cette fonction int_pop()
X1 = [1,3,4,2,1] ; print( int_pop(X1) ) # intervalle de confiance à 95% avec python par défaut
int_pop(X1,0.99)# Intervalle de confiance à 99% avec python
Intervalles de confiance sur des proportions (ou pourcentages)
Voici une formule à copier coller pour calculer l'intervalle de confiance d'une proportion (PROPORTION) :
Cette fonction, int_prop() nécessite les modules scipy, math et statistics :
from statistics import *
from scipy.stats import norm
from math import *
def int_prop(proportion,n,conf_level=0.95) :
# Il faut donner une proportion entre 0 et 1 et une taille d'échantillon
# proportion peut aussi correspondre à une liste de proportions
nombre_proportions = len(proportion)
P = proportion
proba = (1-((1-conf_level)/2))
IC = []
for i in range(0,nombre_proportions) :
IC.append(norm.ppf(proba)*sqrt(P[i]*(1-P[i])/n) )
return(IC)
Voici un exemple d'utilisation de cette fonction int_prop()
print( int_prop([0.75,0.25], 200) )
# intervalle de confiance à 95% avec python sur ces proportions de 75% et 25% établies sur un échantillon de 200 individus.
int_prop([0.8],100,0.99)# Intervalle de confiance à 99% avec python sur une proportion de 80% établie sur un total de 100 individus.