如何在 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 检验