填充相关镜像
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
您将如何翻转 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