Rを用いて統計的仮説検定を学ぶ (6)
- アウトライン
-
- 作成日: 2026/1/27
- 更新日: –
はじめに
臨床試験では、「この2つのデータに本当に差があるのか?」を確認したい場面が数多くあります。そんなとき、まず思い浮かぶ代表的な方法がt検定です。
本コラムでは仮想データを用いて、Rで2群の平均値に差があるかを検定する手順と、結果の読み取り方をクイズ形式で確認します。
問題
とある試験で「体重」のデータを得た (表1)。
このデータを 男性 と 女性 に分けたとき、体重の平均値に有意な差はあるでしょうか。有意水準5%の両側検定で確認しなさい。
表1. 試験データ
| ID | 性別 | 群 | 体重 | TG |
|---|---|---|---|---|
| 1 | 男 | アクティブ | 69.5 | 88 |
| 2 | 男 | アクティブ | 70.1 | 100 |
| 3 | 男 | アクティブ | 66.1 | 65 |
| 4 | 男 | アクティブ | 69.0 | 90 |
| 5 | 女 | アクティブ | 47.2 | 70 |
| 6 | 女 | アクティブ | 45.5 | 105 |
| 7 | 女 | アクティブ | 47.8 | 95 |
| 8 | 女 | アクティブ | 44.9 | 85 |
| 9 | 男 | プラセボ | 67.8 | 135 |
| 10 | 男 | プラセボ | 65.5 | 115 |
| 11 | 男 | プラセボ | 66.6 | 170 |
| 12 | 男 | プラセボ | 70.7 | 120 |
| 13 | 男 | プラセボ | 64.3 | 180 |
| 14 | 男 | プラセボ | 70.1 | 155 |
| 15 | 女 | プラセボ | 49.0 | 200 |
| 16 | 女 | プラセボ | 49.0 | 140 |
| 17 | 女 | プラセボ | 46.6 | 110 |
| 18 | 女 | プラセボ | 46.6 | 160 |
| 19 | 女 | プラセボ | 49.0 | 150 |
| 20 | 女 | プラセボ | 50.7 | 130 |
- ヒント
-
- 帰無仮説: 男性と女性の体重平均は等しい
- 対立仮説: 男性と女性の体重平均は等しくない (両側)
解答
【スクリプト】
性別男 <- c(69.5, 70.1, 66.1, 69, 67.8, 65.5, 66.6, 70.7, 64.3, 70.1)
性別女 <- c(47.2, 45.5, 47.8, 44.9, 49, 49, 46.6, 46.6, 49, 50.7)
var.test(性別男, 性別女)
t.test(性別男, 性別女, var.equal=TRUE)
【出力】
> 性別男 <- c(69.5, 70.1, 66.1, 69, 67.8, 65.5, 66.6, 70.7, 64.3, 70.1)
> 性別女 <- c(47.2, 45.5, 47.8, 44.9, 49, 49, 46.6, 46.6, 49, 50.7)
> var.test(性別男, 性別女)
F test to compare two variances
data: 性別男 and 性別女
F = 1.5282, num df = 9, denom df = 9, p-value = 0.5375
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.3795913 6.1526552
sample estimates:
ratio of variances
1.528233
>
> t.test(性別男, 性別女, var.equal=TRUE)
Two Sample t-test
data: 性別男 and 性別女
t = 22.389, df = 18, p-value = 1.362e-14
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
18.43133 22.24867
sample estimates:
mean of x mean of y
67.97 47.63
【結果】
有意水準5% (両側)で、男性と女性の体重平均には有意差がある。このデータでは、男性の体重が女性より大きい。
解説
4.1 何を検定しているか?
このt検定は、「男性と女性で体重の平均が同じ」と仮定したときに、観測された平均差が偶然のばらつきで説明できる範囲かを評価しています。
- p値が小さいほど、「偶然だけでこの差が出る」と考えにくいです。
- 今回のp値は 1.362e-14 と極めて小さく、帰無仮説 (平均が等しい) を棄却できます。
4.2 p値だけでなく、平均差と信頼区間を見る
今回の平均は、
- 男性: 67.97 kg
- 女性: 47.63 kg
差はおよそ20 kgで、95%信頼区間は18.43 ~ 22.25 kgです。信頼区間が 0を含まないことは、「差がある」ことを別の角度から裏づけます。
さらに、差の大きさ(どれくらい違うか)も読み取れるため、実務上はp値より重要な情報になります。
4.3 分散の比較(var.test)は参考情報
原稿ではvar.test() の後にvar.equal=TRUEを用いています。今回のF検定ではp=0.5375で、等分散を否定する材料はありません。
ただし実務では、分散の事前検定は小標本や正規性の影響を受けやすいことがあるため、迷う場合はWelchのt検定 (t.testのデフォルト) を使ってもよい、という点も覚えておくと安心です。
今回のように差が非常に大きいケースでは、どちらでも結論は大きく変わりにくいでしょう。
4.4 この結果をどう扱う?
今回の差は「介入効果」ではなく、性別という属性差によるものです。臨床試験の解析では、こうした背景因子の差がアウトカム解釈に影響することがあるため、必要に応じて層別、共変量調整 (ANCOVA)、部分集団解析などにつなげて考えると、より実務的な理解になります。
まとめ
本コラムでは、2群の平均差を評価する基本手法であるt検定を、性別による体重差の例で確認しました。p値だけで結論を出すのではなく、平均差と信頼区間まで含めて読むことで、「差があるか」だけでなく「どの程度違うか」まで把握できます。
t検定はR以外にもExcelやPythonで実行できますが、Rはスクリプトとして手順を残しやすく、結果 (p値・信頼区間・平均など) がまとまって出力されるため、再現性と解釈のしやすさの点で扱いやすい環境です。業務や研究でt検定を繰り返し使う場面では、Rを活用することで分析をより安定して進められます。





