STEP 18:t検定の実践(ExcelとPython)

📊 STEP 18: t検定の実践(ExcelとPython)

平均値の差を統計的に検証しよう

📋 このステップで学ぶこと

  • t検定の3つのタイプ(1標本、2標本、対応あり)
  • それぞれの使い分け
  • Excelでの実装(T.TEST関数)
  • Pythonでの実装(scipy.stats)
  • 実務での活用例

学習時間の目安:3.5時間

🔍 1. t検定の種類

3つのt検定

📌 t検定の分類

t検定には、3つのタイプがあります

1. 1標本t検定(One-sample t-test)
・1つのグループの平均が、ある特定の値と異なるかを検定
・例:「当社の顧客満足度は、業界平均の75点と差があるか?」

2. 2標本t検定(Two-sample t-test)- 対応なし
2つの独立したグループの平均に差があるかを検定
・例:「男性と女性で、購入金額に差があるか?」

3. 対応のあるt検定(Paired t-test)
同じグループの前後で、平均に差があるかを検定
・例:「広告導入の前後で、売上に差があるか?」

どのt検定を使うか?

💡 t検定の選び方フローチャート

ステップ1:比較するグループの数は?
└ 1つ → 1標本t検定
└ 2つ → ステップ2へ

ステップ2:2つのグループは独立している?
└ はい(別々の人・対象)→ 2標本t検定(対応なし)
└ いいえ(同じ人・対象の前後)→ 対応のあるt検定

具体例:
・業界平均と比較 → 1標本
・男性 vs 女性 → 2標本(対応なし)
・AグループとBグループ(ランダム割り当て)→ 2標本(対応なし)
・導入前 vs 導入後(同じ店舗)→ 対応あり
・ダイエット前 vs ダイエット後(同じ人)→ 対応あり

検定 状況 Python Excel
1標本 1つのグループと基準値を比較 当社 vs 業界平均 ttest_1samp 手動計算
2標本(対応なし) 2つの独立したグループを比較 男性 vs 女性 ttest_ind T.TEST(…,2,2)
対応あり 同じグループの前後を比較 導入前 vs 導入後 ttest_rel T.TEST(…,2,1)

📊 2. 1標本t検定

1標本t検定とは

📌 1標本t検定の目的

1つのグループの平均が、ある特定の値(基準値)と異なるかを検定

仮説:
・H₀:平均 = 基準値(差がない)
・H₁:平均 ≠ 基準値(差がある)

ビジネス例:
・当社の顧客満足度は、業界平均(75点)と差があるか?
・新商品の重量は、規格値(500g)と差があるか?
・平均購入金額は、目標値(5000円)に達しているか?

Pythonでの実装

# 1標本t検定の実装 import numpy as np from scipy import stats # サンプルデータ:顧客満足度スコア 顧客満足度 = [78, 82, 76, 80, 75, 79, 81, 77, 83, 80, 78, 82, 79, 81, 77, 80, 76, 84, 79, 81] # 基準値(業界平均) 業界平均 = 75 print(“【データの概要】”) print(f”サンプルサイズ: {len(顧客満足度)}人”) print(f”当社の平均: {np.mean(顧客満足度):.2f}点”) print(f”業界平均: {業界平均}点”) print(f”差: {np.mean(顧客満足度) – 業界平均:.2f}点”) # 仮説の設定 print(“\n【仮説の設定】”) print(f”H₀: 当社の平均満足度 = {業界平均}点(業界平均と同じ)”) print(f”H₁: 当社の平均満足度 ≠ {業界平均}点(業界平均と異なる)”) # 1標本t検定 t_stat, p_value = stats.ttest_1samp(顧客満足度, 業界平均) print(“\n【検定結果】”) print(f”t統計量: {t_stat:.4f}”) print(f”p値: {p_value:.4f}”) # 判定 alpha = 0.05 print(f”\n【判定】(α={alpha})”) if p_value < alpha: print(f"p値({p_value:.4f}) < α({alpha})") print("→ 帰無仮説を棄却") print("→ 当社の満足度は業界平均と異なる(統計的に有意)") if np.mean(顧客満足度) > 業界平均: print(“→ 当社は業界平均より高い!”) else: print(“→ 当社は業界平均より低い…”) else: print(f”p値({p_value:.4f}) ≥ α({alpha})”) print(“→ 帰無仮説を棄却できない”) print(“→ 当社の満足度が業界平均と異なるとは言えない”)
# 出力例 【データの概要】 サンプルサイズ: 20人 当社の平均: 79.45点 業界平均: 75点 差: 4.45点 【仮説の設定】 H₀: 当社の平均満足度 = 75点(業界平均と同じ) H₁: 当社の平均満足度 ≠ 75点(業界平均と異なる) 【検定結果】 t統計量: 9.3527 p値: 0.0000 【判定】(α=0.05) p値(0.0000) < α(0.05) → 帰無仮説を棄却 → 当社の満足度は業界平均と異なる(統計的に有意) → 当社は業界平均より高い!

