【问题标题】:R pnorm function with sparse matrix具有稀疏矩阵的 R pnorm 函数
【发布时间】:2020-08-14 23:11:01
【问题描述】:

我想找到一个大型稀疏矩阵的 pvalues。该矩阵中的所有元素都是标准的正态 z 分数。我想使用pnorm函数,但是遇到了pnorm不支持稀疏矩阵的问题。除了将稀疏矩阵转化为全矩阵,还有其他更高效的方法吗?

欢迎提出任何建议!

【问题讨论】:

    标签: r matrix sparse-matrix


    【解决方案1】:

    如果是稀疏矩阵,你可以很容易地用 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 值的方式,但您可以轻松地将其转换为向量而不是上面使用的矩阵。

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2016-08-31
      • 2017-02-12
      • 2017-07-21
      • 2013-11-29
      • 2013-06-26
      相关资源
      最近更新 更多