無相関検定のシミュレーション
2種類のデータの間に相関が無いとき、標本相関係数rを使って定義した
\[ t = \sqrt(n-2)\frac{r}{\sqrt{1-r^{2}}}\]
は自由度n-2のt分布に従うことが、理論的にわかります。各データが母集団から無作為抽出されたとき、正規分布に従って標本が抽出されるとすれば、この量がt分布に近づくことをR言語を使って次のように確かめます。
#test_cor.R size <- 20000 sample_size <- 20 mu1 <- 50 sigma1 <- 10 mu2 <- 30 sigma2 <- 20 ts <- numeric(length=size) for(i in 1:size) { sample_x <- rnorm(n=sample_size, mean=mu1, sd=sigma1) sample_y <- rnorm(n=sample_size, mean=mu2, sd=sigma2) xbar <- mean(sample_x) ybar <- mean(sample_y) sxy <- mean((sample_x - xbar)*(sample_y - ybar))/sample_size sxx <- mean((sample_x - xbar)^2)/sample_size syy <- mean((sample_y - ybar)^2)/sample_size r <- sxy/sqrt(sxx*syy) ts[i] <- sqrt(n-2)*r/sqrt(1-r^2) }
Rのコンソールから次のようにして、図を書き出します。
> png("test_cor.png") > hist(ts, freq=FALSE) > curve(dt(x, 18), add=TRUE) > dev.off()