ttest 和 tukeyhsd 结果不一致

问题描述

我需要使用事后 Tukey 检验对重复测量执行方差分析。

由于我对 Python 非常陌生,所以我使用下面的示例测试了我的代码在这里,我只使用了两个组,因此可以将结果与配对样本 t 检验进行比较(这些应该导致相同的 p 值和均值差异)。 另外,我在 Matlab 中重复了 t 检验和 Tukey 检验(因为我在这里有经验)。

我正在使用以下方法: statsmodels.stats.multicomp.pairwise_tukeyhsd 和 scipy.stats.ttest_rel 我的原始数据是一个 pd.dataframe,因此我在示例中也使用了它。

就我而言,python 之间存在分歧

  1. p 值: 来自 ttest_rel 和 pairwise_tukeyhsd 的那些不一致。 ttest_rel 得到的结果与我在 Matlab 中使用 t 检验或 Tukey 检验得到的结果一致。
  2. 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 (将#修改为@)