Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中带阈值的相关计算_R_Correlation - Fatal编程技术网

R中带阈值的相关计算

R中带阈值的相关计算,r,correlation,R,Correlation,我想计算R中的相关性。但是我有很多缺失值。所以,我想在相关性矩阵中只承认,相关性是由至少10对值计算出来的。 如何进行 编辑: 请注意,相关矩阵是由两个具有相同个体(行)的大矩阵X和Y生成的。首先,我们生成一些示例数据: R> x = matrix(rnorm(100), ncol=5) ##Fill in some NA's R> x[3:15,1] = NA R> x[2:10,3] = NA 接下来,我们循环通过x矩阵进行比较,以检测NA: ##Create a mat

我想计算R中的相关性。但是我有很多缺失值。所以,我想在相关性矩阵中只承认,相关性是由至少10对值计算出来的。 如何进行

编辑:
请注意,相关矩阵是由两个具有相同个体(行)的大矩阵X和Y生成的。

首先,我们生成一些示例数据:

R> x = matrix(rnorm(100), ncol=5)
##Fill in some NA's
R> x[3:15,1] = NA
R> x[2:10,3] = NA
接下来,我们循环通过
x
矩阵进行比较,以检测NA:

##Create a matrix with where the elements are the
##maximum number of possible comparisons 
m = matrix(nrow(x), ncol=ncol(x),nrow=ncol(x)) 
## This comparison can be made more efficient. 
## We only need to do column i with i+1:ncol(x)

## Each list element
for(i in 1:ncol(x)) {
    detect_na = is.na(x[,i]==x)
    c_sums = colSums(detect_na)
    m[i,] = m[i,] - c_sums
}
矩阵
m
现在包含每个列对的比较次数。现在转换
m
矩阵以准备子集:

 m = ifelse(m>10, TRUE, NA)
接下来,我们根据
m
计算所有列对和子集的相关性:

R> matrix(cor(x, use = "complete.obs")[ m], ncol=ncol(m), nrow=nrow(m))
     [,1]    [,2]     [,3]    [,4]    [,5]
[1,]   NA      NA       NA      NA      NA
[2,]   NA  1.0000 -0.14302 0.35902 -0.3466
[3,]   NA -0.1430  1.00000 0.03949  0.6172
[4,]   NA  0.3590  0.03949 1.00000  0.1606
[5,]   NA -0.3466  0.61720 0.16061  1.0000

我不明白你的编辑。您可以使用
as.data.frame
轻松地将data.frame转换为矩阵,反之亦然。但是,对于大型矩阵,您的解决方案需要花费太多时间。我不认为大型矩阵会有问题,因为您的标准是至少有10个观察值。如果有很多列,可以删除循环前观测值少于10个的列。