想定外の仮説を持ち込む

  • 「仮説Xと仮説Yとのどちらなのかを判定しようとして実験を観察していたら、XでもYでもなく仮説Zなのではないか、と思い至る」ことがあるように思うが、その思考過程とは、どういうことか、という話題が出ました。
  • そんなことを考えるための例。
  • 今、1か2が出ることが繰り返されるとする。1と2が等確率でランダムに出る(仮説X)か、1か2かのどちらかに偏っている(仮説Y)かに着目しているときに、次のような1,2列が得られた。

2 1 1 2 1 2 2 1 1 1 1 2 1 2 2 2 1 2 1 2 1 1 1 2 1 2 1 1 2 2 2 2 1 2 2 1 2 1 1 2

  • 仮説Xかと思ったが、実は、1と2とは等確率で出るが、その出方はランダムではなく1,2の比率が0.5:0.5からずれにくいような「力」が(どんな「力」かは知らないが)存在している(仮説Z)らしい、と「どの時点」で気づくべきか、というのがその問題。
  • 以下の例では「連検定をしよう」と気づけば、判断に持ち込めるわけだけれど、では「連検定が検出する非ランダム性を疑うことにする」というのは、いつ、どうやって気づくのか、というのが、ここでの課題。

# 試行回数
n <- 100
# 初期試行
x <- sample(1:2,1)
# 2回目以降
for(i in 2:n){
	# i-1回の集計
	tmp <- tabulate(x[1:(i-1)],2)
	# それまでの1,2の出現比率に応じて、出た回数が少ない方を多く出す仕組み
	x[i] <- sample(2:1,1,prob=tmp/(i-1))
}

# i回目までの実験結果について
# (a) 1,2の出現比が等しいかどうかの検定
# (b) 生成1,2数列の連検定
p <- run.p <- c()
for(i in 10:length(x)){
	tmp <- tabulate(x[1:i],max(x[1:i]))
	tmp.d <- dbinom(0:i,i,0.5)
	tmp.p <- sum(tmp.d[which(tmp.d<=tmp.d[tmp[1]])])
	p <- c(p,tmp.p)
	run.p <- c(run.p,runs.test(as.factor(x[1:i]))$p)
}
# 2種の検定のp値の変化
matplot(10:n,cbind(p,run.p),type="l",xlab="試行回数",ylab="p値")