- 1次元正規分布を「原点からの距離」で考え直すと、-xとxとが同じ距離にあることになり、に関する分布を考えることとなり、カイ分布になる。距離の二乗で考えることにすればカイ二乗分布
- d次元正規分布を「原点からの距離」で考え直すと、原点から等距離にある点を集約して考えることになり、非負の距離値に関して考えれば、自由度dのカイ分布になるし、距離の二乗で考えれば自由度dのカイ二乗分布になる
- t分布は、1次元に正規分布で分布している2群の平均値の差の検定などに使われる分布。これは1次元の世界のもの
- 多次元空間に正規分布があるとする。2群あって、平均が同じか違うかに興味があるときには、多次元正規分布の平均値(平均座標)の異同を検定したい
- そんなときに「多次元平均座標の差」をスカラー値として測定して、検定に持ち込みたい。t検定を多次元版に一般化したい、と言い換えてもよい
- それがホテリングのt-squared(二乗しているので非負値を取る)
- 一般化になっていることを納得するには、一般次元で動いているホテリングのt-squaredの1次元版とt検定とが対応していることを見ればよい
- やってみる
library(MCMCpack)
library(Hotelling)
df <- 3
N1 <- 1000
N2 <- 1200
n.iter <- 1000
H <- p <- rep(0,n.iter)
for(i in 1:n.iter){
S <- riwish(df,diag(rep(1,df)))
X1 <- rmvnorm(N1,mean=rep(0,df),sigma=S)
X2 <- rmvnorm(N2,mean=rep(0,df),sigma=S)
tmp <- hotelling.test(X1,X2)
H[i] <- tmp[[1]][1]
p[i] <- tmp[[2]]
}
par(mfcol=c(1,2))
hist(unlist(H))
hist(p)
par(mfcol=c(1,1))
df <- 1
N1 <- 1000
N2 <- 1200
n.iter <- 1000
H <- p <- t <- tp <- rep(0,n.iter)
for(i in 1:n.iter){
S <- riwish(df,diag(rep(1,df)))
X1 <- rmvnorm(N1,mean=rep(0,df),sigma=S)
X2 <- rmvnorm(N2,mean=rep(0,df),sigma=S)
tmp <- hotelling.test(X1,X2)
H[i] <- tmp[[1]][1]
p[i] <- tmp[[2]]
tmp2 <- t.test(X1,X2)
t[i] <- tmp2[[1]]
tp[i] <- tmp2[[3]]
}
par(mfcol=c(1,2))
plot(sqrt(unlist(H)),t)
plot(p,tp)
par(mfcol=c(1,1))