Excelでの実装

【Excelでの1標本t検定】 Excelには1標本t検定の専用関数がないため、手動で計算します。 【手順】 データ:A1:A20に顧客満足度データ 基準値:75(業界平均) 1. 平均を計算(C1セル): =AVERAGE(A1:A20) 2. 標準偏差を計算(C2セル): =STDEV.S(A1:A20) 3. サンプルサイズ(C3セル): =COUNT(A1:A20) 4. 標準誤差(C4セル): =C2/SQRT(C3) 5. t統計量(C5セル): =(C1-75)/C4 6. p値(C6セル): =T.DIST.2T(ABS(C5), C3-1) → p値 < 0.05 なら、統計的に有意な差あり

👥 3. 2標本t検定(対応なし)

2標本t検定とは

📌 2標本t検定の目的

2つの独立したグループの平均に差があるかを検定

「独立している」とは:
・2つのグループに重複がない
・片方のグループの値が、もう片方に影響しない

仮説:
・H₀:グループAの平均 = グループBの平均(差がない)
・H₁:グループAの平均 ≠ グループBの平均(差がある)

ビジネス例:
・男性と女性で、購入金額に差があるか?
・東京と大阪で、売上に差があるか?
・AプランとBプランで、成約率に差があるか?

Pythonでの実装

