目录
一、mvrnorm()函数使用介绍
获取来自给定均值向量和协方差阵的多元正态分布的数据。
MASS包中的mvrnorm()函数可以让这个问题变得很容易,其调用格式为:
mvrnorm(n, mean, sigma)
其中n是你想要的样本大小,mean是均值向量,sigma是方差-协方差矩阵(或相关矩阵)。
可以想一下,产生的随机数据,一定是一个矩阵形式,有n行(即样本量为n,产生了n个观测),有p列(因为是多元随机变量,每一行是一个观测,相当于人的体重、身高、臂长、体脂率、年龄等数据信息。)
例1:生成服从多元正态分布的数据
library(MASS)
options(digits=3)
set.seed(1234) #设置随机种子,让结果可以重现(reproducible)
#指定均值向量和协方差矩阵
mean <- c(230.7, 146.7, 3.6)
sigma <- matrix(c(15360.8, 6721.2, -47.1, 6721.2, 4700.9, -16.5, -47.1, -16.5, 0.3), nrow=3, ncol=3)
mydata <- mvrnorm(500, mean, sigma)
#为了方便,将结果从矩阵转换为数据框
#并为变量指定了名称
mydata <- as.data.frame(mydata)
names(mydata) <- c("y","x1","x2")
dim(mydata)
head(mydata, n=10)
结果:
例2:生成一组服从多元正态分布的观测
mvrnorm(1,rep(0,10),diag(rep(0.2^2,10)))