My Notes

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

Python3(pandas, Scipy)で、対応のない(対になっていない)2標本t検定(両側)。ウェルチのt検定ではない場合とウェルチのt検定の場合。scipy.stats.ttest_ind()

Python3コード

#!/usr/bin/env python3


"""(docstring)
"""


# 使用したデータは『すぐできる生物統計』
#
# 対応のない(対になっていない)2標本t検定(両側)
# 16匹のオス象と16匹のメス象の体重(単位はトン)は、違った平均体重をもつかどうか。
#
# 帰無仮説
# 平均値の差が0と違わない。
# 2つのグループは同じ平均値をもつ。
# つまり、オス象とメス象が同じ平均値をもつ。
#
# Scipyの統計関数
# scipy.stats.ttest_ind()
# を使用するんだが、デフォルトは、equal_var=True である。
# 2標本の母分散が等しいという仮定の設定になっていて、これはデフォルトでウェルチのt検定ではないということ。
# 最近の統計学では、ウェルチのt検定の使用が推奨されてきている。
# equal_var=Falseで使用したほうがいいだろう。
# つまり、母分散は等しくないという仮定の設定にしたほうがいい。
# ちなみに、R(R言語)のt.test()は、デフォルトでウェルチのt検定。
# 簡単に言うと、ScipyとR(R言語)では、デフォルトが逆であることに注意。


# 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 = {'オス象の体重': [4.6, 5.0, 4.7, 4.3, 4.6, 4.9, 4.5, 4.6,
                        4.8, 4.5, 5.2, 4.5, 4.9, 4.6, 4.7, 4.8],
            'メス象の体重': [4.3, 4.6, 4.5, 4.4, 4.7, 4.1, 4.5, 4.4,
                        4.2, 4.3, 4.5, 4.4, 4.5, 4.4, 4.3, 4.3]}

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

    print('デフォルト (ウェルチのt検定ではない)')
    res = sp.stats.ttest_ind(df.ix[:, 'オス象の体重'], df.ix[:, 'メス象の体重'])
    print(res)
    print('')

    print('equal_var=False でウェルチのt検定。')
    t_statistic, p_value = sp.stats.ttest_ind(df.ix[:, 'オス象の体重'], df.ix[:, 'メス象の体重'], equal_var=False)
    print('{0} {1}  {2} {3}'.format('t値', t_statistic, 'p値', p_value))
    print('')

    if p_value < 0.05:
        print('{0} {1} {2}'.format('p値', p_value, '< 0.05'))
        print('帰無仮説は棄却される。')
    else:
        print('帰無仮説は棄却できない。')

if __name__ == '__main__':
    main()

出力

    オス象の体重  メス象の体重
0      4.6     4.3
1      5.0     4.6
2      4.7     4.5
3      4.3     4.4
4      4.6     4.7
5      4.9     4.1
6      4.5     4.5
7      4.6     4.4
8      4.8     4.2
9      4.5     4.3
10     5.2     4.5
11     4.5     4.4
12     4.9     4.5
13     4.6     4.4
14     4.7     4.3
15     4.8     4.3

          オス象の体重     メス象の体重
count  16.000000  16.000000
mean    4.700000   4.400000
std     0.225093   0.150555
min     4.300000   4.100000
25%     4.575000   4.300000
50%     4.650000   4.400000
75%     4.825000   4.500000
max     5.200000   4.700000

デフォルト (ウェルチのt検定ではない)
Ttest_indResult(statistic=4.4312936752559606, pvalue=0.00011538288493616498)

equal_var=False でウェルチのt検定。
t値 4.431293675255961  p値 0.00014876184544534285

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

参考文献

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

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