目次(まとめ)

◾️ 2つの数値データの「平均値」を使って検定

◾️ 2つの数値データに「対応」があるかどうかによって実行方法が異なる

◾️ 対応がないt-検定では、分散を考慮して、2つの検定手法を使い分ける必要がある

◾️ 対応があるt-検定では、分散を考慮せず、1つの検定手法を適用する

◾️ 関連記事


こんにちは、みっちゃんです。

今回の記事では、2種類の数値データ(正規分布にしたがう)があったとき、そのデータ間に意味のある差があるかどうか検定するため、Rを使ってt-検定を行う手順を解説します。

2つの数値データの「平均値」を使って検定

今回の記事では、Rという無料の統計解析ソフトウェアを、Macのターミナルというソフトウェア上で行う手順を解説します(Rの使用方法については、こちらの記事をご覧ください)。

まず、ターミナル上でRを起動して、仮の数値データを準備します。ここでは、標準正規分布に基づく乱数を10個発生させています(正規分布については、こちらの記事をご覧ください)。

$ R -q
> num_a <- rnorm(10)
> num_b <- rnorm(10)

この操作を行うことで、標準正規分布にしたがう乱数が10個ずつ "num_a" と "num_b" という変数に保存されます。

ちなみに、平均 \(\mu\) と標準偏差 \(\sigma\) を「rnorm(10, \(\mu\), \(\sigma\))」と指定すれば、正規分布にしたがう乱数を10個生成することができます。

以下のように確認することができます。

> num_a
 [1]  0.06921037  1.31435876 -0.13490667 -0.82222162 -0.68372956  0.13090847
 [7]  0.19503523 -0.54451818  1.08138514 -0.87732370
>
> num_b
 [1] -0.97197369 -0.80049965 -1.76252520  1.26708058 -0.50004732 -0.61888550
 [7]  1.04205510 -0.29763897 -0.02399204 -1.37044010

ここでは、この2つの変数("num_a" と "num_b")に保存された数値データがどのようなものなのか可視化するために、箱ひげ図(ボックスプロット)を作成してみます。

Rでは、以下のように実行するだけです。

> boxplot(num_a, num_b, names = c("A", "B"))

"names" の箇所は必須項目ではありませんが、それぞれの箱ひげ図の名前を指定することができます。

箱ひげ図で、箱の中に引かれている太線は「中央値」を示しています。したがって、今回の例では、Bと名付けられた "num_b" に保存されている数値データの中央値が、Aと名付けられた "num_a" に保存されている数値データの中央値より小さいことがわかります。

t-検定では、このAとBの差が「意味がある」と言えるのか、それぞれの数値データの「平均値」を使って検定します。

2つの数値データに「対応」があるかどうかによって実行方法が異なる

2つの数値データを比較する場合に「対応」があるかどうかを認識しておく必要があります。

例えば、「中学校Aの生徒10名の数学の点数」と「中学校Bの生徒10名の数学の点数」を比較して、平均値に基づき差があるか検定したいとします。

この場合には、「中学校Aの生徒」と「中学校Bの生徒」は別人なので、対応がないt-検定を行うべきです。

一方、「薬Aを服用した場合の治験者10名の血中濃度」と「薬Bを服用した場合の治験者10名の血中濃度」を比較して、平均値に基づき差があるか検定したいとします。

ここで、治験者10名は、薬Aの場合と薬Bの場合で、同じ10名だとすると、対応があるt-検定を行うことになります。

※t-検定を行う前提条件として、2つの数値データが、それぞれ正規分布にしたがうと考えられる必要があります

対応がないt-検定では、分散を考慮して、2つの検定手法を使い分ける必要がある

2つの数値データについて、分散が等しいと仮定できる場合には、以下のように実行します。

> t.test(num_a, num_b, var.equal=T, paired=F)

"t.test" という関数の引数として、上で準備した "num_a" と "num_b" を入れています。

いま対応がないt-検定を考えているので、"paired" というオプションを "F"(Falseの意味)に指定し、分散が等しいと考えているので、"var.equal" というオプションを "T"(Trueの意味)に指定しています。

実行すると、以下のように「Two Sample t-test(ステューデントのt-検定)」が実施されます。

	Two Sample t-test

data:  num_a and num_b
t = 0.971, df = 18, p-value = 0.3444
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.4381273  1.1911404
sample estimates:
  mean of x   mean of y 
-0.02718017 -0.40368668 

この検定についての理論については、こちらの記事をご参照ください。

同じように、2つの数値データについて、分散が等しいと仮定できない場合には、以下のように実行します。

> t.test(num_a, num_b, var.equal=F, paired=F)

この場合には、以下のように「Welch Two Sample t-test(ウェルチのt-検定)」が実施されます。

	Welch Two Sample t-test

data:  num_a and num_b
t = 0.971, df = 17.06, p-value = 0.3451
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.4413574  1.1943704
sample estimates:
  mean of x   mean of y 
-0.02718017 -0.40368668 

どちらの検定の場合でも、"p-value" が一般的な有意水準0.05より大きいので、「数値データ間には有意な差がない」と主張する帰無仮説が棄却できず、数値データ間には有意な差がないと判断されます。

対応があるt-検定では、分散を考慮せず、1つの検定手法を適用する

同じように、対応があるt-検定では、以下のように実行します。

対応があるt-検定では、分散については、気にする必要がありません。

> t.test(num_a, num_b, paired=T)

この場合には、以下のように「Paired t-test」が実施されます。

	Paired t-test

data:  num_a and num_b
t = 0.95486, df = 9, p-value = 0.3646
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.5154705  1.2684835
sample estimates:
mean of the differences 
              0.3765065 

この検定の場合でも、"p-value" が一般的な有意水準0.05より大きいので、「数値データ間には有意な差がない」と主張する帰無仮説が棄却できず、数値データ間には有意な差がないと判断されます。

関連記事