R语言 模拟双变量和多变量正态分布
在这篇文章中,我们将学习如何在R编程语言中模拟双变量和多变量正态分布。
为了在R语言中模拟多变量正态分布,我们使用MASS包库中的mvrnorm()函数。mvrnorm()函数用于在R语言中生成具有指定平均值的多变量正态分布的随机数。mvrnorm()函数接受随机样本大小、最终分布中每个变量的均值向量和指定变量协方差矩阵的正不定对称矩阵作为参数,并返回一个具有所需正态分布的多变量矩阵。
语法: mvrnorm( n, mu, sigma )
其中
- n: 决定了所需的样本数量。
- mu: 确定一个包含变量分布的平均值的向量。
- sigma: 确定一个正无限对称矩阵,指定变量的协方差矩阵。
模拟双变量正态分布
为了模拟双变量正态分布,我们将把mvrnorm()函数的参数限制为两个变量值。我们将使用均值向量和2X2矩阵中的两个值分别作为mu和sigma参数。这样,mvrnorm()函数将创建一个双变量的正态分布,而不是多变量的正态分布。
例子: 这里,是一个模拟的双变量数据分布。
# load library MASS
library(MASS)
# set seed and create data vectors
set.seed(98989)
sample_size <- 100
sample_meanvector <- c(10, 5)
sample_covariance_matrix <- matrix(c(10, 5, 2, 9),
ncol = 2)
# create bivariate normal distribution
sample_distribution <- mvrnorm(n = sample_size,
mu = sample_meanvector,
Sigma = sample_covariance_matrix)
# print top of distribution
head(sample_distribution)
输出

模拟多变量正态分布。
为了模拟多变量正态分布,我们将使用MASS包库的mvrnorm()函数。如果我们需要n个变量的分布,我们将使用n个变量的均值向量和nXn矩阵分别作为mu和sigma参数来使用mvrnorm()函数。这样,mvrnorm()函数将创建一个所需的变量正态分布。
例子: 这里是一个模拟的5个变量的数据分布。
# load library MASS
library(MASS)
# set seed and create data vectors
set.seed(98989)
sample_size <- 1000
sample_meanvector <- c(10, 5, 7, 9, 20)
sample_covariance_matrix <- matrix(c(5, 4, 3, 2, 1, 4, 5, 4, 3, 2,
3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 1,
2, 3, 4, 5), ncol = 5)
# create multivariate normal distribution
sample_distribution <- mvrnorm(n = sample_size,
mu = sample_meanvector,
Sigma = sample_covariance_matrix)
# print top of distribution
head(sample_distribution)
输出

极客教程