簡體   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