目录
(3)韦尔奇t检验(ウェルチ検定)-无法满足方差齐性的时候用
5.效果量(Cohen's d/Pearson's r):后附效果量的指标
1. 安装包/读取数据
pip install japanize-matplotlib #日语显示专用包,不需要日语的不用安装
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
from scipy import stats
# Excelファイルを読み込む
data = pd.read_excel('/content/ttest_data.xlsx')
print(data)
# 'test1'と 'test2'の列からデータを取得します
test1 = data['Test1']
test2 = data['Test2']
2. 正态性检验(t检验的前提之一)
正态性检验有很多种方法,其中最直观的是图示法。
本文分别用(1)图示法,(2)Shapiro-Wilk正規性検定 两种方法来检验数据正态性
#(1)图示法
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.hist(test1, bins=30, color='green', alpha=0.6, edgecolor='black')
plt.title("test1のヒストグラム")
plt.xlabel("値")
plt.ylabel("頻度")
plt.subplot(1, 2, 2)
plt.hist(test2, bins=30, color='blue', alpha=0.6, edgecolor='black')
plt.title("test2のヒストグラム")
plt.xlabel("値")
plt.ylabel("頻度")
plt.tight_layout()
plt.show()
# (2) Shapiro-Wilk正規性検定
statistic1, p_value1 = stats.shapiro(test1)
statistic2, p_value2 = stats.shapiro(test2)
# 結果の出力
print("test1のShapiro-Wilk検定統計量:", statistic1)
print("test1のShapiro-Wilk検定p値:", p_value1)
print("test2のShapiro-Wilk検定統計量:", statistic2)
print("test2のShapiro-Wilk検定p値:", p_value2)
# p値を基に正規分布の帰無仮説を評価
alpha = 0.05 # 有意水準 (通常は0.05)
if p_value1 > alpha:
print("test1は正規分布に従っています")
else:
print("test1は正規分布に従っていません")
if p_value2 > alpha:
print("test2は正規分布に従っています")
else:
print("test2は正規分布に従っていません")
3.方差齐性检验(t检验的前提之二)
# 等分散性を検定
statistic, p_value = stats.levene(test1, test2)
# 結果の出力
print("Leveneの等分散性検定統計量:", statistic)
print("Leveneの等分散性検定p値:", p_value)
# p値を基に等分散性の帰無仮説を評価
alpha = 0.05 # 有意水準 (通常は0.05)
if p_value > alpha:
print("等分散性の帰無仮説は棄却されません (等分散)")
else:
print("等分散性の帰無仮説は棄却されます (非等分散)")
4.t检验
(1)非独立样本t检验(対応あり)
# 対応ありのt検定
t_statistic, p_value = stats.ttest_rel(test1, test2)
# 結果の出力
print("対応ありのt検定統計量:", t_statistic)
print("対応ありのt検定p値:", p_value)
alpha = 0.05 # 信頼水準 (通常は0.05)
df = len(test1) + len(test2) - 2 # 自由度
std_error = np.sqrt(np.var(test1)/len(test1) + np.var(test2)/len(test2))
margin_of_error = stats.t.ppf(1 - alpha/2, df) * std_error
conf_int = (t_statistic - margin_of_error, t_statistic + margin_of_error)
print("対応ありのt検定信頼区間:",conf_int)
(2)独立样本t检验(対応なし)
# 対応なしのt検定
t_statistic, p_value = stats.ttest_ind(test1, test2)
# 結果の出力
print("対応なしのt検定統計量:", t_statistic)
print("対応なしのt検定p値:", p_value)
alpha = 0.05 # 信頼水準 (通常は0.05)
df = len(test1) + len(test2) - 2 # 自由度
std_error = np.sqrt(np.var(test1)/len(test1) + np.var(test2)/len(test2))
margin_of_error = stats.t.ppf(1 - alpha/2, df) * std_error
conf_int = (t_statistic - margin_of_error, t_statistic + margin_of_error)
print("対応なしのt検定信頼区間:",conf_int)
(3)韦尔奇t检验(ウェルチ検定)-无法满足方差齐性的时候用
# ウェルチのt検定
t_statistic, p_value = stats.ttest_ind(test1, test2, equal_var=False)
# 結果の出力
print("ウェルチのt検定統計量:", t_statistic)
print("ウェルチのt検定p値:", p_value)
alpha = 0.05 # 信頼水準 (通常は0.05)
df = len(test1) + len(test2) - 2 # 自由度
std_error = np.sqrt(np.var(test1)/len(test1) + np.var(test2)/len(test2))
margin_of_error = stats.t.ppf(1 - alpha/2, df) * std_error
conf_int = (t_statistic - margin_of_error, t_statistic + margin_of_error)
print("ウェルチ検定の信頼区間:",conf_int)
5.效果量(Cohen's d/Pearson's r):后附效果量的指标
(1)非独立样本t检验效果量计算
# 対応ありのt検定効果量
import numpy as np
t_statistic, p_value = stats.ttest_rel(test1, test2)
# Cohen's dの計算
mean_diff = np.mean(test1) - np.mean(test2)
pooled_std = np.sqrt(((len(test1) - 1) * np.var(test1, ddof=1) + (len(test2) - 1) * np.var(test2, ddof=1)) / (len(test1) + len(test2) - 2))
cohen_d = mean_diff / pooled_std
# 結果の出力
print("対応ありt検定の効果量Cohen's d:", cohen_d)
# Pearson's rの計算
correlation_coefficient, _ = stats.pearsonr(test1, test2)
# 結果の出力
print("対応ありt検定の効果量Pearson's r:", correlation_coefficient)
(2)独立样本t检验效果量计算
#対応なしのt検定効果量
mean1 = np.mean(test1)
mean2 = np.mean(test2)
std1 = np.std(test1, ddof=1) # 不偏標準偏差
std2 = np.std(test2, ddof=1)
pooled_std = np.sqrt((len(test1) - 1) * std1**2 + (len(test2) - 1) * std2**2) / (len(test1) + len(test2) - 2)
d = (mean1 - mean2) / pooled_std
r, _ = stats.pearsonr(test1, test2)
print("対応なしt検定の効果量Cohen's d:", cohen_d)
print("対応なしt検定の効果量Pearson's r:", correlation_coefficient)
(3)韦尔奇t检验效果量计算
#ウェルチ検定の効果量
t_stat, p_value = stats.ttest_ind(test1, test2, equal_var=False)
# 効果量d (Cohen's d)の計算
mean_diff = np.mean(test1) - np.mean(test2)
pooled_sd = np.sqrt(((len(test1) - 1) * np.var(test1) + (len(test2) - 1) * np.var(test2)) / (len(test1) + len(test2) - 2))
effect_size_d = mean_diff / pooled_sd
# 効果量rの計算
effect_size_r = abs(mean_diff) / np.sqrt((np.std(test1)**2 + np.std(test2)**2) / 2)
# 効果量dおよび効果量rの表示
print("ウェルチ検定効果量d (Cohen's d):", effect_size_d)
print("ウェルチ検定効果量r (effect size r):", effect_size_r)
*效果量大小的指标
- 水本篤,竹内理 (2008) 研究論文における効果量の報告のために. 基礎的概念と注意点. 英語教育研究, 31:57-66