在R或Python中随机化矩阵的最有效方法

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

我正在使用R中的数字矩阵M,它非常大(每20列11000行)。在这个矩阵上,我正在进行大量的相关性测试

=>函数cor.test(M[i,], M[j,], method='spearman')其中i和j是矩阵的两行(测试所有可能的组合)。

你知道的问题是我做了太多的测试来获得这个测试返回的非常可靠的p值。

我克服这个限制的策略是通过我的矩阵M上的Bootstrap生成一个新的概率分布:我想从M生成100个随机矩阵来对这些矩阵进行多重相关并为p选择正确的截止值。 - 获得5%的FDR值。

我的问题是:

  1. 什么是随机化矩阵的最有效方法?
  2. 由于它非常耗时(我想)如果解决方案可以并行化可能会很有趣。

提前感谢您提供给我的所有有用答案。

r python
1个回答
0
投票

在python中,random.sample()模块中有一个函数random。如果您将M存储为行列表,则从矩阵n中随机抽样M行而不进行替换将是这样的

M_sample = random.sample(M,n)

但是,对于自举,您可能希望使用替换进行随机抽样。为此,您可以使用numpy.random.choice()

import numpy
M_sample = numpy.random.choice(M,n,replace=True)

在R中,我们使用sample()随机决定要采用的行索引,然后使用行访问从矩阵中获取行。从矩阵n随机抽样M行而不进行替换,如下所示:

indices = sample(nrow(M), n,replace=FALSE)
M_sample = M[indices, ]

对于随机取样的替换,用这个替换第一行:

indices = sample(nrow(M), n,replace=TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.