Jarque–Bera検定(ジャック-ベラ検定)

Jarque–Bera検定(ジャック-ベラ検定)とは?


Jarque–Bera検定(ジャック-ベラ検定)は、統計学における正規性の検定手法の一つです。この検定は、データが正規分布に従っているかどうかを確認するために使用されます。名前は、Carlos M. JarqueとAnil K. Beraの二人の統計学者に由来しています。

この記事では、scipyライブラリに実装されているjarque_beraを利用してJarque–Bera検定を行ってみます。

ライブラリのインポート

import numpy as np
from scipy.stats import jarque_bera
import matplotlib.pyplot as plt

シミュレーションデータの生成

Jarque–Bera検定を行うデータを用意します。
今回は正規分布から1000個のデータポイントをサンプリングしたデータと指数分布から1000個のデータポイントをサンプリングしてデータを用意しました。

np.random.seed(0)

normal_data = np.random.normal(0, 1, 1000)
non_normal_data = np.random.exponential(1, 1000)

生成したデータをヒストグラムで可視化してみます。

plt.figure(figsize=(14, 6))

plt.subplot(1, 2, 1)
plt.hist(normal_data, bins=30, color='blue', alpha=0.7, label='Normal Data')
plt.title('Histogram of Normal Data')
plt.legend()

plt.subplot(1, 2, 2)
plt.hist(non_normal_data, bins=30, color='red', alpha=0.7, label='Non-Normal Data')
plt.title('Histogram of Non-Normal Data')
plt.legend()

plt.tight_layout()
plt.show()

これらのデータに対して、Jarque–Bera検定を行います。

Jarque–Bera検定を行う

scipyのjarque_beraを使って検定を行っています。

jb_normal, p_normal = jarque_bera(normal_data)
jb_non_normal, p_non_normal = jarque_bera(non_normal_data)

print(f'Normal Data: JB Statistic = {jb_normal:.4f}, p-value = {p_normal:.4f}')
print(f'Non-Normal Data: JB Statistic = {jb_non_normal:.4f}, p-value = {p_non_normal:.4f}')

Normal Data: JB Statistic = 0.2822, p-value = 0.8684
Non-Normal Data: JB Statistic = 1117.2762, p-value = 0.0000

Jarque–Bera統計量は値が小さいほど、データが正規分布に近いことを示します。正規分布からサンプリングを行ったデータに対しての統計量は0.2822と指数分布からサンプリングを行ったデータに対する統計量の1117.2762に比べて非常に小さいです。またp値が高い(通常0.05より大きい)場合、帰無仮説を棄却しません。ここではp値が0.868と非常に高いため、データは正規分布に従っていると考えられます