d1 <- 3
d2 <- 5
q1 <- rchisq(1000,d1)
q2 <- rchisq(1000,d2)
f <- (q1/d1)/(q2/d2)
fp <- pf(f,d1,d2)
plot(sort(fp))
n <- 100
ds <- 1:5
n.iter <- 1000
Y <- P <- matrix(0,n.iter,length(ds))
for(i in 1:length(ds)){
for(j in 1:n.iter){
X <- matrix(rnorm(n*ds[i]),ncol=ds[i])
Y[j,i] <- sum(dist(X)^2)/(n-1)
P[j,i] <- pchisq(Y[j,i],n*ds[i])
}
}
matplot((apply(P,2,sort)),type="l")
- 異なる次元の正規分布が2つあって、それぞれの正規乱点間距離が作るカイ二乗統計量からF値を出してp値化すると、一様分布化する
n <- 100
ds <- sample(1:20,4)
n.iter <- 10000
Y <- P <- matrix(0,n.iter,length(ds))
for(i in 1:length(ds)){
for(j in 1:n.iter){
X <- matrix(rnorm(n*ds[i]),ncol=ds[i])
Y[j,i] <- sum(dist(X)^2)/(n-1)
P[j,i] <- pchisq(Y[j,i],n*ds[i])
}
}
matplot((apply(P,2,sort)),type="l")
F <- Q <- matrix(0,n.iter,length(ds)*(length(ds)-1)/2)
cnt <- 1
for(i in 1:(length(ds)-1)){
for(j in (i+1):length(ds)){
F[,cnt] <- (Y[,i]/(n*ds[i]))/(Y[,j]/(n*ds[j]))
Q[,cnt] <- pf(F[,cnt],n*ds[j],n*ds[i])
cnt <- cnt+1
}
}
matplot(apply(Q,2,sort),type="l")