Statistiques pour la Data Science en 2026 : Probabilités, Tests d'Hypothèses et Questions d'Entretien
Guide complet sur les statistiques pour les entretiens data science : distributions de probabilités, tests d'hypothèses, p-values et questions fréquentes des recruteurs.

Les statistiques constituent le socle mathématique de tout poste en data science. Les recruteurs des entreprises comme Google, Meta ou Netflix évaluent le raisonnement statistique car il distingue les candidats capables de construire des modèles de ceux qui comprennent pourquoi ces modèles fonctionnent.
Les questions de statistiques évaluent trois compétences : traduire des problèmes métier en cadres statistiques, choisir le test approprié pour les données, et interpréter les résultats sans tirer de conclusions hâtives.
Les Distributions de Probabilités Essentielles en Data Science
Les distributions de probabilités décrivent comment les points de données se répartissent sur les valeurs possibles. Les recruteurs attendent une maîtrise de ces distributions car elles sous-tendent l'échantillonnage, les tests A/B et les hypothèses des modèles.
La distribution normale (gaussienne) apparaît partout : erreurs de mesure, taille, scores de tests. Sa courbe en cloche est centrée sur la moyenne, avec 68% des données dans un écart-type, 95% dans deux. Quand la taille de l'échantillon dépasse 30, le Théorème Central Limite garantit que les moyennes d'échantillon suivent une distribution normale quelle que soit la forme de la population d'origine.
La distribution binomiale modélise les essais succès/échec. Les taux de clics, les événements de conversion et les contrôles qualité passé/échoué suivent des schémas binomiaux. Pour n essais avec une probabilité p de succès, l'espérance est np et la variance est np(1-p).
La distribution de Poisson compte les événements rares sur des intervalles fixes : visites de site par minute, défauts par lot, appels par heure. Son unique paramètre λ représente à la fois la moyenne et la variance. Quand les événements se produisent indépendamment à un taux moyen constant, Poisson s'applique.
# distributions_demo.py
import numpy as np
from scipy import stats
# Normal: customer spend follows N(μ=50, σ=15)
normal_samples = stats.norm.rvs(loc=50, scale=15, size=1000)
prob_above_80 = 1 - stats.norm.cdf(80, loc=50, scale=15) # P(X > 80)
# Binomial: 100 users, 5% conversion rate
binom_samples = stats.binom.rvs(n=100, p=0.05, size=1000)
prob_at_least_10 = 1 - stats.binom.cdf(9, n=100, p=0.05) # P(X >= 10)
# Poisson: 3 support tickets per hour on average
poisson_samples = stats.poisson.rvs(mu=3, size=1000)
prob_zero_tickets = stats.poisson.pmf(0, mu=3) # P(X = 0)Ces trois distributions couvrent la plupart des scénarios pratiques. Les recruteurs demandent souvent quelle distribution correspond à un contexte métier donné, il faut donc s'exercer à associer les problèmes réels au bon modèle.
Tests d'Hypothèses : Le Cadre Derrière les Tests A/B
Les tests d'hypothèses fournissent une structure formelle pour prendre des décisions à partir des données. Le cadre commence par une hypothèse nulle (H₀) représentant l'absence d'effet ou de différence, et une hypothèse alternative (H₁) représentant ce que l'expérience cherche à détecter.
Une hypothèse nulle typique de test A/B stipule : « La nouvelle fonctionnalité n'a pas d'effet sur le taux de conversion. » L'alternative affirme qu'un effet existe. Le test calcule la probabilité d'observer les données si l'hypothèse nulle était vraie.
La p-value quantifie cette probabilité. Une p-value de 0.03 signifie qu'il y a 3% de chance d'observer des résultats aussi extrêmes si l'hypothèse nulle est vraie. Quand la p-value tombe en dessous du seuil de significativité (généralement α = 0.05), l'hypothèse nulle est rejetée.
# ab_test_analysis.py
import numpy as np
from scipy import stats
# A/B test data: control vs treatment conversion rates
control_conversions = 120
control_visitors = 2000
treatment_conversions = 145
treatment_visitors = 2000
# Proportions
p_control = control_conversions / control_visitors # 0.060
p_treatment = treatment_conversions / treatment_visitors # 0.0725
# Pooled proportion under null hypothesis
p_pooled = (control_conversions + treatment_conversions) / (control_visitors + treatment_visitors)
# Standard error
se = np.sqrt(p_pooled * (1 - p_pooled) * (1/control_visitors + 1/treatment_visitors))
# Z-statistic
z_stat = (p_treatment - p_control) / se
# Two-tailed p-value
p_value = 2 * (1 - stats.norm.cdf(abs(z_stat)))
print(f"Z-statistic: {z_stat:.3f}") # Z-statistic: 1.681
print(f"P-value: {p_value:.4f}") # P-value: 0.0928Avec une p-value de 0.0928, ce test ne rejette pas l'hypothèse nulle à α = 0.05. La différence observée pourrait être une variation aléatoire. Plus de données ou un effet plus important seraient nécessaires pour atteindre la significativité statistique.
Erreurs de Type I et Type II : Les Compromis Explorés en Entretien
Les tests statistiques équilibrent deux types d'erreurs. Une erreur de Type I (faux positif) survient quand on rejette une hypothèse nulle vraie. Une erreur de Type II (faux négatif) survient quand on ne rejette pas une hypothèse nulle fausse.
Le seuil de significativité α contrôle directement la probabilité d'erreur de Type I. Fixer α = 0.05 signifie accepter 5% de chance de faux positifs. Abaisser α à 0.01 réduit les faux positifs mais augmente les faux négatifs.
La puissance statistique (1 - β) mesure la probabilité de rejeter correctement une hypothèse nulle fausse. La puissance dépend de la taille d'effet, de la taille d'échantillon et du seuil de significativité. Le standard industriel vise 80% de puissance, soit 20% de chance de manquer des effets réels.
Les candidats confondent souvent « pas de différence significative » avec « aucune différence n'existe ». Ne pas rejeter l'hypothèse nulle ne prouve pas qu'elle est vraie. Le test peut manquer de puissance pour détecter un effet petit mais réel.
Les calculs de taille d'échantillon équilibrent ces préoccupations. Pour un test A/B visant une augmentation de 2% du taux de conversion (de 5% à 7%) avec 80% de puissance et α = 0.05 :
# sample_size_calculation.py
from statsmodels.stats.power import zt_ind_solve_power
# Baseline conversion: 5%, expected lift: 2 percentage points
baseline = 0.05
expected = 0.07
effect_size = (expected - baseline) / np.sqrt(baseline * (1 - baseline)) # Cohen's h
# Required sample size per group
n_per_group = zt_ind_solve_power(
effect_size=effect_size,
alpha=0.05,
power=0.80,
alternative='two-sided'
)
print(f"Sample size per group: {int(np.ceil(n_per_group))}") # ~1,570 per groupLes tests sous-dimensionnés gaspillent des ressources en exécutant des expériences incapables de détecter des effets réalistes.
Intervalles de Confiance : Quantifier l'Incertitude
Un intervalle de confiance à 95% signifie : si le même processus d'échantillonnage était répété plusieurs fois, 95% des intervalles construits contiendraient le vrai paramètre. Les intervalles de confiance communiquent mieux l'incertitude que les estimations ponctuelles seules.
Pour les moyennes avec variance de population connue, l'intervalle utilise la distribution z. Pour les petits échantillons ou une variance inconnue, la distribution t s'applique. La distribution t a des queues plus lourdes que la normale, produisant des intervalles plus larges qui tiennent compte de l'incertitude supplémentaire.
# confidence_intervals.py
import numpy as np
from scipy import stats
# Sample data: response times in milliseconds
response_times = np.array([245, 312, 278, 299, 256, 334, 287, 301, 265, 289])
n = len(response_times)
mean = np.mean(response_times) # 286.6
std_err = stats.sem(response_times) # Standard error of the mean
# 95% confidence interval using t-distribution (df = n-1)
t_critical = stats.t.ppf(0.975, df=n-1)
margin_of_error = t_critical * std_err
ci_lower = mean - margin_of_error
ci_upper = mean + margin_of_error
print(f"Mean: {mean:.1f}ms") # Mean: 286.6ms
print(f"95% CI: [{ci_lower:.1f}, {ci_upper:.1f}]ms") # 95% CI: [265.4, 307.8]msDes intervalles plus étroits indiquent des estimations plus précises. La taille d'échantillon détermine la précision : quadrupler n divise la marge d'erreur par deux.
Prêt à réussir tes entretiens Data Science & ML ?
Entraîne-toi avec nos simulateurs interactifs, fiches express et tests techniques.
Bayésien vs Fréquentiste : Questions d'Entretien sur la Philosophie Statistique
Les recruteurs sondent parfois la compréhension des paradigmes statistiques concurrents. Les statistiques fréquentistes traitent la probabilité comme une fréquence à long terme : les paramètres sont fixes, et les données varient à travers des expériences répétées. Les p-values et intervalles de confiance viennent de cette tradition.
Les statistiques bayésiennes traitent la probabilité comme un degré de croyance : la connaissance a priori se combine aux données pour produire des croyances a posteriori. Le cadre permet d'incorporer l'expertise du domaine et produit directement des énoncés de probabilité sur les paramètres.
Les tests A/B utilisent de plus en plus les méthodes bayésiennes car elles répondent à la question que les parties prenantes posent réellement : « Quelle est la probabilité que le traitement B surpasse le traitement A ? » plutôt que « À quel point ces données sont-elles surprenantes s'il n'y avait pas de différence ? »
# bayesian_ab_test.py
import numpy as np
from scipy import stats
# Prior: Beta(1, 1) = uniform prior for conversion rate
# Posterior: Beta(alpha + successes, beta + failures)
control_successes, control_failures = 120, 1880
treatment_successes, treatment_failures = 145, 1855
# Posterior distributions
posterior_control = stats.beta(1 + control_successes, 1 + control_failures)
posterior_treatment = stats.beta(1 + treatment_successes, 1 + treatment_failures)
# Monte Carlo estimation: P(treatment > control)
samples_control = posterior_control.rvs(100000)
samples_treatment = posterior_treatment.rvs(100000)
prob_treatment_better = np.mean(samples_treatment > samples_control)
print(f"P(treatment > control): {prob_treatment_better:.2%}") # ~95%Les résultats bayésiens communiquent directement : « Il y a 95% de probabilité que le taux de conversion du traitement dépasse celui du contrôle. » Les résultats fréquentistes nécessitent une interprétation plus prudente.
Questions d'Entretien Fréquentes sur l'Inférence Statistique
Ces questions apparaissent fréquemment dans les entretiens data science des entreprises tech. Chacune teste un concept statistique spécifique.
« Expliquez le Théorème Central Limite et pourquoi il est important. »
Le TCL stipule que les moyennes d'échantillon de toute population (avec variance finie) approchent une distribution normale quand la taille d'échantillon augmente. Cela compte car les hypothèses de normalité dans les tests d'hypothèses tiennent pour les grands échantillons quelle que soit la distribution sous-jacente. Des tailles d'échantillon de 30+ suffisent généralement.
« Qu'est-ce que le p-hacking et comment le prévenir ? »
Le p-hacking gonfle les taux de faux positifs en testant de multiples hypothèses jusqu'à trouver une significativité, ou en arrêtant la collecte de données quand les résultats deviennent significatifs. Stratégies de prévention : pré-enregistrer les plans d'analyse, appliquer des corrections pour comparaisons multiples (Bonferroni, FDR), et fixer les tailles d'échantillon avant de collecter les données.
« Quand utiliser un test t vs un test de Mann-Whitney U ? »
Le test t suppose des données normalement distribuées (ou de grands échantillons via le TCL) et compare les moyennes. Mann-Whitney U est une alternative non-paramétrique qui compare les distributions sans hypothèses de normalité. Utiliser Mann-Whitney pour les petits échantillons avec des données clairement non-normales ou pour comparer des mesures ordinales.
« Comment gérer les comparaisons multiples dans les tests A/B ? »
Tester de multiples variantes gonfle l'erreur de Type I. Avec 20 comparaisons à α = 0.05, la probabilité d'au moins un faux positif dépasse 60%. La correction de Bonferroni divise α par le nombre de tests. La procédure de Benjamini-Hochberg contrôle le taux de fausses découvertes tout en maintenant plus de puissance que Bonferroni.
Le Paradoxe de Simpson : Un Sujet Favori en Entretien
Le paradoxe de Simpson survient quand les tendances dans les données agrégées s'inversent au niveau des sous-groupes. Les recruteurs adorent ce sujet car il teste le raisonnement causal, pas seulement la mécanique statistique.
Un exemple classique : l'Hôpital A a un taux de mortalité global plus élevé que l'Hôpital B. Mais l'Hôpital A a une mortalité plus basse pour les cas légers et sévères. Le paradoxe survient car l'Hôpital A traite plus de cas sévères, qui ont une mortalité plus élevée quelle que soit la qualité de l'hôpital.
# simpsons_paradox.py
import pandas as pd
# Hospital mortality data
data = {
'Hospital': ['A', 'A', 'B', 'B'],
'Severity': ['Mild', 'Severe', 'Mild', 'Severe'],
'Patients': [200, 800, 800, 200],
'Deaths': [10, 160, 48, 50]
}
df = pd.DataFrame(data)
df['Mortality'] = df['Deaths'] / df['Patients']
# Subgroup mortality
print(df[['Hospital', 'Severity', 'Mortality']])
# Hospital A: Mild 5%, Severe 20%
# Hospital B: Mild 6%, Severe 25%
# Aggregate mortality
agg = df.groupby('Hospital').agg({'Deaths': 'sum', 'Patients': 'sum'})
agg['Mortality'] = agg['Deaths'] / agg['Patients']
print(agg['Mortality'])
# Hospital A: 17%, Hospital B: 9.8%La résolution nécessite d'identifier la variable confondante (sévérité) et d'analyser les sous-groupes séparément. L'analyse agrégée induit en erreur quand les proportions de sous-groupes diffèrent.
Concepts Statistiques pour le Feature Engineering
Les connaissances statistiques améliorent directement le feature engineering. Comprendre les distributions guide les transformations ; comprendre les relations guide la création de features.
L'asymétrie (skewness) mesure l'asymétrie de la distribution. Les données asymétriques à droite (revenus, prix) bénéficient des transformations logarithmiques qui normalisent la distribution et améliorent les performances du modèle. Les données asymétriques à gauche utilisent des transformations carrées ou exponentielles.
La corrélation quantifie les relations linéaires. La corrélation de Pearson suppose la normalité et la linéarité. La corrélation de Spearman gère les relations non-linéaires monotones. Les features hautement corrélées causent la multicolinéarité dans les modèles linéaires, donc l'une est généralement supprimée.
Les valeurs aberrantes affectent les moyennes et écarts-types de manière disproportionnée. Les statistiques robustes (médiane, IQR) résistent à l'influence des valeurs aberrantes. Décision : supprimer, plafonner ou transformer les valeurs aberrantes selon qu'elles représentent des erreurs ou des valeurs extrêmes authentiques.
Pour plus d'informations sur l'application de ces concepts aux modèles de machine learning, consultez le guide d'entretien sur le feature engineering et explorez le module de pratique sur les statistiques inférentielles.
Passe à la pratique !
Teste tes connaissances avec nos simulateurs d'entretien et tests techniques.
Ce Qui Distingue les Candidats Performants en Questions de Statistiques
La compétence statistique dans les entretiens data science requiert plus que des définitions de manuel. Les candidats performants démontrent ces capacités :
- Connecter les statistiques aux résultats métier : formuler les résultats de tests A/B en termes d'impact sur le revenu ou l'engagement utilisateur, pas seulement en p-values
- Connaître les hypothèses : chaque test a des conditions (indépendance, normalité, variance égale) et les candidats doivent indiquer quand ces conditions pourraient échouer
- Quantifier l'incertitude : les estimations ponctuelles sans intervalles de confiance ou intervalles crédibles laissent les parties prenantes dans le flou sur la fiabilité
- Reconnaître les limites de la causalité : les données observationnelles montrent la corrélation, et les candidats doivent articuler quel design expérimental établirait la causalité
- Choisir le bon test : faire correspondre le type de données (continue vs catégorielle), la taille d'échantillon et la question de recherche à la méthode statistique appropriée
- Communiquer les résultats clairement : traduire les conclusions statistiques en recommandations actionnables que les parties prenantes non-techniques peuvent comprendre et sur lesquelles agir
Tu saurais repérer le bug en Data Science & ML ?
Un vrai bout de code, un bug caché, une tentative par jour. Sans compte pour essayer.

Écrit par
Anthony Fillion-MailletFondateur de SharpSkill
Développeur fullstack depuis plus de 10 ans. Il dirige SharpSkill et répond de tout ce qui y est publié.
Mis à jour le 21 août 2026
Partager
Articles similaires

Vision par Ordinateur avec PyTorch en 2026 : CNN, Transfer Learning et Questions d'Entretien
Guide complet sur la vision par ordinateur avec PyTorch : réseaux de neurones convolutifs, transfer learning et préparation aux entretiens techniques en deep learning.

LangChain pour les Data Scientists en 2026 : LLMs, Agents et Questions d'Entretien
Guide complet sur LangChain pour les data scientists : maîtriser les LLMs, les agents autonomes et se préparer aux questions d'entretien technique en 2026.

MLOps en 2026 : MLflow, Model Registry et questions d'entretien technique
Questions d'entretien MLOps couvrant le cycle de vie ML, le suivi des expérimentations MLflow, la promotion via le model registry, les patterns de déploiement, la supervision de dérive et le system design pour 2026, avec du code Python et des réponses.