東京農工大学

生物統計学演習


問題1:t 検定の検出力(power)

  1. t 検定の有意水準の R スクリプトを参考にして,t 検定の検出力を求めてみよう. 標本の大きさ n = 10 として,帰無仮説が偽であり, 真の母集団平均が μ = 11,12,13,の3通りについて,帰無仮説;H0:μ = 10,の検定 を行った場合の 検出力(帰無仮説を棄却する割合)を求めよ.
  2. 真の母集団平均が μ = 11 であるとき,検出力を 90%以上にするために 必要なサンプルサイズを求めよ.
  3. 真の母集団平均が μ = 11 であるとき,符号順位和検定を行ったときの 検出力を 90%以上にするために 必要なサンプルサイズを求めよ.

    ヒント:ウイルコックス検定を1000回やって,p値が0.05以下の個数を出す
    N <- 10000
    n <- 10
    n1 <- rnorm(N*n, mean=11, sd=2) 	# N(11, 4) から大きさ n の標本を N 回シミュレーション  
    n1.mat <- matrix(data=n1, ncol=n) 	# データ行列  
    pvalue <- NULL
    for(i in 1:N){
      wt <- wilcox.test(n1.mat[i,]-10)
      pvalue <- c(pvalue, wt$p.value)
    }
    length(pvalue[pvalue<0.05])
    
問題1解答例のスクリプト
N <- 10000 	# シミュレーション回数  
#n <- 10 	# サンプルサイズ
n <- 43
m0 <- 11 
#m0 <- 12
#m0 <- 13 
n1 <- rnorm(N*n, mean=m0, sd=2) 	# N(m0, 4) から大きさ n の標本を N 回シミュレーション  
n1.mat <- matrix(data=n1, ncol=n) 	# データ行列  
n1.mean <- apply(n1.mat, 1, mean) 	# 各サンプルの平均  
n1.var <- apply(n1.mat, 1, var) 	# 各サンプルの分散 
n1.var3 <- n1.var/n 	# 各標本平均の分散  
n1.td <- (n1.mean - 10)/sqrt(n1.var3) 	# 各サンプルの t 値  
mean(n1.td) 	# t 値の平均 
sd(n1.td) 	# t 値の標準偏差  
mt <- ceiling(max(abs(n1.td))) 	# t 値の絶対値の最大値 
xq1 <- qt(0.025, df = (n-1)) 	# t(9) の 2.5% 点  
xq2 <- qt(0.975, df = (n-1)) 	# t(9) の 97.5% 点  
length( n1.td[abs(n1.td) > xq2]) 	# 5% 検定で有意となった個数  
hist(n1.td, breaks=seq(-mt, mt, by=0.2), probability=TRUE, xlab="t 値", ylab="密度", main="")
#curve(dt(x, df=(n-1) ), -5,5, col="red", add=T) 	# t 分布  
abline(v=xq1, col="red") 	# 採択域の下限  
abline(v=xq2, col="red") 	# 採択域の上限  
title(main="Histogram of t values") 	# タイトル 
# wilcoxtest
pvalue <- NULL
for(i in 1:N){
  wt <- wilcox.test(n1.mat[i,]-10)
  pvalue <- c(pvalue, wt$p.value)
}
length(pvalue[pvalue<0.05])

t検定検出力のシミュレーション結果
真の平均 検出力(%)
μ = 1129.0
μ = 1280.3
μ = 1398.8

必要なサンプルサイズのシミュレーション結果
サンプルサイズ t検定符号順位和検定
4388.987.8
4489.988.5
4590.588.9
4691.690.6

45/46 = 0.98 なので,符号順位和検定はt検定の約98%の効率であるといえる.

問題2:淡水性ウナギデータの解析

 淡水性ウナギの汽水域での生理活性の違いのデータ を2標本データとして違いを検定せよ.ただし,2母集団で分散の違いがあるようなので,まず, 分散の同等性の検定を行い,違いが認められるときは,データの対数変換(lx <- log(x))を行うなどして,分散安定化 変換を行って t 検定を行ってみよ.また,データの対数変換などを行わず.ウェルチ検定やノンパラメトリック 検定を行った場合との比較検討を行え.

データダウンロード

問題2解答例のスクリプト
unagi <- read.csv("unagi2.csv")
attach(unagi)
boxplot(unagi)
var.test(noNa, Na)
分散同等性検定で,p 値 = 0.047 で有意に分散が異なっていることがわかったので, 通常の t 検定を行うことはできない.