# ============================================ # 2標本t検定(対応なし)の実装 # ============================================ # いつ使うか? # → 2つの独立したグループの平均を比較したい時 # → 例:男性 vs 女性、東京 vs 大阪、プランA vs プランB import numpy as np from scipy import stats # ============================================ # サンプルデータ:男性と女性の購入金額 # ============================================ # 2つのグループに重複がない(独立している) 男性 = [3500, 4200, 3800, 4500, 3900, 4100, 3700, 4300, 4000, 3800] 女性 = [5200, 5800, 5500, 6000, 5400, 5700, 5300, 5900, 5600, 5500] print(“【データの概要】”) print(f”男性の平均購入金額: {np.mean(男性):.0f}円(n={len(男性)})”) print(f”女性の平均購入金額: {np.mean(女性):.0f}円(n={len(女性)})”) print(f”差: {np.mean(女性) – np.mean(男性):.0f}円”) # 仮説の設定 print(“\n【仮説の設定】”) print(“H₀(帰無仮説): 男性と女性の平均購入金額に差はない”) print(“H₁(対立仮説): 男性と女性の平均購入金額に差がある”) # ============================================ # 等分散性の検定(Leveneの検定) # ============================================ # なぜ等分散性を確認するか? # → t検定には「2群の分散が等しい」という仮定がある # → 仮定が満たされない場合、Welchのt検定を使う # # stats.levene(): 等分散性を検定 # p > 0.05 → 等分散と仮定できる # p ≤ 0.05 → 等分散と仮定できない stat, p_levene = stats.levene(男性, 女性) print(f”\n【等分散性の検定(Leveneの検定)】”) print(f”p値: {p_levene:.4f}”) if p_levene > 0.05: print(“→ 等分散と仮定できる → 通常のt検定を使用”) equal_var = True else: print(“→ 等分散と仮定できない → Welchのt検定を使用”) equal_var = False # ============================================ # stats.ttest_ind(): 独立2標本t検定 # ============================================ # パラメータ: # equal_var=True: 等分散を仮定(Studentのt検定) # equal_var=False: 等分散を仮定しない(Welchのt検定) # # 戻り値: # t_stat: t統計量 # p_value: p値(両側検定) t_stat, p_value = stats.ttest_ind(男性, 女性, equal_var=equal_var) print(“\n【検定結果】”) print(f”t統計量: {t_stat:.4f}”) print(f”p値: {p_value:.4f}”) # 判定 alpha = 0.05 print(f”\n【判定】(有意水準α={alpha})”) if p_value < alpha: print(f"p値({p_value:.4f}) < α({alpha})") print("→ 帰無仮説を棄却") print("→ 男性と女性で購入金額に差がある(統計的に有意)") if np.mean(女性) > np.mean(男性): print(“→ 女性の方が購入金額が高い”) else: print(“→ 男性の方が購入金額が高い”) else: print(f”p値({p_value:.4f}) ≥ α({alpha})”) print(“→ 帰無仮説を棄却できない”) print(“→ 差があるとは言えない”)
# 出力例 【データの概要】 男性の平均購入金額: 3980円 女性の平均購入金額: 5590円 差: 1610円 【等分散性の検定】 Leveneの検定 p値: 0.8234 → 等分散と仮定できる → 通常のt検定 【検定結果】 t統計量: -15.7821 p値: 0.0000 【判定】(α=0.05) p値(0.0000) < α(0.05) → 帰無仮説を棄却 → 男性と女性で購入金額に差がある(統計的に有意) → 女性の方が購入金額が高い

Excelでの実装

【Excel関数:T.TEST】 =T.TEST(配列1, 配列2, 尾部, 検定の種類) 【引数の説明】 配列1:1つ目のグループのデータ範囲(例:A1:A10) 配列2:2つ目のグループのデータ範囲(例:B1:B10) 尾部:1(片側検定)または 2(両側検定)→ 通常は2 検定の種類: 1 = 対応のあるt検定 2 = 等分散を仮定した2標本t検定 3 = 等分散を仮定しない2標本t検定(Welchのt検定) 【実例】 男性のデータ:A1:A10 女性のデータ:B1:B10 =T.TEST(A1:A10, B1:B10, 2, 2) → p値が返される → p < 0.05 なら、統計的に有意な差あり
💡 等分散性の確認

2標本t検定では、2つのグループの分散が等しいかを確認する必要があります

等分散性の検定(Leveneの検定):
・p > 0.05 → 等分散と仮定できる → 通常のt検定
・p < 0.05 → 等分散と仮定できない → Welchのt検定

Excelの場合:
・等分散を仮定:=T.TEST(..., 2, 2)
・等分散を仮定しない:=T.TEST(..., 2, 3)

🔄 4. 対応のあるt検定

対応のあるt検定とは

📌 対応のあるt検定の目的

同じグループ(または対象)の前後で、平均に差があるかを検定

「対応がある」とは:
同じ人・対象を2回測定
・前後、Before/After の比較
・ペアになっているデータ

仮説:
・H₀:前の平均 = 後の平均(差がない)
・H₁:前の平均 ≠ 後の平均(差がある)

ビジネス例:
・広告導入の前後で、売上に差があるか?
・研修の前後で、スキルスコアに差があるか?
・価格変更の前後で、売上に差があるか?

Pythonでの実装

