# Test de Breusch-Pagan

En statistiques, le test de Breusch-Pagan permet de tester l'hypothèse d'homoscédasticité du terme d'erreur d'un modèle de régression linéaire. Il a été proposé par Trevor Breusch (en) et Adrian Pagan (en) dans un article publié en 1979 dans la revue Econometrica. Il cherche à déterminer la nature de la variance du terme d'erreurs : si la variance est constante, alors on a de l'homoscédasticité ; en revanche, si elle varie, on a de l'hétéroscédasticité.
Par exemple, on estime le modèle suivant
$y=\beta _{0}+\beta _{1}x+u$
et on obtient alors les valeurs résiduelles : ${\hat {u}}$. Les moindres carrés ordinaires (MCO) sont un estimateur faisant en sorte que la moyenne des résidus soit nulle. Ainsi, en supposant que la valeur des résidus ne dépend pas des variables explicatives, on peut exprimer la variance des résidus comme la valeur au carré des résidus. Si cette hypothèse n'est pas tenable, alors on pourrait par exemple exprimer la variance comme une relation linéaire entre les résidus et les variables explicatives. Un modèle de ce genre peut être testé en régressant les carrés des résidus sur les variables explicatives en utilisant une équation auxiliaire de la forme
${\hat {u}}^{2}=\gamma _{0}+\gamma _{1}x+v$.
Ceci est la base du test de Breusch-Pagan. C'est un test basé sur un test du χ² : si la statistique du test de Breusch-Pagan est supérieure à celle obtenue par le test du Chi-Deux, c'est-à-dire si la p-value est inférieure à un certain seuil (souvent 5 %), alors on rejette l'hypothèse nulle d'homoscédasticité avec un risque d'erreur de première espèce de 5 % (si on a choisi ce seuil).
Une des corrections possibles peut alors être l'utilisation des moindres carrés pondérés (si l'on connaît l'origine de l'hétéroscédasticité).

## Méthode

Si les conditions du théorème de Gauss-Markov sont respectées, les MCO sont un estimateur dit "BLUE" (Best Linear Unbiased Estimator), c'est-à-dire qu'il est sans biais et à variance minimale. En cas d'hétéroscédasticité, il reste sans biais mais n'est plus à variance minimale. Ainsi, avant de déterminer l'estimateur à utiliser, on peut commencer par appliquer le test de Breusch-Pagan pour déterminer s'il y a présence ou non d'hétéroscédasticité. On pose l'hypothèse nulle et l'hypothèse alternative :
${\text{H}}_{0}:y_{i}=\alpha +\beta x_{i}+\gamma z_{i}+\varepsilon _{i}\$ ; $\ V(\varepsilon _{i})=\sigma ^{2}\$ ; $\ i=1,\ldots ,N$
${\text{H}}_{1}:y_{i}=\alpha +\beta x_{i}+\gamma z_{i}+\varepsilon _{i}\$ ; $\ V(\varepsilon _{i})=\sigma _{i}^{2}=\eta _{1}+\eta _{2}x_{i}+\eta _{3}z_{i}+\omega _{i}\$ où $\ \eta _{1},\eta _{2},\eta _{3}$ sont des coefficients et $\omega _{i}$ un bruit blanc.
Le test se déroule en trois étapes :
* on estime le modèle par les MCO, ce qui nous permet d'obtenir ${\hat {\varepsilon }}_{i}$, que l'on élève ensuite au carré
* on estime ensuite par les MCO l'équation de test suivante : ${\hat {\varepsilon }}_{i}^{2}=\eta _{1}+\eta _{2}x_{i}+\eta _{3}z_{i}+\omega _{i}$
* on calcule la statistique de Breusch-Pagan : $BP=nR^{2}$ qui suit $\chi ^{2}(K-1)$ avec $K$ le nombre de coefficients à estimer dans l'équation auxiliaire écrite à l'étape précédente (trois ici), $n$ le nombre de valeurs utilisées et $R^{2}$ le coefficient de détermination de l'équation de test (équation obtenue à l'étape précédente).
Si la statistique de Breusch-Pagan est supérieure à celle lue dans la table du Chi-Deux pour un certain niveau de risque d'erreur de première espèce (5 % étant la valeur généralement retenue), alors on rejette l'hypothèse nulle d'homoscédasticité.

## Application du test dans les logiciels de statistique

Dans R, il est possible d'appliquer ce test avec les fonctions ncvTest disponible dans le package car, bptest dans le package lmtest ou plmtest dans le package plm.
Dans Stata, après avoir défini l'équation de régression, la commande estat hettest suivie de toutes les variables explicatives permet d'appliquer ce test.
Dans SAS, on peut l'utiliser avec l'option Proc Model.
Dans Python, ce test est applicable avec la méthode het_breuschpagan dans statsmodels.stats.diagnostic (le package de modèle statistique).