My Notes

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

Python3(pandas, Scipy)で、一標本t検定(両側)。stats.ttest_1samp()

Python3コード

#!/usr/bin/env python3


"""(docstring)
"""


# 使用したデータは『すぐできる生物統計』
#
# 帰無仮説
# オス象の平均体重は4.50トンである。


# 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]}
    df = pd.DataFrame(dat)
    print(df)
    print('')
    # pandasのdescribe()を使用。Scipyのdescribe()はそのままでは使用できない。
    print(df.describe())
    print('')

    # Scipyのstats.ttest_1samp()
    # 第2引数は帰無仮説の値。
    res = sp.stats.ttest_1samp(df, 4.50)
    # t値とp値
    print(res)
    print('')

    t_statistic, two_tailed_p_value = sp.stats.ttest_1samp(df, 4.50)
    print('t値', round(*t_statistic, 2))
    print('p値', round(*two_tailed_p_value, 4))

    #
    # 結論
    # p値が0.05以下なので、帰無仮説は棄却される。
    #

if __name__ == '__main__':
    main()

出力

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

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

Ttest_1sampResult(statistic=array([ 3.55409327]), pvalue=array([ 0.0028849]))

t値 3.55
p値 0.0029

R(R言語)でなら。

my-notes.hatenablog.com

参考文献

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

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