具有稀疏矩阵的R pnorm函数

问题描述 投票:0回答:1

我想找到一个大型稀疏矩阵的p值。此矩阵中的所有元素均为标准法线z得分。我想使用pnorm函数,但是遇到pnorm不支持稀疏矩阵的问题。除了将稀疏矩阵转换为完整矩阵,还有其他更有效的方法吗?

任何建议都值得赞赏!

r matrix sparse-matrix
1个回答
0
投票

如果它是稀疏矩阵,则可以用pnorm(0 ..)轻松替换0值。剩下的就是计算非零值,您可以执行此操作。例如一个稀疏矩阵:

data <- rnorm(1e5)
zero_index <- sample(1e5)[1:9e4]
data[zero_index] <- 0
mat <- matrix(data, ncol=100)
mat_sparse <- Matrix(mat, sparse=TRUE)

使用pnorm为0创建矩阵:

mat_pnorm <- matrix(pnorm(rep(0,length(mat_sparse))),ncol=ncol(mat_sparse))
nzData <- summary(mat_sparse)
mat_pnorm[as.matrix(nzData[,1:2])] <- pnorm(nzData$x)
all.equal(mat_pnorm,pnorm(mat))
[1] TRUE

您没有指定想要p值的方式,但是可以轻松地将其转换为向量,而不是上面使用的矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.