My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

Python3(pandas, Scipy)で、一元配置分散分析(ANOVA)。stats.f_oneway()

Python3コード

#!/usr/bin/env python3


"""(docstring)
"""


# 使用したデータは『すぐできる生物統計』
#
# 一元配置分散分析
#
# 2つのグループの魚の体重が互いに有意に違っているかどうか
# 帰無仮説
# 2つのグループの魚が同じ平均体重をもっている。
#
# scipy.stats.f_oneway() を使用する。


# import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats


def main():
    """(docstring)
    """

    # matplotlib
    # macOSやOS Xで文字化けするなら。
    # font = {'family' : 'Osaka'}

    dat = {'グループ1の体重': [6, 7, 8],
            'グループ2の体重': [10, 11, 12]}

    df = pd.DataFrame(dat)
    print(df)
    print('')

    # scipy.stats.f_oneway()
    # このファイル(モジュール)では、as sp としてScipyを読み込んでいて、
    # sp.stats.f_oneway()として使用するが、spを付けなくても何も問題ないが、
    # 明示的にしたいのでそうしている。
    #
    # とりあえず、公式のReturns: の確認から。
    # (データを変形させる必要はない。array_like でいい。 pandasで作成したモノでいい)。
    res = sp.stats.f_oneway(df.ix[:, 'グループ1の体重'], df.ix[:, 'グループ2の体重'])
    print(res)
    print('')

    # 各値を各変数に代入
    # 回避したい値があれば、_, で。
    # 例 _, p_value = sp.stats.f_oneway(略。
    F_value, p_value = sp.stats.f_oneway(df.ix[:, 'グループ1の体重'], df.ix[:, 'グループ2の体重'])
    print('{0} {1}'.format('F統計量,', 'p値'))
    print('{0}{1} {2}'.format(F_value, ',', p_value))
    print('')

    # 少数を第3位まで丸める。
    # もう最初のp_valueは使用しないので、同じ変数名に代入。
    # (こういうやり方に抵抗があれば、変数名を工夫すればいいだけ)。
    # 
    # (round(res[1], 3)でも何も問題ない)。
    p_value = round(p_value, 3)

    # 帰無仮説が棄却されるかどうか判定。
    if p_value < 0.05:
        print('{0}{1} {2}'.format('p値', p_value, '< 0.05'))
        print('帰無仮説は棄却される。')
    else:
        print('{0}{1} {2}'.format('p値', p_value, '> 0.05'))
        print('帰無仮説は棄却されない。')

if __name__ == '__main__':
    main()

出力

   グループ1の体重  グループ2の体重
0         6        10
1         7        11
2         8        12

F_onewayResult(statistic=24.0, pvalue=0.0080498931008377191)

F統計量, p値
24.0, 0.008049893100837719

p値0.008 < 0.05
帰無仮説は棄却される。

参考文献

パソコンで簡単!すぐできる生物統計―統計学の考え方から統計ソフトSPSSの使い方まで

パソコンで簡単!すぐできる生物統計―統計学の考え方から統計ソフトSPSSの使い方まで