1 一標本 t 検定

このページは、市原清志先生の「バイオサイエンスの統計学」の問題を、統計ソフト”R”で解説するものです。 詳細については、市原先生のテキスト(p28)を参照ください。

1.1 [基本]

n組のデータにつき各ペアの差 \(d\) を求め、その平均値 \(\overline{d}\) を統計量とする。
<帰無仮説>
   \(d\sim N(0\:,\:\sigma_d^2)\)(各ペアに差がない) 然して \(\overline{d}\sim N\left(0\:,\:\dfrac{\sigma_d^2}{n}\right)\) が成立。

差の母分散 \(\sigma_d^2\) が既知の場合は、 \(z=\dfrac{d}{\sigma/\sqrt{n}} \sim N(0,1)\) によるZ検定となるが、
母分散が未知のため標本分散 \(s_d^2\) で代用し、\(\overline{d}\) を標準誤差 \(s_d/\sqrt{n}\) で割ると
   \(t=\dfrac{d}{s_d/\sqrt{n}} \sim t(n-1)\): 自由度 \((n-1)\) の t分布に従う。


1.2 [例2-1]バセドウ病患者(p28)

6人のバセドウ病患者に薬を投与したとき、投与の前後で脈拍数に変化があるかどうか検定する。

pre<-c(98,88,100,96,107,114)
post<-c(86 ,73 ,95 ,92 ,99 ,116)

変化を見るにはRの個別推移図(スパゲティ・プロット)が分かりやすい。
preは前、postは後を表す。
xyplot を使うため、データを縦長形式 (long style) のデータフレームにする。

# 個別推移図(スパゲティ・プロット)
library("lattice");library("latticeExtra")#パッケージの読み込み
score <- c(pre, post)
prepost <- factor(c(rep("pre", 6), rep("post", 6)), levels = c("pre","post"))
df <- data.frame(score, prepost)
df$indiv <- factor(c(rep(1:6), rep(1:6)))#個体の識別番号
df
##    score prepost indiv
## 1     98     pre     1
## 2     88     pre     2
## 3    100     pre     3
## 4     96     pre     4
## 5    107     pre     5
## 6    114     pre     6
## 7     86    post     1
## 8     73    post     2
## 9     95    post     3
## 10    92    post     4
## 11    99    post     5
## 12   116    post     6

識別番号ごとに、変化を折れ線で示す。

xyplot(score ~ prepost, group = indiv, type = c("l"), data = df, xlab = "pre-post", ylab = "score")

薬の投与後、血圧は下がっているように見える。この変化が有意なものかどうかRで調べる。

帰無仮説「preとpostで変化がない」のもとで、
\(~~~~~d=pre-post\) は、\(d\sim N(0\:,\:\sigma_d^2)\):0を平均とした正規分布に従い、
標本標準偏差(標準誤差)で標準化した \(~~~t=\dfrac{d}{s_d/\sqrt{6}} \sim t(5)\)  は、自由度5の t 分布に従う。
自由度 5の t 分布 とは、このような調査を無限回行った場合の t値の分布であり、0を中心としている。

par(family = "HiraKakuProN-W3") 
curve(dnorm(x, 0, 1),xlim=c(-5, 5),ylim=c(0, 0.4), col=2,xaxp=c(-6,7,13))
curve(dt(x, 5),xlim=c(-5, 5),col=3, add=T) 
legend( "topleft",legend=c("標準正規分布","t分布"), col=c("red","green"),lty=c(1,1))

t検定の方が有意差が出にくい。
両側t検定のrコードは、t.testで”two.sided”をオプションとすればよい。

pre<-c(98,88,100,96,107,114);post<-c(86 ,73 ,95 ,92 ,99 ,116)
res<- t.test(pre,post,paired=TRUE,alternative ="two.sided")
res
## 
##  Paired t-test
## 
## data:  pre and post
## t = 2.8265, df = 5, p-value = 0.03683
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##   0.6338082 13.3661918
## sample estimates:
## mean of the differences 
##                       7

統計学備忘録様 を参考にさせていただきました。