[英]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.