gpt4 book ai didi

去除相关矩阵中的 NA

转载 作者:行者123 更新时间:2023-12-03 18:09:57 26 4
gpt4 key购买 nike

我正在为 4000 个变量的数据框做相关矩阵,我想删除显示 > 0.5 相关性的变量,所以我使用 {caret} 包中的这个命令。

removeme <- findCorrelation(corrMatrix, cutoff = 0.5, verbose = FALSE)

Error in if (mean(x[i, -i]) > mean(x[-j, j])) { :
missing value where TRUE/FALSE needed

我拥有的数据变化很大,我在这里和那里得到 NA 值。首先,我在这个命令的帮助页面上找不到可以处理 NA 值的东西,所以我决定自己删除 NA 值。

一些变量在整个数据中显示 NA 值,而有些变量显示很少的 NA 值。我正在尝试删除导致任何 NA 值的变量,以便我能够使用上述命令。这是我的数据外观的最小示例
dput(df) <- structure(list(GK = 1:10, HGF = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), HJI = c(2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
HDF = c(5L, 6L, 8L, 9L, 5L, 2L, 4L, 3L, 2L, 1L), KLJG = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), KLJA = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), KDA = c(10L, 11L, 15L, 18L,
11L, 10L, 10L, 15L, 12L, 13L), OIE = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), AFE = c(0L, 0L, 0L, 1L, 0L, 0L, NA,
NA, NA, NA)), .Names = c("GK", "HGF", "HJI", "HDF", "KLJG",
"KLJA", "KDA", "OIE", "AFE"), class = "data.frame", row.names = c(NA,
-10L))

corrMatrix <- cor(df,use="pairwise.complete.obs")

摆脱这些烦人的变量的最佳主意是什么?我尝试了许多命令,但没有找到一个可以摆脱这些变量的理想命令。这是我的试验之一:
removeme <- corrMatrix[,which(as.numeric(rowSums(is.na(corrMatrix))) > 100)] 

此命令的问题是,如果有超过 100 个错误变量(在相关矩阵中给出 NA),则正常变量将被删除,因为正常变量的列将具有 > 100 个 NA 值。

我希望这个编辑让我的问题更清楚。干杯。

最佳答案

如果您只是想摆脱具有一个或多个 NA 的任何列s,然后就做

x<-x[,colSums(is.na(x))==0]

但是,即使缺少数据,您也可以计算没有 NA 的相关矩阵。值通过指定 use函数中的参数 cor .将其设置为 pairwise.complete.obscomplete.obs将导致没有 NA 的相关矩阵s。
complete.obs将忽略所有缺失数据的行,而 pairwise.complete.obs只会忽略丢失的数据对。请注意,虽然 pairwise.complete.obs “听起来更好”,因为它使用了更多可用数据,但不能保证产生正定相关矩阵,这可能是一个问题。
> set.seed(123)
> x<-array(rnorm(500),c(100,5))
> x[sample(500,3)]<-NA
> cor(x)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 NA NA NA NA
[2,] NA 1 NA NA NA
[3,] NA NA 1 NA NA
[4,] NA NA NA 1.00000000 -0.01925986
[5,] NA NA NA -0.01925986 1.00000000
> cor(x,use="pairwise.complete.obs")
[,1] [,2] [,3] [,4] [,5]
[1,] 1.00000000 -0.04377085 -0.18049501 -0.04914247 -0.19374986
[2,] -0.04377085 1.00000000 0.01296008 0.02606083 -0.12333765
[3,] -0.18049501 0.01296008 1.00000000 -0.03218139 -0.02675554
[4,] -0.04914247 0.02606083 -0.03218139 1.00000000 -0.01925986
[5,] -0.19374986 -0.12333765 -0.02675554 -0.01925986 1.00000000
> cor(x,use="complete.obs")
[,1] [,2] [,3] [,4] [,5]
[1,] 1.00000000 -0.06263112 -0.17914810 -0.02574970 -0.20504268
[2,] -0.06263112 1.00000000 0.01263764 0.02543900 -0.12571570
[3,] -0.17914810 0.01263764 1.00000000 -0.03866312 -0.02520500
[4,] -0.02574970 0.02543900 -0.03866312 1.00000000 -0.01688848
[5,] -0.20504268 -0.12571570 -0.02520500 -0.01688848 1.00000000

关于去除相关矩阵中的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com