t検定について
概要
- 母分散がわからない場合に、
標本平均と母平均の差
の検定- 応用として2つの表に差があるかを確認する/対応のあるt検定/などがある
導出
あるサンプルからその平均を求める
\[\bar{x} = \frac{1}{n} \sum_{i=1}^{n}x_i\]/中心極限定理/と平均の分散の不偏推定量からサンプルの平均は正規分布に従う
\[\bar{x} \sim N \left(\mu, \frac{\sigma^2}{n} \right)\]これを標準化することで統計量を\(z\)として
\[z = \frac{\bar{x} - \mu}{\sqrt{\frac{\sigma^2}{n}}} \sim N(0, 1)\]母分散がわからないとき、不偏分散\(S^2\)を用いることで自由度\(n-1\)の\(t\)分布に近似できる
\[t = \frac{\bar{x} - \mu}{\sqrt{\frac{S^2}{n}}} \sim t(n-1)\]Pythondでの例
t検定の実行
import scipy.stats as stats
# 2つのサンプルデータ
data1 = ["データ1の値群", ...]
data2 = ["データ2の値群", ...]
# t検定の実行(等分散性を仮定)
t_statistic, p_value = stats.ttest_ind(data1, data2, equal_var=True)
print(f"t統計量: {t_statistic}, p値: {p_value}")
# t検定の実行(等分散性を仮定しない)
t_statistic, p_value = stats.ttest_ind(data1, data2, equal_var=False)
print(f"t統計量: {t_statistic}, p値: {p_value}")
t検定に必要なサンプルサイズの計算
import statsmodels.stats.power as smp
# 効果量、パワー、有意水準を設定
effect_size = 0.5 # 中程度の効果
power = 0.8
alpha = 0.05
# サンプルサイズの計算
sample_size = smp.TTestIndPower().solve_power(effect_size, power=power, alpha=alpha, ratio=1.0, alternative='two-sided')
print(f"必要なサンプルサイズ: {sample_size}")