巴特利特球形度检验指南
巴特利特球形度检验将观察到的相关矩阵与单位矩阵进行比较。本质上,它检查变量之间是否存在一些冗余,这些冗余可以用许多因素来概括。
检验的原假设是变量是正交的,即不相关。另一种假设是变量不是正交的,即它们与相关矩阵与单位矩阵显着偏离的点充分相关。
此测试通常在使用数据缩减技术(例如主成分分析或因子分析)之前执行,以验证数据缩减技术实际上可以有意义地压缩数据。
注意: Bartlett 球形检验与Bartlett 方差齐性检验不同。这是一个常见的混淆,因为两者的名字相似。
相关矩阵和单位矩阵
相关矩阵只是一个显示变量之间相关系数的值矩阵。例如,以下相关矩阵显示了职业篮球队不同变量之间的相关系数。
相关系数的范围为 -1 到 1。值距离 0 越远,两个变量之间的相关性越高。
单位矩阵是对角线上所有值为 1,其他值为 0 的矩阵。
在这种情况下,如果该矩阵中的数字代表相关系数,则意味着每个变量与所有其他变量完全正交(即“不相关”),因此 PCA 或因子分析等数据缩减技术将无法“以有意义的方式压缩”数据。
因此,我们执行 Bartlett 球形度检验的原因是为了确保数据集中变量的相关矩阵与单位矩阵显着不同,以便我们知道适合使用数据缩减技术。
如果 Bartlett 球形度检验的 p 值小于所选的显着性水平(常见选择为 0.10、0.05 和 0.01),则我们的数据集适合数据缩减技术。
如何在 R 中执行 Bartlett 球形度检验
要在 R 中执行 Bartlett 球形度测试,我们可以使用psych库中的cortest.bartlett()函数。该函数的一般语法如下:
cortest.bartlett(R, n)
- R:数据集的相关矩阵
- n:数据集的样本大小
以下代码演示了如何在我们创建的假数据集上执行此测试:
#make this example reproducible set.seed(0) #create fake data data <- data.frame(A = rnorm(50, 1, 4), B = rnorm(50, 3, 6), C = rnorm(50, 5, 8)) #view first six rows of data head(data) #ABC #1 6.0518171 4.5968242 11.25487348 #2 -0.3049334 0.7397837 -1.21421297 #3 6.3191971 17.6481878 0.07208074 #4 6.0897173 -1.7720347 5.37264242 #5 2.6585657 2.6707352 -4.04308622 #6 -5.1598002 4.5008479 9.61375026 #find correlation matrix of data cor_matrix <- cor(data) #view correlation matrix cor_matrix #ABC #A 1.0000000 0.1600155667 0.2825308511 #B 0.1600156 1.0000000000 0.0005358384 #C 0.2825309 0.0005358384 1.0000000000 #load psych library library(psych) #perform Bartlett's Test of Sphericity cortest.bartlett(cor_matrix, n = nrow(data)) #$chisq #[1] 5.252329 # #$p.value #[1] 0.1542258 # #$df #[1] 3
卡方检验统计量为 5.252329,相应的 p 值为 0.1542258,这不小于我们的显着性水平(我们使用 0.05)。因此,这些数据可能不适合进行 PCA 或因子分析。
简而言之,我们数据集中的三个变量相关性不够,因此像 PCA 或因子分析这样的数据缩减技术很难将这些变量压缩为能够捕获数据中存在的显着方差的线性组合。