# 対応のあるt検定の実装 import numpy as np from scipy import stats # サンプルデータ:広告導入前後の売上(同じ10店舗) 導入前 = [120, 115, 130, 125, 118, 122, 128, 121, 119, 126] 導入後 = [135, 142, 138, 145, 140, 136, 144, 139, 141, 143] print(“【データの概要】”) print(f”導入前の平均売上: {np.mean(導入前):.1f}万円”) print(f”導入後の平均売上: {np.mean(導入後):.1f}万円”) print(f”差の平均: {np.mean(導入後) – np.mean(導入前):.1f}万円”) print(f”サンプルサイズ: {len(導入前)}店舗(同じ店舗の前後)”) # 仮説の設定 print(“\n【仮説の設定】”) print(“H₀: 導入前後で売上に差はない”) print(“H₁: 導入前後で売上に差がある”) # 対応のあるt検定 t_stat, p_value = stats.ttest_rel(導入後, 導入前) print(“\n【検定結果】”) print(f”t統計量: {t_stat:.4f}”) print(f”p値: {p_value:.4f}”) # 判定 alpha = 0.05 print(f”\n【判定】(α={alpha})”) if p_value < alpha: print(f"p値({p_value:.4f}) < α({alpha})") print("→ 帰無仮説を棄却") print("→ 導入前後で売上に差がある(統計的に有意)") print("→ 広告の効果あり!") # 信頼区間の計算 差 = np.array(導入後) - np.array(導入前) 信頼区間 = stats.t.interval(0.95, len(差)-1, loc=np.mean(差), scale=stats.sem(差)) print(f"\n95%信頼区間: {信頼区間[0]:.2f}万円 〜 {信頼区間[1]:.2f}万円") print(f"→ 真の効果は、この範囲にある可能性が95%") else: print(f"p値({p_value:.4f}) ≥ α({alpha})") print("→ 帰無仮説を棄却できない")
# 出力例 【データの概要】 導入前の平均売上: 122.4万円 導入後の平均売上: 140.3万円 差の平均: 17.9万円 サンプルサイズ: 10店舗(同じ店舗の前後) 【仮説の設定】 H₀: 導入前後で売上に差はない H₁: 導入前後で売上に差がある 【検定結果】 t統計量: 12.2541 p値: 0.0000 【判定】(α=0.05) p値(0.0000) < α(0.05) → 帰無仮説を棄却 → 導入前後で売上に差がある(統計的に有意) → 広告の効果あり! 95%信頼区間: 14.71万円 〜 21.09万円 → 真の効果は、この範囲にある可能性が95%

Excelでの実装

【Excel関数:T.TEST(対応あり)】 =T.TEST(導入後, 導入前, 2, 1) 【引数】 導入後:A1:A10 導入前:B1:B10 2:両側検定 1:対応のあるt検定 【実例】 =T.TEST(A1:A10, B1:B10, 2, 1) → p値が返される → p < 0.05 なら、統計的に有意な差あり 【信頼区間の計算】 差の平均:=AVERAGE(A1:A10)-AVERAGE(B1:B10) 差の標準偏差:=STDEV.S(A1:A10-B1:B10) ※ 配列数式として入力(Ctrl+Shift+Enter) 信頼区間の幅: =CONFIDENCE.T(0.05, 差の標準偏差, サンプル数) 下限:差の平均 - 信頼区間の幅 上限:差の平均 + 信頼区間の幅

⚠️ 5. よくある間違いと注意点

対応なし vs 対応ありの混同

⚠️ 対応なし vs 対応ありの混同

間違った例:

状況:同じ10店舗の、導入前後の売上を比較
誤り:2標本t検定(対応なし)を使う
正解:対応のあるt検定を使う

なぜ間違いか:
・同じ店舗のデータなので、独立していない
・店舗ごとの特性(立地、客層など)が、前後で共通
・対応なしt検定を使うと、検出力が下がる(効果を見逃しやすい)

判断基準:
「前のデータと後のデータが、同じ対象か?」
→ Yesなら対応あり、Noなら対応なし

t検定の前提条件

💡 t検定の前提条件

1. データが正規分布に従う(またはサンプルサイズが大きい)

  • n ≥ 30:正規性の確認なしで使える(中心極限定理)
  • n < 30:正規性を確認すべき
  • 正規性がない場合:ノンパラメトリック検定を検討

