填充相关镜像

Filling a Correlation Mirror Image

您将如何翻转 R 中的相关矩阵,使其在镜像的行和列中具有相同的相关性而不是 (na) 个值?借助图像可能会更好地解释这一点。

Correlation Matrix in Excel

我一直在尝试 complete.cases 命令,但这似乎对我的 objective 没有帮助。 na.omit 也没有用,因为我只剩下一行,即最后一行。

我一直在 Excel 中手动复制相关性以获得所需的结果,但这似乎是一个乏味的过程,尤其是在相关性矩阵很大的情况下。

拜托,你们有解决此类问题的快速修复方法或智能机制吗?

默认情况下,相关矩阵在 R 中已经是对称的。例如:

cor_m <- cor(mtcars[1:5])

cor_m
#>             mpg        cyl       disp         hp       drat
#> mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.6811719
#> cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.6999381
#> disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.7102139
#> hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.4487591
#> drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.0000000

但是,出于某种原因,听起来好像您有这种格式的相关矩阵:

cor_m[c(6, 11:12, 16:18, 21:24)] <- NA

cor_m
#>             mpg        cyl       disp         hp drat
#> mpg   1.0000000         NA         NA         NA   NA
#> cyl  -0.8521620  1.0000000         NA         NA   NA
#> disp -0.8475514  0.9020329  1.0000000         NA   NA
#> hp   -0.7761684  0.8324475  0.7909486  1.0000000   NA
#> drat  0.6811719 -0.6999381 -0.7102139 -0.4487591    1

为了使其对称,您只需用转置矩阵相同位置的条目填充具有 NA 值的单元格:

cor_m[is.na(cor_m)] <- t(cor_m)[is.na(cor_m)]

cor_m
#>             mpg        cyl       disp         hp       drat
#> mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.6811719
#> cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.6999381
#> disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.7102139
#> hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.4487591
#> drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.0000000