スタートページJavaScript他言語R言語

t検定 t.test 平均の検定・信頼区間


ある成人男性の母集団から、ランダムに 100人を抽出して、身長を測定したところ、平均 170cm、標準偏差 8cm でした。

上の情報は標本から得た値で、母集団全体の値だとはいえません。異なる標本を用いたら異なる値になるでしょう。
t分布は平均に関する検定です。母集団の平均身長に関して、次のような問いに解答するのが目的です。   ・平均が 170cm だといえるか(両側検定)
  ・身長の平均は 175cm 以上だといえるか(片側検定)
これらは、単純に yes/no と決めつけることは不可能です。「信頼確率95%の条件で」yes といえるかどうかを検定するのです

検定の考え方

ここでは、t検定の数学的説明は省略して、t.test を行ったときの出力結果から判断するための考え方を示します。
「信頼確率95%で真の平均(母集団の平均)は170と差があるといえるか」を求める命令と出力結果を示します。

  t.test(v1, mu=170) 
    # 	One Sample t-test
    # data:  v1
    # t = -0.58596, df = 99, p-value = 0.5592
    # alternative hypothesis: true mean is not equal to 170
    # 95 percent confidence interval:
    #  168.0304 171.0715
    # sample estimates:
    # mean of x 
    #   169.551 サンプルでの平均

帰無仮説と対立仮説

  alternative hypothesis: true mean is not equal to 170
       └ 対立仮説     「真の平均は170 ではない」「真の平均と170の間の差が大きい」
       ⇔ 帰無仮説     「真の平均は170 である」 「真の平均と170の間の差が小さい」

帰無仮説(null hypothesis)

検定では、「平均が170と異なる」ことを証明するのに、その否定である「平均が170である」という帰無仮説をたてます。
帰無仮説が棄却(否定)されれば(仮説が帰無になる)のだから「信頼確率95%で平均は170ではない(差が大きい)」ことになります。
帰無仮説が棄却できないときは、「平均が170である」とはいえません。「平均が170だということを否定できない」と結論します。

対立仮説(alternative hypothesis)

帰無仮説に対立する仮説。帰無仮説が棄却されれば、対立仮説が真になり「平均が170と異なる」。すなわち証明すべき命題のことです。

信頼確率と有意水準

「帰無仮説が発生する確率が5%なら、命題が成立するとしよう」とするのが一般的で、それによる有意差レベルを「**」で表示します。 しかし、シビアな場合は99%(***)を用い、緩い場合は90%(*)を用いることもあります。

t値とp値

  t = -0.58596, df = 99, p-value = 0.5592

t検定で重要な指標になるのがt値とp値です。

t値は、平均のばらつきを示す指標です。信頼確率と自由度から求められます。t <- qt(p, df)
その絶対値は、
 ・信頼確率が0あるいは1に近い(条件が厳しい)とき
 ・自由度が小さい(標本が少ない)とき
に大になります。
そのため、t値の絶対値が大きいと、帰無仮説が棄却されにくくなる差があるとの命題が成立しにくくなる傾向があります。
しかし、それを数値的に示すには不十分です。

p値は、t値と自由度から計算した信頼確率です。p <- pf(t, df)
t値が大きくなるとp値は小さくなります。
このpは、帰無仮説「95%の確率で平均が170である」ことが発生する確率です。
これが小さければ(信頼水準 5%以下など)帰無仮説は」棄却され「差がある」と結論できます。

p<0.05 帰無仮説が棄却 (95%信頼確率で差がある)
p>0.05 棄却できない  (平均が170ではないとはいえない)

本例では p=0.5592 で帰無仮説は棄却できない(信頼確率95%で170だといえる)ことになりました。
平均170の乱数を標準としたのだからもっともだといもいえます。

信頼区間

    95 percent confidence interval: 95%信頼区間
    168.0304  171.0715
      下限   上限

95%の確率で、真の平均は 168.0cm ~ 171.1cm の間にあることを示しています。
170cm はこの間に入っています。
信頼確率を大にすれば、信頼区間は広くなります。

t検定の例

入力データ

ここでは実際の測定値の代わりに、平均 170、標準偏差 8 の正規分布に従う乱数を100個発生することにしました。

    vn=100:標本の大きさ
    vmean=170:標本の平均身長
    vsd=8:標本の標準偏差
とすると標本の身長の測定値(サイズ100のベクトル)v1 は次で得られます。
    v1 <- rnorm(vn, mean=vmean, sd=vsd)
# ===== 与件
vn <- 100
vmean <- 170
vsd <- 8

# ===== 乱数の発生
v1 <- rnorm(vn, mean=vmean, sd=vsd)
hist(v1)

# ===== 基本統計量
mean(v1)     # 平均値(169.5)
sd(v1)       # 標準偏差(7.66)
min(v1)      # 最小値(152.4)
max(v1)      # 最大値(190.1)
median(v1)   # 中央値(169.2)
fivenum(v1)  # 最小値 第1四分位 中央値 第3四分位 最大値
             # 152.4    164.67     169.2    174.4      190.1
vdf <- vn-1  # 自由度 vn - 1(99)

# 〓〓〓 正規分布に従っているか(シャピロ・ウィルク検定)
shapiro.test(v1)
    # 	Shapiro-Wilk normality test
    # data:  v1
    #  帰無仮説「正規分布に従っている」
    # W = 0.99098, p-value = 0.7431
    #   p>0.05 帰無仮説は棄却されない→正規分布ではないとはいえない

