问题描述
我需要使用事后 Tukey 检验对重复测量执行方差分析。
由于我对 Python 非常陌生,所以我使用下面的示例测试了我的代码。 在这里,我只使用了两个组,因此可以将结果与配对样本 t 检验进行比较(这些应该导致相同的 p 值和均值差异)。 另外,我在 Matlab 中重复了 t 检验和 Tukey 检验(因为我在这里有经验)。
我正在使用以下方法: statsmodels.stats.multicomp.pairwise_tukeyhsd 和 scipy.stats.ttest_rel 我的原始数据是一个 pd.dataframe,因此我在示例中也使用了它。
就我而言,python 之间存在分歧
- p 值: 来自 ttest_rel 和 pairwise_tukeyhsd 的那些不一致。 ttest_rel 得到的结果与我在 Matlab 中使用 t 检验或 Tukey 检验得到的结果一致。
- meanDiffs: 在 ttest_rel 中是错误的(尽管我不太确定输出参数“统计数据”是否应该是差异的平均值 - 不过我还没有找到任何其他解释)。它接近平均差但不正确。
来自 ttest_rel 的结果“统计”和来自 pairwise_tukeyhsd 的“p-adj”是否需要额外的分析步骤来分别解释为均值差和 p 值? 还是我在这里做错了什么?
如果您有任何反馈,我将不胜感激!
玛丽安
import numpy as np
import pandas as pd
from scipy.stats import ttest_rel
from statsmodels.stats.multicomp import (MultiComparison,tukeyhsd,pairwise_tukeyhsd)
testData = [10,12,8,9,16,13,15,14,10,11]
groups = [1,2,1,2]
testList = []
for ne,e in enumerate(testData):
row = []
row.append(e)
row.append(groups[ne])
testList.append(row)
dfTest = pd.DataFrame(data = testList,columns=["data","groups"])
d1 = dfTest[dfTest.groups == 1].data.to_numpy()
d2 = dfTest[dfTest.groups == 2].data.to_numpy()
ttestRes = ttest_rel(d1,d2,alternative = 'two-sided')
print(ttestRes)
tukeyResTest = pairwise_tukeyhsd(endog=dfTest['data'],groups=dfTest['groups'],alpha=0.05)
print(tukeyResTest)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)