ここで紹介されているこの例をやってみた。
状況としてはこんな図と実験がある。
ある腫瘍細胞に薬#1 と#2 を単独もしくは両者ともにふりかける実験をする。#1 のみもしくは#2 のみふりかけた実験では対照と有意差はなく、#1#2 と同時にふりかけた場合は有意差がでたので、この薬はsynergy 効果がすごい!!
というのはシミュレーションでおかしいというのがわかる。例えば対照は平均1、#1 と#2 は平均2 の正規分布からサンプリングし、#1#2 は2*2 の平均4 からサンプリングしたとすれば、そもそも#1(もしくは#2) でも対照に比べて差は出うる、けど、有意差が出なかったのはサンプル具合によった偶然の結果。
p値が難しい、誤認される原因として、帰無仮説検定の枠組みについて言及しているが、元記事と合わせて重要そうだなと思うのが、p値というものは帰無仮説の元でのみ意味を持ちうる、強烈すぎる非線型変換である(p=0.13 がZ値1.5 に相当するのに対して、p=0.003 がZ=3 に相当するということが紹介されている)ことと、すべてのことはなんらかのeffect size を持つものだから差がない、という帰無仮説がそもそもなあ…というのが気になった。
m0 <- 1 sd0 <- 0.75 m1 <- m2 <- 2 N <- 10 d0 <- rnorm(N, m0, sd0) d1 <- rnorm(N, m1, sd0) d2 <- rnorm(N, m2, sd0) d12 <- rnorm(N, m1*m2, sd0*2.5) d <- cbind(d0, d1, d2, d12) p <- mapply(function(z) t.test(d0, z)$p.value, list(d1, d2, d12)) b <- boxplot(d, names=c("none", "#1", "#2", "#1 & #2"), xlab="Treatment", ylab="Measurement", ylim=c(min(d), max(d)+1), las=1) y <- tail(b$stats, 1) yd <- c(1, 2, 1)*0.5 for(i in 1:3){ segments(1, y[i+1]+yd[i], i+1, lwd=3) text(mean(c(1, i+1)), y[i+1]+yd[i], paste0("p= ", round(p[i], 4)), pos=3) }