我有一个熊猫数据框,其格式为:
Variable A1 A2 B1 B2 C1 C2 D1 D2
X 2 3 5 6 13 12 3 3
Y 1 1 7 9 16 19 11 9
Z 3 4 6 6 2 3 53 48
其中A1-A2,B1-B2等是重复测量,而X,Y,Z是要测量的不同变量。
我想对每一行在D1-D2和B1-B2之间进行t检验,然后将每个比较的p值附加到新列中。
期望的结果将是:
Variable A1 A2 B1 B2 C1 C2 D1 D2 p-val
X 2 3 5 6 13 12 3 3 0.0345
Y 1 1 7 9 16 19 11 9 0.111
Z 3 4 6 6 2 3 53 48 0.0004
先谢谢您。
答案 0 :(得分:0)
我得到了不同的结果(我猜不出您如何进行T检验),但是您可以使用scipy.stats.ttest_ind
对自变量进行t检验,并提取p-结果中的值(输出的第一个索引,有关详细信息,请参阅链接的文档)
from scipy.stats import ttest_ind
df['p-val'] = ttest_ind(df[['B1', 'B2']], df[['D1', 'D2']], axis=1)[1]
>>> df
Variable A1 A2 B1 B2 C1 C2 D1 D2 p-val
0 X 2 3 5 6 13 12 3 3 0.037750
1 Y 1 1 7 9 16 19 11 9 0.292893
2 Z 3 4 6 6 2 3 53 48 0.003141
答案 1 :(得分:0)
我猜该方法是正确的。但是我得到的p值略有不同
from scipy import stats
def my_func(x):
x["p-val"] = stats.ttest_ind([x.D1,x.D2], [x.B1,x.B2]).pvalue
return x
df = df.apply(my_func, axis=1)
输出:
Variable A1 A2 B1 B2 C1 C2 D1 D2 p-val
X 2 3 5 6 13 12 3 3 0.037749551350623724
Y 1 1 7 9 16 19 11 9 0.29289321881345254
Z 3 4 6 6 2 3 53 48 0.0031413032318505603