t.test(noNa, Na)
wilcox.test(noNa, Na)
ks.test(noNa, Na)
plot(ecdf(noNa), do.points=F, verticals=T,xlab="生理活性", ylab="累積確率", 
xlim=range(noNa, Na), main="") 
plot(ecdf(Na), do.points=F, verticals=T, add=T, col.h='red', col.v='red') 

検定方法p 値
分散同等性検定0.047*
Welch 検定0.01355*
順位和検定0.01452*
Kolmogorov-Smirnov 検定0.07546

Kolmogorov-Smirnov 検定以外では5%有意となり,ウナギの生理活性は淡水と汽水で有意に異なっていた.

分散安定化変換を試す.

x <- log(noNa)
y <- log(Na)
boxplot(x, y)
var.test(x, y)
t.test(x, y, var.equal=T)

検定方法p 値
分散同等性検定0.5071
t 検定0.01126*

分散安定化変換を行ったところ,分散の同等性は棄却されず,普通の t 検定を行った.

問題3:テレビ視聴率

  1. ある調査会社のデータによると,関東地区では 600 世帯を対象にして視聴率調査を行っている. 2010年南アフリカ大会での,関東地区のカメールーン戦の平均視聴率は45.2%,オランダ戦の視聴率は43%であった.カメールーン戦とオランダ戦で視聴率に変化があったかどうか検定せよ.
  2. 過去3大会での日本戦の平均視聴率(9 試合分)は深夜放送分を除くと53.87%であった. 2010年の日本戦(予選2試合平均)は過去と比べて視聴率に変化があったかを検定せよ.
問題3解答例のスクリプト
600人のうち45.2%は,600*0.452 = 271.2 で,271人が見たと考えられる.

見た見ない
カメルーン戦271329
オランダ戦258342

x <- matrix(c(271, 258, 329, 342), nrow=2); x
chisq.test(x)

p 値 = 0.4845 で,差は認められない.

9試合平均なので,見た人数を9倍する.

見た見ない
過去29072493
予選529671

x <- matrix(c(323*9, 529, 277*9, 671), nrow=2); x
chisq.test(x)

p 値 = 0 なので,今回は今までと比べ有意に低い.ただし,予選の結果なので, 本戦のデータが必要であろう.

問題4:食中毒原因食材の特定

 1940 年のNew York 州Oswego の協会の夕食会における胃腸炎異常発生の喫食 調査データによると食材と食中毒症状とで以下の関係があった.

食品名 発症あり 発症なし
 食べた  食べない  食べた  食べない
ケーキ 27 19 13 16
ハムステーキ 29 17 17 12
バニラアイス 43 3 11 18
チョコアイス 25 20 22 7
フルーツサラダ 4 42 2 27

 食材ごとの発症データから,χ2 独立性検定とオッズ比を使って 食中毒の原因食材を推定せよ.すなわち,オッズ比が 1 より有意に大きくなった食材が食中毒の 原因食材と特定できる.オッズ比が 1 より小さな食材は食中毒発生を抑制した食材である. このような食材があった場合,どうして抑制効果があったのか考察せよ.

問題4解答例のスクリプト
# ケーキ
x <- matrix(c(27, 19, 13, 16), nrow=2); x 
chisq.test(x)
fisher.test(x)
# ハムステーキ
x <- matrix(c(29, 17, 17, 12), nrow=2); x 
chisq.test(x)
fisher.test(x)
# バニラアイス
x <- matrix(c(43, 3, 11, 18), nrow=2); x 
chisq.test(x)
fisher.test(x)
# チョコアイス
x <- matrix(c(25, 20, 22, 7), nrow=2); x 
chisq.test(x)
fisher.test(x)
# フルーツサラダ
x <- matrix(c(4, 42, 2, 27), nrow=2); x 
chisq.test(x)
fisher.test(x)

食品名p 値オッズ比
ケーキ0.34991.735835
ハムステーキ0.8891.201146
バニラアイス022.15606
チョコアイス0.12750.4026708
フルーツサラダ11.281528

バニラアイスが原因食材であることがわかった.ところで,チョコアイスのオッズ比が1より小さい ので,チョコアイスは食中毒症状を抑制した働きがあったようである.この解釈としては, チョコに食中毒症状を緩和する効果があると考えることもできるが,チョコが好きな人はバニラアイス に手を伸ばす可能性を減少させたと考えるのが自然であろう.


Copyright (C) 2011, Hiroshi Omori. 最終更新日:2011年11月25日