# 〓〓〓〓〓〓〓〓〓〓〓〓 t検定

# 〓〓〓 真の平均は 170cm だといえるか

t.test(v1, mu=170)  # 両側検定

    # 	One Sample t-test
    # data:  v1
    # t = -0.58596, df = 99, p-value = 0.5592
    #   p>0.05 なので帰無仮説は棄却できない → 平均値は170ではないとはいえない
    # alternative hypothesis: true mean is not equal to 170
    #   ⇔ 帰無仮説「平均値は170」
    # 95 percent confidence interval: 95%信頼確率での信頼区間
    #  168.0304 171.0715 (95%確率で平均値はこの間にある)
    # sample estimates:
    # mean of x 
    #   169.551 サンプルでの平均


# 〓〓〓 平均値が175以上だといえるか(Xかな)

t.test(v1, mu=175, alternative="greater") # 右片側t検定
    #                └ 対立仮説(命題:v1 > 175 を証明したい)

    # 	One Sample t-test
    # data:  v1
    # t = -7.1105, df = 99, p-value = 1
    # alternative hypothesis: true mean is greater than 175
    #   ⇔帰無仮説「平均値は175以上ではない」
    #  p>0.05 なので棄却できない → 平均値は175以上ではないとはいえない
    # 95 percent confidence interval:
    #  168.2785      Inf (95%で平均値は168.2785以上だといえる)
    # sample estimates:
    # mean of x 
    #  169.551 

# 〓〓〓 平均値が165以上だといえるか(○だろう)

t.test(v1, mu=165, alternative="greater")

    # 	One Sample t-test
    # data:  v1
    # t = 5.9386, df = 99, p-value = 2.14e-08
    # alternative hypothesis: true mean is greater than 165
    #   ⇔帰無仮説「平均値は165以上ではない」
    #  p<0.05 なので棄却 → 平均値は165以上だといえる
    # 95 percent confidence interval:
    #  168.2785      Inf (95%で平均値は168.2785以上だといえる)
    # sample estimates:
    # mean of x 
    #  169.551 

二標本の平均の差の検定

グループ v1 とグループ v2 の平均の間に差があるかの検定です。
v1 と v2 に対応があるとき
  v = v1 - v2 として、
      v = 0  だといえるか? 両側検定
    v >/<0 だといえるか? 片側検定
    をすればよいので、一標本の考え方がそのまま使えます。

データに対応がない(F検定を用いる)
  分散が等しいと仮定できる  スチューデントのt検定 →ここでの対象
         仮定できない ウェルチのt検定

# 〓〓〓 二標本の発生とヒストグラム 
v1 <- rnorm(100, mean = 170, sd = 8)  # 成人男性・身長
v2 <- rnorm(100, mean = 158, sd = 7)  # 成人女性・身長
hist(v1, col = "blue", breaks = 10, freq=F)
hist(v2, col = "red",  breaks = 10, freq=F, xlab="", ylab="", add=T)
legend("topright", legend=c("man", "woman"), col=c("blue","red"), pch=15)

# 〓〓〓 F検定(分散が同じだといえるか)

var.test(v1,v2)
    #  v2の分散/v1の分散=1 ならば分散が同じだと考えます。

    # F test to compare two variances
    # data:  v1 and v2
    # F = 0.88421, num df = 99, denom df = 99, p-value = 0.5415
    #      └ F値(説明省略)              └ 差があるとはいえない 
    # alternative hypothesis: true ratio of variances is not equal to 1
    # 95 percent confidence interval:
    #  0.5949335 1.3141432  v2の分散/v1の分散の信頼区間
    # sample estimates:
    # ratio of variances 
    #   0.8842103 = v2の分散/v1の分散

# 〓〓〓 分散が等しい二標本の平均の差があるか?(両側検定)

t.test(v1, v2, var.equal=T)
#              └ 標本個数が同じ

    # Two Sample t-test
    # data:  v1 and v2
    # t = 10.375, df = 198, p-value < 2.2e-16
    #                    └ 差がある
    # alternative hypothesis: true difference in means is not equal to 0
    # 95 percent confidence interval:
    #  9.400386 13.812478 差の信頼区間
    # sample estimates:
    # mean of x mean of y 
    # 169.5510  157.9445   v1, 2 の平均 

# 〓〓〓 男性>女性といえるか?(片側検定)
t.test(v1, v2, var.equal=T, alternative="greater") # 男性>女性?
#              └ 標本個数が同じ  └ 対立仮説(命題:v1 > v2 を証明したい)

    # Two Sample t-test
    # data:  v1 and v2
    # t = 10.375, df = 198, p-value < 2.2e-16 >だといえる
    # alternative hypothesis: true difference in means is greater than 0
    # 95 percent confidence interval:
    #  9.757727      Inf    男性-女性の差の信頼区間
    # sample estimates:
    # mean of x mean of y 
    # 169.5510  157.9445 


# 〓〓〓 男性<女性といえるか?(片側検定)
t.test(v1, v2, var.equal=T, alternative="less")    # 男性<女性?

    # Two Sample t-test
    # data:  v1 and v2
    # t = 10.375, df = 198, p-value < 1  <だとはいえない
    # alternative hypothesis: true difference in means is less than 0
    # 95 percent confidence interval:
    #   -Inf 13.45514
    # sample estimates:
    # mean of x mean of y 
    # 169.5510  157.9445