Ranksums 返回重复的 p 值

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

我正在尝试使用代谢组学数据创建火山图。 P值是使用 scipy.statsrankums 函数获得的。看来 p 值是重复的或四舍五入的。 我的数据框包含 lo2fc 值,我正在尝试添加以这种方式计算的 pvalues:

from scipy.stats import ranksums
groupA = subset_filter.iloc[:,4:7].values
groupB = subset_filter.iloc[:,7:10].values


# #Wilcoxon test using ranksums function 
test = ranksums(groupA1,groupB2, axis=1)

假设计算这些组上的所有行(12k+)。即使值不同,它也会给我重复的 pvalue 值。

python bioinformatics p-value scipy.stats
1个回答
0
投票
如果

ranksums(groupA1, groupB2, axis=1)

ranksums
 是二维的,
groupA1
将对
groupB2
groupA1
的相应行执行
groupB2
测试。

import numpy as np
from scipy import stats
rng = np.random.default_rng(8542454925621)
x = rng.random(size=(4, 10))
y = rng.random(size=(4, 15))

res = stats.ranksums(x, y, axis=1).pvalue
ref = [stats.ranksums(xi, yi).pvalue for xi, yi in zip(x, y)]
np.testing.assert_allclose(res, ref)  # passes

如果函数产生重复的 p 值,则不太可能是因为函数行为不当。请注意,ranksums 统计量基于观察值的等级,而不是值本身,因此如果样本只有几个观察值,则只有少数唯一的统计值,因此也只有少数唯一的 p 值。

x = rng.random(size=(1000, 10))
y = rng.random(size=(1000, 15))
p = stats.ranksums(x, y, axis=1).pvalue
len(np.unique(p))  # 54
© www.soinside.com 2019 - 2024. All rights reserved.