忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【R言語】独立な2群のt検定(ウェルチのt検定)の基本手順とサンプルコード

t検定は、独立した2つのグループの平均値に、統計的に意味のある差(有意差)があるかどうかを検証するための基本的な統計手法です。例えば、「男性と女性の身長の比較」など、お互いに影響を及ぼさない2つの母集団の平均を比べたいときに用いられます。

0. t検定の前提条件について(正規分布の仮定)

t検定を行う上での理論上の前提として、「比較する2つのグループのデータがそれぞれ正規分布に従っていること」という条件(正規性の仮定)があります。

実際のデータ分析においては以下のポイントを押さえておきましょう。

  • 中心極限定理による頑健性(ロバスト性): サンプルサイズが十分にある場合(各群30〜50以上が目安)、データが多少正規分布から外れていてもt検定の結果は信頼できます。
  • サンプルサイズが非常に少ない場合: データ数が少なく、かつ正規分布から大きくかけ離れている場合は、ノンパラメトリック検定であるマン・ホッケーのU検定(wilcox.test())の利用を検討します。

今回は、あらかじめ rnorm() 関数を使って「正規分布に従うデータ」を生成して検証を行います。

1. サンプルデータの作成(rnorm関数について)

【 手順 】 手元に実データがない場合でも、Rの rnorm() 関数を使えばテスト用のデータ(正規乱数)を簡単に作ることができます。

→ rnorm(n, mean, sd) は、正規分布に従う乱数を発生させる関数(random normal distribution)です。個数・平均値・標準偏差を指定してシミュレーションデータを作成します。

【 サンプルコード 】

# 1. 再現性のための乱数シードの設定
set.seed(123)

# 2. rnorm() を使って男性と女性のダミーデータを生成
male_height <- rnorm(n = 50, mean = 171.5, sd = 5.8)
female_height <- rnorm(n = 50, mean = 158.0, sd = 5.2)

# 3. データフレームへの統合
df <- data.frame(
  gender = factor(rep(c("Male", "Female"), each = 50)),
  height = c(male_height, female_height)
)

# データの先頭6行を確認
head(df)

【 実行結果 】

  gender   height
1   Male 168.2492
2   Male 170.1650
3   Male 180.5405
4   Male 171.9089
5   Male 172.2499
6   Male 181.4474

2. t検定の実行手順

【 手順 】 検定を行う前に記述統計量を確認し、その後 t.test() 関数で検定を実行します。

【 サンプルコード 】

# Step 1: 性別ごとの平均値と標準偏差を算出
aggregate(height ~ gender, data = df, FUN = function(x) c(mean = mean(x), sd = sd(x)))

# Step 2: 2標本t検定の実行(ウェルチのt検定がデフォルト)
res <- t.test(height ~ gender, data = df)

# 検定結果のコンソール出力
print(res)

【 実行結果 】

# Step 1 の結果
  gender height.mean  height.sd
1 Female  158.761323   4.708325
2   Male  171.699541   5.370046

# Step 2 の結果(print(res))
        Welch Two Sample t-test

data:  height by gender
t = -12.81, df = 96.353, p-value < 2.2e-16
alternative hypothesis: true difference in means between group Female and group Male is not equal to 0
95 percent confidence interval:
 -14.94297 -10.93346
sample estimates:
mean in group Female   mean in group Male 
            158.7613             171.6995 

3. 結果の見方とまとめ

【 ポイント 】

[ t検定結果の読み方 ]

1.p-value(p値)
→ p-value < 2.2e-16(ほぼ0)のため、有意水準0.05未満となり「男女の平均身長には統計的に有意な差がある」と結論づけられます。

2.95%信頼区間
→ 平均値の差(女性 - 男性)が約 -14.94cm から -10.93cm の範囲にあると推定されます。

3.サンプル平均
→ 女性は約158.76cm、男性は約171.70cmであることが確認できます。


4. まとめ

Rの rnorm() と t.test() を使えば、手元にデータがなくても簡単に統計検定のシミュレーションが行えます。データの比較を行う際は、ぜひこの手順を試してみてください。


PR