python - ttest 和 tukeyhsd 结果不一致
问题描述
我需要使用事后 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-test 或 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, 12, 13, 9, 15, 8, 14, 10, 13, 8, 15, 13, 12, 10, 11]
groups = [1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,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)
解决方案
推荐阅读
- reactjs - 笑话:等待 componentDidMount 中异步方法的调用 .then
- python - 使用 pandas python 获取用户输入并搜索 csv
- angular - 无法在 Angular 中重新格式化日期变量
- laravel - 图像像公共文件夹中的 tmp 文件一样保存
- c# - 将 .NET Core 项目编译为 .exe 文件而不是 .dll 文件
- gunicorn - WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:200
- javascript - 如何动态更新 div 以添加嵌入的推文,然后是其他 HTML 元素
- r - 在R闪亮中更新ActionButton单击事件的绘图输出
- python-3.x - 如何将 Excel 工作表中的 numpy 浮点数组乘以常数?
- c# - 从后台进程打开窗口并在 WPF 中从用户那里获取输入