2. 2標本t検定の場合:等分散性

  • Leveneの検定で確認
  • 等分散でない場合:Welchのt検定を使用

3. データが独立(対応なしの場合)

  • 2つのグループに重複がない
  • 同じ対象の前後なら、対応ありt検定を使う

正規性の確認

# 正規性の確認 import numpy as np from scipy import stats import matplotlib.pyplot as plt # サンプルデータ data = [78, 82, 76, 80, 75, 79, 81, 77, 83, 80, 78, 82, 79, 81, 77, 80, 76, 84, 79, 81] # Shapiro-Wilk検定 stat, p = stats.shapiro(data) print(“【正規性の検定(Shapiro-Wilk検定)】”) print(f”統計量: {stat:.4f}”) print(f”p値: {p:.4f}”) if p > 0.05: print(“→ p > 0.05: 正規分布と仮定できる → t検定OK”) else: print(“→ p < 0.05: 正規分布と仮定できない → ノンパラメトリック検定を検討") # 正規性がない場合の代替検定 print("\n【正規性がない場合の代替検定】") print("・1標本: Wilcoxonの符号順位検定") print("・2標本(対応なし): Mann-Whitney U検定") print("・対応あり: Wilcoxonの符号順位検定")

📝 STEP 18 のまとめ

✅ このステップで学んだこと

1. 3つのt検定

  • 1標本t検定:1つのグループと基準値を比較
  • 2標本t検定:2つの独立したグループを比較
  • 対応のあるt検定:同じグループの前後を比較

2. 実装方法

  • Python:scipy.statsで簡単に実装
  • Excel:T.TEST関数で実装

3. 注意点

  • 対応なし vs 対応ありを間違えない
  • 等分散性を確認(2標本t検定)
  • 正規性を確認(特にサンプルが小さい場合)
💡 最も大切なポイント

t検定は、ビジネスで最もよく使われる統計検定です!

選び方のポイント:
・比較するグループは何個? → 1つなら1標本、2つなら次へ
・2つのグループは独立? → Yesなら2標本、Noなら対応あり

実務での注意:
・p値だけでなく、効果の大きさ(平均の差)も確認
信頼区間を計算して、効果の範囲を把握
・サンプルサイズが小さいと、検出力が下がる

次のSTEP 19では、カイ二乗検定の実践を学びます!

🎯 次のステップの予告

STEP 19では、「カイ二乗検定の実践」を学びます。カテゴリデータの関連性を検証する方法を習得しましょう!

📝 練習問題

問題 1 基礎

次の状況では、どのt検定を使うべきですか?

(1) A支店とB支店の月間売上を比較
(2) 社員研修の前後でスキルテストのスコアを比較
(3) 当社の平均給与が、業界平均(450万円)と異なるかを検証

【解答】

(1) 2標本t検定(対応なし)

理由:A支店とB支店は独立した2つのグループ
Python: stats.ttest_ind(A支店, B支店)
Excel: =T.TEST(A1:A10, B1:B10, 2, 2)

(2) 対応のあるt検定

理由:同じ社員の前後を比較
Python: stats.ttest_rel(研修後, 研修前)
Excel: =T.TEST(A1:A10, B1:B10, 2, 1)

(3) 1標本t検定

理由:1つのグループ(当社)と基準値(450万円)を比較
Python: stats.ttest_1samp(当社給与, 450)
Excel: 手動計算

問題 2 基礎

ExcelのT.TEST関数について、以下の問いに答えてください。

=T.TEST(A1:A10, B1:B10, 2, 1)

この関数の各引数の意味は何ですか?

【解答】

=T.TEST(A1:A10, B1:B10, 2, 1)

A1:A10:1つ目のグループのデータ範囲

B1:B10:2つ目のグループのデータ範囲

2:両側検定(1なら片側検定)

1:対応のあるt検定

検定の種類:
1 = 対応のあるt検定
2 = 等分散を仮定した2標本t検定
3 = Welchのt検定(等分散を仮定しない)

