簡體   English   中英

如何循環通過 pandas dataframe 為每個變量運行獨立的測試?

[英]How to loop through a pandas dataframe to run an independent ttest for each of the variables?

我有一個包含大約 33 個變量的數據集。 數據集包含患者信息,感興趣的結果本質上是二進制的。 下面是數據片段。

數據集存儲為 pandas dataframe

df.head()
ID     Age  GAD  PHQ  Outcome
1      23   17   23      1
2      54   19   21      1
3      61   23   19      0
4      63   16   13      1
5      37   14   8       0

我想運行獨立的 t 檢驗,根據結果查看患者信息的差異。 所以,如果我要單獨對每個人進行 t 檢驗,我會這樣做:

age_neg_outcome = df.loc[df.outcome ==0, ['Age']]
age_pos_outcome = df.loc[df.outcome ==1, ['Age']]

t_age, p_age = stats.ttest_ind(age_neg_outcome ,age_pos_outcome, unequal = True)

print('\t Age: t= ', t_age, 'with p-value= ', p_age)

如何在每個變量的 for 循環中執行此操作?

我看過這篇文章,有點相似,但無法使用它。

Python:T 測試 ind 在 df 列上循環

你快到了。 ttest_ind接受多維 arrays :

cols = ['Age', 'GAD', 'PHQ']
cond = df['outcome'] == 0

neg_outcome = df.loc[cond, cols]
pos_outcome = df.loc[~cond, cols]

# The unequal parameter is invalid so I'm leaving it out
t, p = stats.ttest_ind(neg_outcome, pos_outcome)
for i, col in enumerate(cols):
    print(f'\t{col}: t = {t[i]:.5f}, with p-value = {p[i]:.5f}')

Output:

    Age: t = 0.12950, with p-value = 0.90515
    GAD: t = 0.32937, with p-value = 0.76353
    PHQ: t = -0.96683, with p-value = 0.40495

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM