从Python dataframe进行ANOVA和HSD测试

2 投票
1 回答
2360 浏览
提问于 2025-04-21 03:02

我想找一种方法,在Python中对一个数据框进行ANOVA和HSD测试。我试着在论坛和教程上找了一些例子,但没能成功应用到我的工作中。

这里有一个简单的Pandas数据框:

Date Density Hour  Repetition Glucose
A    HD      AM    1          6.7
A    HD      AM    2          6.8
A    HD      PM    2          9.6
A    HD      PM    3          11.9
B    HD      AM    1          23
B    HD      AM    2          18.1
B    HD      PM    1          43.3
B    HD      PM    2          32
C    HD      AM    1          5.1
C    HD      AM    2          3.8
C    HD      PM    1          5.2
C    HD      PM    2          5.5

我该如何进行ANOVA测试,然后再进行HSD测试,以检查日期、密度和小时对血糖的影响呢?我尝试过这些库:

from scipy.stats import f_oneway
from statsmodels.stats.multicomp import pairwise_tukeyhsd

但我还是没办法把它们应用到我的例子上。

提前谢谢你!

1 个回答

1

pairwise_tukeyhsd 这个函数只能处理一个组变量,适用于单因素方差分析(oneway ANOVA)。不过,在创建一个包含所有不同解释变量的组索引后,可以对所有完全交互的组进行成对比较。比如说,group1 = (A, HD, AM, 1)group2 = (A, HD, AM, 2),依此类推。

如果我们只想比较某些效果,就需要在用普通最小二乘法(OLS)估计多因素方差分析后进行成对比较。但目前在statsmodels中还没有这个功能。在这种情况下,Tukey-HSD的临界值和p值就不适用了。

在这种情况下,可以用OLS估计完整模型,定义所有想要的成对对比,然后使用t_test来获取比较的原始p值,最后再应用一些可用的多重p值校正方法。

撰写回答