- 上の記事でF分布についてメモした
- 少しANOVAを。こちらも参考
n.iter <- 1000
ret <- rep(0,n.iter)
n.g <- 2
n.s <- 200
for(i in 1:n.iter){
X <- rnorm(n.s)
P <- sample(1:n.g,n.s,replace=TRUE)
s1 <- which(P==1)
s2 <- which(P==2)
ret[i] <- t.test(X[s1],X[s2])$p.value
}
plot(sort(ret))
ret <- ret.2 <- rep(0,n.iter)
n.g <- 2
n.s <- 200
for(i in 1:n.iter){
X <- rnorm(n.s)
P <- sample(1:n.g,n.s,replace=TRUE)
s1 <- which(P==1)
s2 <- which(P==2)
ret[i] <- t.test(X[s1],X[s2])$p.value
tmp <- lm(X~P)
ret.2[i] <- anova(tmp)[[5]][1]
}
plot(ret,ret.2)
ret <- ret.2 <- ret.3 <- rep(0,n.iter)
n.g <- 2
n.s <- 200
for(i in 1:n.iter){
X <- rnorm(n.s)
P <- sample(1:n.g,n.s,replace=TRUE)
P <- sort(P)
s1 <- which(P==1)
s2 <- which(P==2)
ret[i] <- t.test(X[s1],X[s2])$p.value
tmp <- lm(X~P)
ret.2[i] <- anova(tmp)[[5]][1]
D <- as.matrix(dist(X))
D.sq <- D^2
sum.same <- sum(D.sq[s1,s1])/2/length(s1) + sum(D.sq[s2,s2])/2/length(s2)
sum.not.same <- sum(D.sq)/2/length(P) - sum.same
tmp.F <- (sum.same/(n.s-n.g))/(sum.not.same/(n.g-1))
ret.3[i] <- pf(tmp.F,n.s-n.g,n.g-1)
}
plot(ret.2,ret.3)
ret <- ret.2 <- rep(0,n.iter)
n.g <- 5
n.s <- 200
for(i in 1:n.iter){
X <- rnorm(n.s)
P <- sample(1:n.g,n.s,replace=TRUE)
tmp <- lm(X~as.factor(P))
ret[i] <- anova(tmp)[[5]][1]
D <- as.matrix(dist(X))
D.sq <- D^2
sum.same <- 0
for(j in 1:n.g){
tmp.s <- which(P==j)
sum.same <- sum.same + sum(D.sq[tmp.s,tmp.s])/2/length(tmp.s)
}
sum.not.same <- sum(D.sq)/2/length(P) - sum.same
tmp.F <- (sum.same/(n.s-n.g))/(sum.not.same/(n.g-1))
ret.2[i] <- pf(tmp.F,n.s-n.g,n.g-1)
}
par(mfcol=c(1,2))
plot(sort(ret))
plot(ret,ret.2)
par(mfcol=c(1,1))
ret <- ret.2 <- rep(0,n.iter)
n.g <- 2
n.s <- 200
for(i in 1:n.iter){
X <- matrix(rnorm(n.s*n.g),ncol=n.g)
ret[i] <- t.test(X[,1],X[,2])$p.value
ret.2[i] <- t.test(X[,1],X[,2],paired =TRUE)$p.value
}
plot(ret,ret.2)
ret <- ret.2 <- rep(0,n.iter)
n.g <- 2
n.s <- 200
for(i in 1:n.iter){
X <- matrix(0,n.s,n.g)
X[,1] <- rnorm(n.s)
X[,2] <- X[,1] + rnorm(n.s)
ret[i] <- t.test(X[,1],X[,2])$p.value
ret.2[i] <- t.test(X[,1],X[,2],paired =TRUE)$p.value
}
par(mfcol=c(2,3))
boxplot(X)
matplot(t(X),type="l")
plot(sort(ret))
plot(sort(ret.2))
plot(ret,ret.2)
par(mfcol=c(1,1))