Skip to content

Introduction to Statistics in Python

Run the hidden code cell below to import the data used in this course.


1 hidden cell

Take Notes

Add notes about the concepts you've learned and code cells with code you want to keep.

Introduction to statistics

Variance : np.var() avec l'argument ddof=1 (on enlève cet argument quand on est sur une pop complète, pas un échantillon) np.sqrt = racine carrée np.std = standard deviation (racine de la variance) encore avec ddof=1

Mean absolute deviation : on part des valeurs absolues np.mean(np.abs(df))

Quantiles : split entre plusieurs parts égales np.quantile, avec un argument chiffré
np.quantile(df['colonne'], [0, 0.25, 0.5, 0.75, 1]) si on fait ça : np.quantile(df['colonne'], 0,5) on obtient la médiane

np.linspace(start, stop, num) pour créer des quantiles comme on veut, avec nombre de départ, nombre d'arrêt, et intervalles de nombres) --> remplace la liste de chiffres déterminant les quantiles dans np.quantiles

Intervalle interquartile IQR distance entre 25e et 75e percentile iqr(df['col'])

Valeurs aberrantes (Outliers) Data < Q1 - 1,5xIQR Data > Q3 + 1,5xIQR

Describe method reprend toutes les mesures de spread

df.sample() choisit une ligne du df au hasard

pour obtenir les mêmes résultats au hasard np.random.seed(10) pour que la génération aléatoire soit toujours la même

df.sample(2) --> sort 2 lignes du df (sampling without replacement)

sampling with replacement : df.sample(5, replace = True) le même échantillon peut-être choisi plusieurs fois

Distributions continues

from scipy.stats import uniform uniform.cdf(valeur dont calculer la proba, limite inférieure, limite supérieure)

proba inverse : 1 - uniform.cdf(val1, val2, val3)

generate random numbers according to uniform distribution : uniform.rvs(val min, val max, size=10) (size pour le nb de valeurs à sortir)

10 valeurs aléatoires générées entre val min et val max

binomial distribution (succession d'essais indépendants à deux issues)

from scipy.stats import binom

binom.rvs(# of coins, probability of heads / success, size = number of trials) génère # essais indépendants

binom.pmf(nb de succès, nb d'essais, proba de succès) binom.cdf(nb de succès, nb d'essais, proba de succès) = proba nb de succès inférieur ou égal au premier argument

Normal distribution Described by mean and standard deviation

Si mean = 0 et std = 1, standard normal distribution norm.cdf(valeur recherchée, mean, std) pour le % de personnes <= à la valeur recherchée sur une courbe normale 1 - norm.cdf pour l'opposé Soustraction pour avoir un intervalle entre 2 valeurs

norm.ppf(%, mean, std) pour obtenir la valeur englobant le % de l'échantillon retenu norm.ppf((1-%), mean, std) pour l'opposé

norm.rvs(mean, std, size=taille échantillon) pour générer random numbers

Central limit theorem : distribution d'un échantillonnage se rapproche de la distribution normale à mesure qu'on fait plus d'essais

Poisson distribution from scipy.stats import poisson

lambda : nb moyen d'evts par période

poisson.pmf(valeur dont on recherche la proba, lambda) poisson.cdf(mêmes arguments) : proba que la valeur soit inférieure ou égale à la valeur inscrite en premier argument poisson.rvs(lambda, size=taille d'échantillon) pour générer un échantillon suivant la loi de poisson

Other distributions Exponential : proba of time between poisson events utilise aussi la valeur lambda

from scipy.stats import expon expon.cdf(durée dont on veut la proba, scale = rate ) rate : 1/lambda t-distribution (ressemble à normal, en plus dispersé)

log-normal distribution

Correlation

import seaborn as sns

sns.scatterplot(x='name', y='name', data=df) pour faire un scatter en affichant la droite de corrélation, sns.lmplot(x='name', y='name', data=df, ci=Nhaone) dernier argu : pas de marge d'intervalle de confiance autour de la ligne

coeff de corrélation entre 2 séries : df['col1'].corr(df['col2'])

il s'agit du Pearson product-moment correlation

Correlation caveats ne concerne que les relations linéaires

Log transformation appliquée à des data très "skewed" (non symétrique) np.log appliqué à une colonne

autres transfo : square root transfo : sqrt(x) reciprocal transfo : 1/x on peut transformer différemment x et y

correlation does not imply causation !

Design of experiments

exemples...

# Add your code snippets here