問題 3 応用

以下のデータで、対応のあるt検定を実行してください。

状況:新しいパッケージデザイン導入前後の売上(同じ8店舗)
導入前:[100, 95, 110, 105, 98, 102, 108, 101]
導入後:[115, 108, 120, 118, 105, 110, 122, 112]

有意水準α=0.05で、効果はありますか?

【解答】

使うべきt検定:対応のあるt検定

理由:同じ8店舗の前後を比較

import numpy as np from scipy import stats 導入前 = [100, 95, 110, 105, 98, 102, 108, 101] 導入後 = [115, 108, 120, 118, 105, 110, 122, 112] print(f”導入前の平均: {np.mean(導入前):.1f}”) print(f”導入後の平均: {np.mean(導入後):.1f}”) print(f”差: {np.mean(導入後) – np.mean(導入前):.1f}”) t, p = stats.ttest_rel(導入後, 導入前) print(f”\nt統計量: {t:.4f}”) print(f”p値: {p:.4f}”)

結果:

・導入前の平均: 102.4
・導入後の平均: 113.8
・差: 11.4
・t統計量: 6.7082
・p値: 0.0003

判定:
p値(0.0003)< α(0.05)→ 帰無仮説を棄却
→ 新しいパッケージデザインの効果あり

問題 4 応用

等分散性の検定について説明してください。

(1) なぜ等分散性を確認する必要があるのですか?
(2) Pythonでどのように確認しますか?
(3) 等分散でない場合、どうすれば良いですか?

【解答】

(1) なぜ確認が必要か:

通常の2標本t検定は、2つのグループの分散が等しいことを前提としています。この前提が満たされないと、検定結果が不正確になる可能性があります。

(2) Pythonでの確認方法:

from scipy.stats import levene stat, p = levene(グループA, グループB) print(f”Leveneの検定 p値: {p:.4f}”) if p > 0.05: print(“→ 等分散と仮定できる”) else: print(“→ 等分散と仮定できない”)

(3) 等分散でない場合:

Welchのt検定を使用します

Python: stats.ttest_ind(A, B, equal_var=False)
Excel: =T.TEST(A1:A10, B1:B10, 2, 3)

問題 5 実践

以下の2つのケースで、それぞれ適切なt検定を選び、理由を説明してください。

ケースA:
同じ20人の顧客に、サービス改善前後で満足度調査を実施

ケースB:
ランダムに選んだ30人の顧客を、15人ずつAグループとBグループに分け、
それぞれ異なるサービスを提供し、満足度を比較

【解答】

ケースA:対応のあるt検定

理由:
同じ20人の顧客を2回測定
・改善前と改善後で、対応がある
・各顧客の個人差(元々の満足度の高さなど)を考慮できる

Python: stats.ttest_rel(改善後, 改善前)
Excel: =T.TEST(改善後, 改善前, 2, 1)

ケースB:2標本t検定(対応なし)

理由:
異なる顧客のグループ(Aグループ15人、Bグループ15人)
・2つのグループは独立している
・ランダムに割り当てられているので、重複なし

Python: stats.ttest_ind(Aグループ, Bグループ)
Excel: =T.TEST(A1:A15, B1:B15, 2, 2)

ポイント:
同じ対象の前後 → 対応あり
異なる対象のグループ → 対応なし

対応のあるt検定の方が、検出力が高い(効果を見つけやすい)ので、可能なら対応のあるデザインを選ぶべき!

❓ よくある質問

Q1: サンプルサイズが小さい場合でも、t検定は使えますか?
はい、使えますが、いくつかの条件があります。

t検定の前提:
・データが正規分布に従う(または近似)
・サンプルサイズが小さいほど、この前提が重要

サンプルサイズの目安:
・n ≥ 30:正規性の確認なしで使える(中心極限定理)
・n < 30:正規性を確認すべき
・n < 10:慎重に。ノンパラメトリック検定も検討

