Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

対応のない (対になっていない) 2標本t検定 (両側)。ウェルチのt検定 (Python 3, Pandas, SciPy: scipy, ttest_ind(, equal_var=False))

使用するライブラリ

Pandas

SciPy

Python 3 コード

t_test_ind2.py

#!/usr/bin/env python3


"""(docstring)
"""


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


import pandas as pd
from scipy.stats import ttest_ind


def t_test_ind2():
    """(docstring)
    """
    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('')

    # equal_var=False でウェルチの t 検定
    res = ttest_ind(df.ix[:, 'オス象の体重'], df.ix[:, 'メス象の体重'], equal_var=False)
    print(res)
    print('')

    t_statistic, p_value = res
    print('t 値: {}, p 値: {}'.format(t_statistic, p_value))
    print('')

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


if __name__ == '__main__':
    t_test_ind2()

出力

$ python3 t_test_ind2.py
    オス象の体重  メス象の体重
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

Ttest_indResult(statistic=4.431293675255961, pvalue=0.00014876184544534285)

t 値: 4.431293675255961, p 値: 0.00014876184544534285

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

参考文献 (数式を参考)

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

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

関連過去記事

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com