Python による統計検定

対応のあるT検定

from scipy.stats import ttest_rel
p_values = []
for i in range(0, len(values_groups) - 1, 2):
    t_stat, p_value = ttest_rel(values_groups[i], values_groups[i + 1])
    p_values.append((f'Group {i + 1} vs Group {i + 2}', p_value))

対応のないT検定(等分散が仮定できない条件で)


import pandas as pd
# T検定を行い、p値を求める
# 群のデータポイントを直接入力
values_groups = [
    [76.6, 56.0, 56.4, 55.0, 64.9],
    [39.1, 55.2, 50.8, 47.1, 52.6],
    [57.0, 56.5, 69.9, 55.7],
    [58.6, 59.2, 60.9, 59.2],
    [68.9, 77.4, 69],
    [47.9, 65.8, 58, 45.3],
    
]

from scipy.stats import ttest_ind
p_values = []
for i in range(0, len(values_groups) - 1, 2):
    t_stat, p_value = ttest_ind(values_groups[i], values_groups[i + 1], equal_var=False)
    p_values.append((f'Group {i + 1} vs Group {i + 2}', p_value))

マン・ホイットニーのU検定(正規分布に沿っていると言えない場合)

from scipy.stats import mannwhitneyu
p_values = []
for i in range(0, len(values_groups) - 1, 2):
    stat, p_value = mannwhitneyu(values_groups[i], values_groups[i + 1], alternative='two-sided', method='auto')
    p_values.append((f'Group {i + 1} vs Group {i + 2}', p_value))

Tukey検定(多重比較)

import pandas as pd
df = pd.DataFrame({
    'group': np.concatenate([[label] * len(values) for label, values in zip(labels, values_groups)]),
    'score': np.concatenate(values_groups)
})

# Tukey HSD テスト
from statsmodels.stats.multicomp import pairwise_tukeyhsd
tukey_results = pairwise_tukeyhsd(df['score'], df['group'])
print(tukey_results)

+α vector画像への変更(論文用)

# テキストをテキストボックスとして使用することでパワポでの編集可
matplotlib.rcParams["svg.fonttype"] = "none" 
# SVGとして保存
plt.savefig('Sample.svg',transparent=Ture, bbox_inches="tight") 

Type 3 fontの回避(PDFとして保存するときには必須)

import matplotlib
from matplotlib import rcParams
rcParams['pdf.fonttype'] = 42


この記事が気に入ったらサポートをしてみませんか?