如何在 r 中执行多元正态性检验

 


当我们想要测试单个变量是否服从正态分布时,我们可以创建QQ 图来可视化分布或执行正式的统计测试,例如Anderson Darling 测试或Jarque-Bera 测试。

然而,当我们想要测试多个变量作为一个组是否服从正态分布时,我们需要执行多元正态性检验

本教程介绍如何在 R 中对给定数据集执行以下多元正态性检验:

  • 玛迪亚的测试
  • 能量测试
  • 多元峰度和偏度检验

相关:如果我们想在多变量环境中识别异常值,我们可以使用马氏距离

示例:Mardia 在 R 中的测试

Mardia 检验确定一组变量是否服从多元正态分布。检验的原假设和备择假设如下:

H 0 (空):变量服从多元正态分布。

H a (替代):变量不遵循多元正态分布。

以下代码显示了如何使用QuantPsyc包在 R 中执行此测试:

 library (QuantPsyc)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
                   x2 = rnorm(50),
                   x3 = rnorm(50))

#perform Multivariate normality test
mult.norm(data)$ mult.test

Beta-hat kappa p-val
Skewness 1.630474 13.5872843 0.1926626
Kurtosis 13.895364 -0.7130395 0.4758213

mult.norm()函数测试数据集的偏度和峰度的多元正态性。由于两个 p 值均不小于 0.05,因此我们未能拒绝检验的原假设。我们没有证据表明数据集中的三个变量不遵循多元分布。

示例:R 中的能量测试

能量检验是另一种统计检验,用于确定一组变量是否遵循多元正态分布。检验的原假设和备择假设如下:

H 0 (空):变量服从多元正态分布。

H a (替代):变量不遵循多元正态分布。

以下代码展示了如何使用energy包在 R 中执行此测试:

 library (energy)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
                   x2 = rnorm(50),
                   x3 = rnorm(50))

#perform Multivariate normality test
mvnorm.etest(data, R= 100 )

Energy test of multivariate normality: estimated parameters

data: x, sample size 50, dimension 3, replicates 100
E-statistic = 0.90923, p-value = 0.31

检验的 p 值为0.31 。由于该数字不小于0.05,因此我们未能拒绝检验的原假设。我们没有证据表明数据集中的三个变量不遵循多元分布。

注意: R=100 参数指定运行测试时要使用的 100 个 boost 映射副本。对于样本量较小的数据集,您可以增加此数字以生成更可靠的检验统计量估计。

其他资源

如何在 R 中创建和解释 QQ 图
如何在 R 中执行 Anderson-Darling 测试
如何在 R 中执行 Jarque-Bera 测试
如何在 R 中执行 Shapiro-Wilk 检验

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注