Comment effectuer un test Jarque-Bera en Python
Le test de Jarque-Bera est un test d’ajustement qui détermine si les données d’échantillon présentent ou non une asymétrie et un aplatissement qui correspondent à une distribution normale.
La statistique du test de Jarque-Bera est toujours un nombre positif et plus il est éloigné de zéro, plus il y a de preuves que les données de l’échantillon ne suivent pas une distribution normale.
Ce tutoriel explique comment réaliser un test Jarque-Bera en Python.
Comment effectuer un test Jarque-Bera en Python
Pour réaliser un test Jarque-Bera en Python on peut utiliser la fonction jarque_bera de la bibliothèque Scipy, qui utilise la syntaxe suivante :
jarque_bera(x)
où:
- x : un tableau d’observations
Cette fonction renvoie une statistique de test et une valeur p correspondante.
Exemple 1
Supposons que nous effectuions un test de Jarque-Bera sur une liste de 5 000 valeurs qui suivent une distribution normale :
import numpy as np import scipy.stats as stats #generate array of 5000 values that follow a standard normal distribution np.random.seed(0) data = np.random.normal(0, 1, 5000) #perform Jarque-Bera test stats.jarque_bera(data) (statistic=1.2287, pvalue=0.54098)
La statistique du test est de 1,2287 et la valeur p correspondante est de 0,54098 . Puisque cette valeur p n’est pas inférieure à 0,05, nous ne parvenons pas à rejeter l’hypothèse nulle. Nous n’avons pas suffisamment de preuves pour affirmer que ces données présentent une asymétrie et un aplatissement significativement différents d’une distribution normale.
Ce résultat ne devrait pas être surprenant puisque les données que nous avons générées sont composées de 5 000 variables aléatoires qui suivent une distribution normale.
Exemple 2
Supposons maintenant que nous effectuions un test de Jarque-Bera sur une liste de 5 000 valeurs qui suivent une distribution uniforme :
import numpy as np import scipy.stats as stats #generate array of 5000 values that follow a uniform distribution np.random.seed(0) data = np.random.uniform(0, 1, 5000) #perform Jarque-Bera test stats.jarque_bera(data) (statistic=300.1043, pvalue=0.0)
La statistique de test est 300,1043 et la valeur p correspondante est 0,0 . Puisque cette valeur p est inférieure à 0,05, nous rejetons l’hypothèse nulle. Ainsi, nous disposons de suffisamment de preuves pour affirmer que ces données présentent une asymétrie et un aplatissement significativement différents d’une distribution normale.
Ce résultat ne devrait pas non plus être surprenant puisque les données que nous avons générées sont composées de 5 000 variables aléatoires qui suivent une distribution uniforme, qui devrait avoir une asymétrie et un aplatissement très différents d’une distribution normale.
Quand utiliser le test de Jarque-Bera
Le test de Jarque-Bera est généralement utilisé pour de grands ensembles de données (n > 2 000) dans lesquels d’autres tests de normalité (comme le test de Shapiro-Wilk) ne sont pas fiables.
Il s’agit d’un test approprié à utiliser avant d’effectuer une analyse dans laquelle il est supposé que l’ensemble de données suit une distribution normale. Un test de Jarque-Bera peut vous dire si cette hypothèse est satisfaite ou non.