正規性の確認方法:
・ヒストグラムや Q-Qプロットで視覚的に確認
・Shapiro-Wilk検定(Python: stats.shapiro(data)

正規性がない場合:
・Mann-Whitney U検定(対応なし)
・Wilcoxon符号順位検定(対応あり)
Q2: 3つ以上のグループを比較したい場合は?
ANOVA(分散分析)を使います。

t検定の制限:
・t検定は2つのグループの比較のみ
・3つ以上のグループには使えない

3つ以上のグループの比較:
一元配置ANOVA(One-way ANOVA)を使う
・例:A店、B店、C店の売上を比較

Pythonでの実装:
from scipy.stats import f_oneway
f, p = f_oneway(A店, B店, C店)

注意:
・複数のt検定を繰り返すのはNG!(多重比較問題)
・まずANOVAで「少なくとも1つのグループに差がある」を確認
・その後、どのペアに差があるかを多重比較法で検証
Q3: Excelで信頼区間を計算するには?
CONFIDENCE.T関数を使います。

95%信頼区間の計算:
=AVERAGE(A1:A10) ± CONFIDENCE.T(0.05, STDEV.S(A1:A10), COUNT(A1:A10))

引数の説明:
・0.05:有意水準(95%信頼区間なら0.05)
・STDEV.S(A1:A10):標準偏差
・COUNT(A1:A10):サンプルサイズ

実例:
平均 = 100、標準偏差 = 10、サンプルサイズ = 20

下限:=100 - CONFIDENCE.T(0.05, 10, 20)
上限:=100 + CONFIDENCE.T(0.05, 10, 20)

→ 95%信頼区間:[95.3, 104.7]
Q4: 等分散性の検定で p > 0.05 なら、必ず等分散と仮定できますか?
「棄却できない」≠「等しい」なので、慎重に判断してください。

等分散性の検定(Leveneの検定):
・H₀:2つのグループの分散は等しい
・p > 0.05 → H₀を棄却できない

解釈:
・「分散が異なる」とは言えない
・でも「完全に等しい」わけではない

実務的な対応:
・p > 0.05 なら、等分散と仮定して通常のt検定
・p < 0.05 なら、Welchのt検定を使う
・迷ったら、Welchのt検定を使う(より安全)

Python:
stats.ttest_ind(A, B, equal_var=False)(Welch)

Excel:
=T.TEST(A1:A10, B1:B10, 2, 3)(Welch)
Q5: 対応のあるt検定で、データのペアが欠損している場合は?
欠損がある対象を除外して、完全なペアのみで検定します。

例:
10人の顧客で、前後を比較
・顧客A:前=80、後=85 → OK
・顧客B:前=75、後=欠損 → 除外
・顧客C:前=欠損、後=90 → 除外

Pythonでの処理:
import pandas as pd
df = pd.DataFrame({'前': 前, '後': 後})
df_完全 = df.dropna() # 欠損を除外
stats.ttest_rel(df_完全['後'], df_完全['前'])

注意:
・サンプルサイズが大きく減ると、検出力が下がる
・欠損が多い場合は、欠損の理由を調査
・ランダムな欠損でないと、バイアスの可能性
Q6: t検定の結果をレポートするには、どう書けば良いですか?
統計結果を正しく報告するフォーマットがあります。

標準的な報告フォーマット:
「t(自由度) = t値, p = p値」

例1:有意な場合
「男性と女性の購入金額に有意な差が見られた(t(18) = -15.78, p < .001)。女性(M = 5,590円, SD = 245)は男性(M = 3,980円, SD = 302)より購入金額が高かった。」

例2:有意でない場合
「AプランとBプランの成約率に有意な差は見られなかった(t(28) = 1.23, p = .228)。」

含めるべき情報:
・検定の種類(1標本、2標本、対応あり)
・t値と自由度
・p値(または「p < .05」「p < .001」)
・平均と標準偏差
・効果の方向(どちらが高いか)
📝

学習メモ

ビジネスデータ分析・意思決定 - Step 18

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE