- 2x2分割表のクイズ
- 実行すると、2x2表に対応する棒グラフがいくつか並べて提示される
- 図を先送りすると、そのフィッシャーの正確確率検定p値が表示され、最小p値の棒グラフがハイライトされることで、答え合わせができる
- Q『次の3つの棒グラフに対応する2x2表のうち、どれが最小p値をもたらすか?』
library(MCMCpack)
n.test <- 100
rs <- rdirichlet(n.test,rep(0.9,4))
rs <- round(rs * 50)
p <- rep(NA,n.test)
for(i in 1:n.test){
p[i] <- fisher.test(matrix(rs[i,],2,2))$p
}
k <- 3
n.trial <- 50
par(mfcol=c(1,k))
for(i in 1:n.trial){
tmp <- sample(1:n.test,k)
col1 <- c(1,2,0,1,2)
ylim <- c(0,max(rs[tmp,]))
for(j in tmp){
ttl <- "p=?"
tmp2 <- rs[j,]
barplot(c(tmp2[1:2],0,tmp2[3:4]),ylim=ylim,col=col1,main = ttl)
par(ask=FALSE)
}
par(ask=TRUE)
for(j in tmp){
ttl <- round(p[j],2)
tmp2 <- rs[j,]
if(p[j] == min(p[tmp])){
barplot(c(tmp2[1:2],0,tmp2[3:4]),ylim=ylim,col=col1,main = ttl)
}else{
barplot(c(tmp2[1:2],0,tmp2[3:4]),ylim=ylim,density = rep(100,5),col=col1,main = ttl)
}
par(ask=FALSE)
}
par(ask=TRUE)
}
n.iter <- 200
X <- list()
ps <- rep(0,n.iter)
for(i in 1:n.iter){
n1 <- 300
n2 <- 200
p1 <- 0.3
p2 <- 0.3
s1 <- sample(0:1,n1,replace=TRUE,prob=c(1-p1,p1))
s2 <- sample(0:1,n2,replace=TRUE,prob=c(1-p2,p2))
t <-table(c(s1,s2),c(rep(1,n1),rep(2,n2)))
X[[i]] <- t
ps[i] <- chisq.test(t)$p.value
}
par(ask=TRUE)
for(i in 1:50){
print(X[[i]])
ttl <- paste("",X[[i]][1,1],"\t",X[[i]][1,2],"\n",X[[i]][2,1],"\t",X[[i]][2,2],"\n")
plot(X[[i]],main=ttl)
plot(X[[i]],main=paste("p=",ps[i]))
}
par(ask=FALSE)
hist(ps)
summary(ps)
n.iter <- 50*2
X <- list()
ps <- rep(0,n.iter)
for(i in 1:n.iter){
n1 <- 10
n2 <- 10
m1 <- runif(1)*2
m2 <- runif(1)*2
s1 <- runif(1)*2
s2 <- s1
x1 <- rnorm(n1,m1,s1)
x2 <- rnorm(n2,m2,s2)
out <- t.test(x1,x2)
X[[i]] <- cbind(x1,x2)
ps[i] <- out$p.value
}
par(ask=TRUE)
par(mfcol=c(1,2))
for(i in 1:10){
par(ask=TRUE)
boxplot(X[[2*(i-1)+1]],main="p=?")
boxplot(X[[2*(i-1)+2]],main="p=?")
par(ask=TRUE)
boxplot(X[[2*(i-1)+1]],main=paste("p=",ps[2*(i-1)+1]))
par(ask=FALSE)
boxplot(X[[2*(i-1)+2]],main=paste("p=",ps[2*(i-1)+2]))
}
par(ask=FALSE)
par(mfcol=c(1,1))
hist(ps)
summary(ps)
n.iter <- 1000
X <- list()
ps <- rep(0,n.iter)
for(i in 1:n.iter){
n1 <- 10
n2 <- 10
m1 <- 0
m2 <- 2
s1 <- 2
s2 <- 2
x1 <- rnorm(n1,m1,s1)
x2 <- rnorm(n2,m2,s2)
out <- t.test(x1,x2)
X[[i]] <- cbind(x1,x2)
ps[i] <- out$p.value
}
par(ask=TRUE)
for(i in 1:10){
boxplot(X[[i]],main="p=?")
boxplot(X[[i]],main=paste("p=",ps[i]))
}
par(ask=FALSE)
hist(ps)
summary(ps)
n.iter <- 100
X <- list()
ps <- rep(0,n.iter)
for(i in 1:n.iter){
n <- 50
x <- rnorm(n)
a <- runif(1)
b <- runif(1)
y <- a*x+b
z <- rnorm(n,runif(1))
y. <- y + z
X[[i]] <- cbind(x,y.)
lm.out <- lm(y.~x)
s.out <- summary(lm.out)
ps[i] <- s.out[[4]][2,4]
}
par(ask=TRUE)
for(i in 1:50){
xlim <- ylim <- range(X[[i]])
plot(X[[i]],xlim=xlim,ylim=ylim)
plot(X[[i]],xlim=xlim,ylim=ylim,main=paste("p=",ps[i]))
}
par(ask=FALSE)
hist(ps)
summary(ps)