本ページには広告・プロモーションが含まれています。

分散分析の説明

分散分析は3つ以上のグループについて、それぞれの平均値について差があるか、ないかを調べる手法です。

2つのグループの平均の差は t検定 で調べられるので、グループA,B,C があった場合、A,B,C を組み合わせてt検定を繰り返せば良いと考えるかもしれませんが、 この手法は 統計学的に使えない のです。

そのため3グループ以上について平均の差について検定を行うために分散分析というのが必要になります。

分散分析には種類があり一元配置と二元配置(多元配置)といわれる分析方法があります。

一元配置
グループを識別する要素がひとつで、このデータを用いた分析を一元配置の分散分析と呼ぶ。
二元配置
グループを識別する要素がふたつ、このデータを用いた分析を二元配置の分散分析と呼ぶ。

t検定 と同様に p値 というのを求めて差を検定することができる。

p値とは 実際に観測された分布が理論的に予想される分布にどれだけ近づいているかを表す確率 のこと。有意水準と呼ぶ。

p値が大きければ 、平均値に 差がない ことを示し、 p値が小さければ 、平均値に 差がある ことを示す。

一般にこの値が5%未満(p < 0.05)の場合にデータには「統計学的に有意な差がある」とされるため、 p値が 0.05 未満だと、 平均値には差がある と解釈する。

p値 解釈
p > 0.05 平均値に差があるとは言えない
p < 0.05 平均値に差があると言えそう

ナンバーズの予想に使うには

「前回の抽せん数字の差分との平均に差はあるのか?」を分散分析を利用して分析してみます。

python のプログラムは 前準備 で用意したデータフレームを使っています。

一元配置の分散分析 (位ごとの差分の平均値)

グループを識別する要素を「抽せん数字の位置」 とした一元配置の分散分析を行います。

抽せん数字の位置というのは3つの数字を左から100の位,10の位,1の位とするということです。

# 1回前の数字との差分
# 第1回は前回の抽せん数字が無く NaN になるので dropna() で消す。
df_diff = df[['place100', 'place10', 'place1']].diff().dropna()
df_diff.head(10)

      place100      place10         place1
number
2     8.0   -1.0    7.0
3     -8.0  1.0     -4.0
4     0.0   -9.0    1.0
5     4.0   9.0     -3.0
6     2.0   0.0     0.0
7     0.0   -9.0    6.0
8     -5.0  3.0     -4.0
9     0.0   1.0     -1.0
10    1.0   0.0     -3.0
11    0.0   -2.0    6.0

ここから分散分析

# scipy を使って分散分析
scipy.stats.f_oneway(df_diff.place100, df_diff.place10, df_diff.place1)

# 結果
F_onewayResult(statistic=0.00043950386557326936, pvalue=0.9995605927171398)

分散分析結果の左側は 2つの分散の比を意味する F値 で、右側が p値 になります。

有意水準を 5% とすれば、p値は 5% より大きい( 0.05 < 0.99 ) ので、抽せん数字の差分の平均値に差があるとは言えない結果となりました。


最終更新日: 2020年01月14日(火)


目次

プロローグ

統計解析

データマイニング

資料集

Back to top