相関係数のデモをirisデータで作っていてうまくいかず、サンプルデータを作成した時の副産物。
今回は数学と科学のテスト点のサンプルデータを作った。
使用するのはrmvnormであって多次元正規分布を作成する機能である。パッケージは不要であるmvtnormパッケージを使用する。
library(mvtnorm) set.seed(1234) # 乱数シードの固定 N <-1000 # サンプルサイズの指定 Sigma = matrix(c(1,0.54,0.54,1), byrow=TRUE, ncol=2) # c()の中に相関係数を入れる。 mu <- c(45, 65) # 平均値 d1 <- data.frame(rmvnorm(n=N, mean=mu, sigma=Sigma)) # 乱数の作成 d2 <- round(d1) # まるめ(四捨五入で整数値に) colnames(d2) <- c("Math","Science") # 列名を挿入
どのようなデータができたか見てみよう。
> head(d2) Math Science 1 44 65 2 45 63 3 46 66 4 44 64 5 44 64 6 44 64 > summary(d2) Math Science Min. :42.00 Min. :62.00 1st Qu.:44.00 1st Qu.:64.00 Median :45.00 Median :65.00 Mean :44.97 Mean :64.88 3rd Qu.:46.00 3rd Qu.:66.00 Max. :47.00 Max. :68.00
相関係数を確認してみよう。
> cor(d2) Math Science Math 1.000000 0.547566 Science 0.547566 1.000000
指定通りの相関係数で乱数が作成されている。
検索していたら、太郎丸先生のrmvnormのエントリを発見した。
- Rスクリプト覚書: 多次元正規分布する乱数の生成 rmvnorm - Theoretical Sociology
http://sociology.jugem.jp/?eid=574