【问题标题】:Computing summary statistics over samples from a list of matrices从矩阵列表中计算样本的汇总统计
【发布时间】:2014-01-18 23:32:27
【问题描述】:

我有一个具有相同维度的矩阵列表,例如:

mat.list=rep(list(matrix(rnorm(n=12,mean=1,sd=1), nrow = 3, ncol=4)),3)

我想做的是从列表中的每个矩阵中对随机列进行多次采样,例如在给定的样本中,要采样的列索引是:

set.seed(10) #for reproducibility
idx.vec = sample(1:ncol(mat.list[[1]]),length(mat.list))

而这个function 将返回一个采样列的矩阵:

sample.mat = mapply('[', mat.list, TRUE, idx.vec)

对于每个这样的样本矩阵,我想计算每一行的均值和方差。因此,结果将是样本均值的矩阵和样本方差的矩阵,这样这些矩阵的维度将是列表中矩阵的行数乘以样本数。

最有效(时间和空间)的方法是什么?

【问题讨论】:

    标签: r list matrix sample


    【解决方案1】:

    我会使用 replicaterowMeans 来表示平均值,rowSds 来自 matrixStats

    ll <- length(mat.list)
    nn <- ncol(mat.list[[1]])
    
    replicate(3,{
       idx.vec = sample(seq_len(nn),ll)
       sample.mat = mapply('[', mat.list, TRUE, idx.vec)
       list(mm = rowMeans(sample.mat),sd = rowSds(sample.mat))
    },simplify=FALSE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 2020-01-02
      • 2018-09-11
      • 2015-05-26
      • 1970-01-01
      • 2014-04-09
      • 2023-01-05
      • 2011-03-30
      相关资源
      最近更新 更多