繁体   English   中英

如何在 python 中使用 t 检验方法计算 t 和 p 值?

[英]How to calculate t and p values with t-test approach in python?

我有一个数据集,可以同时测量大量基因的表达水平。

这是我的数据框的一部分

在此处输入图像描述

第 0 列是指基因类型,其他列是患者样本。 数据集中的样本代表患者。 对于每位患者,测量 7070 个基因表达(值)以将患者的疾病分类为以下病例之一:EPD、JPA、MED、MGL、RHB。

我想为每个 class 生成具有最高绝对 T 值的前 2、4、6、8、10、12、15、20、25 和 30 个顶级基因的子集。

我尝试对每个可能的配对使用 scipy.stats.ttest_ind。

def calculate_t():
t_res = []
for cls in range(np.max(classes)):
    samp = np.where(classes == cls)[0]
    for gene in range(train.shape[1]):
        for other_genes in range(gene, train.shape[1]):
            t_res.append(ttest_ind(train[samp, gene], train[samp, other_genes])[:])

return t_res

我没有继续,因为我认为这需要太长时间。

如果有人有任何想法,我将不胜感激。 祝你今天过得愉快。

由于 Stack Overflow 旨在关注技术问题,因此我会尽量不在我的回答中使用大量统计数据,但是在执行多重测试时存在相当大的理论问题。 简而言之,接受通常需要 0.05 的 p 值,这意味着如果 null 假设为真,它发生的机会仅为 5%。 如果您进行大量类似的测试,其中一个会拒绝 null 假设的可能性变得更大。

把它想象成你在哪里掷骰子得到六——每次掷骰的机会只有六分之一,但是如果你掷一百次,或多或少可以保证你的很多掷骰都是六(即使这在给定的情况下不太可能)。

与其优化您的代码以执行多个 t 检验,不如研究旨在跨多个比较工作的替代性检验的重要性。

Scipy 有一个 ANOVA 测试,您可以在多重比较中用于显着性,如下所示:

stats.f_oneway(df['sample_one'], df['sample_two'], df['sample_three'])

尽管这只会为您提供整体测试的 F 和 P 值。 如果您想分解更多细节,可能值得研究其他测试,例如 statsmodels 模块支持的 Tukey 测试。 您可以在此处找到有关执行此操作的有用指南。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM