- 昨日の記事でp値を併せる話しをした
- というフィッシャーの方法についても書いた
- そのときというのは、p値(が一様分布であるとして)に対応する自由度2のカイ二乗統計量にしているんだ、ということも書いた
- それでは、「どうして自由度2」なの?となる
- 自由度はなんでもよいのか(最終的なp値の分布を一様分布にするだけならばなんでもよいが、の大小の順序を守るには自由度2である必要がある)
n.pt <- 10000
df <- 3
X <- matrix(rnorm(df*n.pt),ncol=df)
v1 <- rnorm(df)
v1 <- v1/sqrt(sum(v1^2))
v2 <- v1 + rnorm(df)*0.1
v2 <- v2/sqrt(sum(v2^2))
v3 <- v1 + rnorm(df)*0.4
v3 <- v3/sqrt(sum(v3^2))
chi2.1 <- (X%*%v1)^2
chi2.2 <- (X%*%v2)^2
chi2.3 <- (X%*%v3)^2
p.1 <- pchisq(chi2.1,df=1,lower.tail=FALSE)
p.2 <- pchisq(chi2.2,df=1,lower.tail=FALSE)
p.3 <- pchisq(chi2.3,df=1,lower.tail=FALSE)
df.2 <- 2
x <- qchisq(p.1,df.2,lower.tail=FALSE)+qchisq(p.2,df.2,lower.tail=FALSE)+qchisq(p.3,df.2,lower.tail=FALSE)
m.x <- mean(x)
v.x <- var(x)
theta <- v.x/m.x
k <- m.x/theta
y <- rgamma(n.pt,scale=theta,shape=k)
xlim <- ylim <- range(c(x,y))
plot(sort(x),sort(y),xlim=xlim,ylim=ylim)
abline(0,1,col=2)
plot(data.frame(p.1,p.2,p.3))