gpt4 book ai didi

python - 用于比较多个数据列的循环 T 检验

转载 作者:行者123 更新时间:2023-12-02 19:01:48 26 4
gpt4 key购买 nike

我有一个有 11 列数据的 Pandas 。我想通过测试将每一列与其他每一列进行比较(见下文)。如何创建一个循环来自动比较所有列,而无需为每个列对组合手动编写代码?

from scipy.stats import ttest_ind
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [1.142, -0.432, -0.938, -0.729, -0.846, -0.157, 0.500, 1.183, -1.075, -0.169]
stat, p = ttest_ind(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('Probably the same distribution')
else:
print('Probably different distributions')

是否可以用矩阵或图形方式显示结果?提前致谢!

最佳答案

让我们使用嵌套字典理解来计算每个可能的列组合的t-test,然后从嵌套字典初始化一个新的数据帧以创建格式良好的矩阵表示:

dct = {x: {y: 's={:.2f}, p={:.2f}'.format(
*ttest_ind(df[x], df[y])) for y in df} for x in df}
mat = pd.DataFrame(dct)


print(mat)
data1 data2
data1 s=0.00, p=1.00 s=0.33, p=0.75
data2 s=-0.33, p=0.75 s=0.00, p=1.00

如果您需要仅包含 p 值 的矩阵:

dct = {x: {y: ttest_ind(df[x], df[y]).pvalue for y in df} for x in df}
mat = pd.DataFrame(dct)

print(mat)
data1 data2
data1 1.00000 0.74847
data2 0.74847 1.00000

要计算所有 p 值 的平均值,请使用:

mat.to_numpy().mean()
0.8742349436807844

注意:df 是包含列 data1data2 ...

的数据框

关于python - 用于比较多个数据列的循环 T 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65456028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com