相関係数のデモを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