アンケート調査でN数はいくら必要なのか

MikuHatsune2018-04-16

こんな話を見かけた。

 
一連のツイートでこんな知識を得た。
なるほど統計学園高等部 | 調査に必要な対象者数
世論調査結果を読む際の注意
 
回答者数N人といったとき、本当は何人くらいが回答していて、そしてその回答数はどれほど信頼がおけるか、という話。
あるひとりの人に回答を頼んだとき、その人がランダムサンプリングされていて、回答するかしないかもランダムならば、ものすごい単純化すれば二項分布からのサンプリングになる。
上のリンクの

nは質問に対する回答者数で,100%が何人の回答に相当するかを示す比率算出の基数である。

というのはちょっとよくわからないのだが、(実際に有効回答を得たのがn なのか、潜在的に回答しえたすべての人がnなのか)、とりあえず、n 人中 p の割合で回答を得たとすると、n=1000人、p=0.5 として

binom.test(1000*0.5, 1000)$conf.int
[1] 0.4685492 0.5314508
attr(,"conf.level")
[1] 0.95

となり、表の1000人 50% のところを参照すると±3.1% となっているので、そこそこ合っている。
というわけで、N とp を適当に振って誤差を見る。
ひだりは素の値、みぎは常用対数値。

回答するかしないかが完全に無情報(p=0.5)ならば、上のリンクでも言っているように誤差が一番大きくなる(p(1-p) を最大化するのはp=0.5)。
p=0.5 のとき、どんなにN数を増やしても誤差の幅はなかなか小さくならない。
±5% 程度の誤差を実現するには、リンクにもあるように400人弱を調べればよい。

n <- c(100, 500, 1000, 2000, 2500, 3000, 5000, 7000)
p <- seq(0, 0.5, by=0.01)

ret <- matrix(0, length(n), length(p))
for(i in seq(n)){
  for(j in seq(p)){
    ret[i, j] <- mean(abs(binom.test(n[i]*p[j], n[i])$conf.int - p[j]))
  }
}

mfrow3d(1, 2, sharedMouse=TRUE)
persp3d(n, p, ret, xlab="samples", ylab="probability", zlab="error", col=8)
persp3d(n, p, log10(ret), xlab="samples", ylab="probability", zlab="error", col=8)
      0.1  0.2  0.3  0.4   0.5
7000 0.71 0.94 1.08 1.15  1.18
5000 0.84 1.12 1.28 1.37  1.40
3000 1.09 1.45 1.66 1.77  1.81
2500 1.20 1.59 1.82 1.94  1.98
2000 1.34 1.78 2.03 2.17  2.21
1000 1.91 2.53 2.89 3.08  3.15
500  2.73 3.60 4.11 4.38  4.47
100  6.36 8.26 9.37 9.97 10.17