从Python dataframe进行ANOVA和HSD测试
我想找一种方法,在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值校正方法。