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