为何收录
0.7.0 对研究者最重要的变化是纠错。官方更新记录写明,这一版修复了许多缺陷,其中若干会在不报错的情况下返回错误结果,并强烈建议所有用户升级。列入“错误结果”一类的修复包括:mixed_anova 的球形性校正;两个组内因素都多于两个水平时 rm_anova 交互项的 epsilon;sphericity 的 JNS 检验统计量;linear_regression 与 logistic_regression 的标准误随预测变量尺度变化;带 padjust 的 rcorr 校正过宽;ptests 忽略 padjust 参数;设置全局舍入选项时 pairwise_tests 的校正 p 值;以及存在未使用因子水平时 anova 与 ancova 的平方和。用旧版本做过这些分析的读者,值得在 0.7.0 下重算核对。
混合方差分析的版本对比
更新记录对 mixed_anova 的说明是:旧版组内因素的 Greenhouse-Geisser 校正 p 值与同一行的 F 值和自由度不一致,epsilon 和 Mauchly 球形检验又是用总协方差矩阵、而不是组内合并协方差矩阵算出的。官方称修正后的数值与 R、SPSS 和 JASP 一致,交互项也增加了校正 p 值;只要组均值在组内因素的各水平间存在差异,eps、W_spher、p_spher 和 p_GG_corr 都会改变。
实测使用 Pingouin 内置的 mixed_anova 数据:60 人分为 Control 和 Meditation 两组,在 August、January、June 三个时间点各测一次,共 180 行。脚本沿用 README 第 7、8 节的示例,只把 correction 改为 True 以显示校正结果,运行命令为 python ex02_mixed_anova.py。0.7.0 的输出中,Group 主效应 F=5.051709,p=0.028420,偏 η²=0.080120;Time 主效应 F=4.027394,未校正 p=0.020369,GG 校正 p=0.020438,偏 η²=0.064929;交互作用 F=2.727996,未校正 p=0.069545,校正 p=0.069655。
事后比较沿用 README 的 FDR(BH)校正与 Hedges g。August 与 June 的差异校正后 p=0.024134,Hedges g=−0.482547,BF10=4.232;August 与 January、January 与 June 两对的校正 p 分别为 0.130512 和 0.310194。这组比较把两组合并后看 Time,不能当作交互作用的简单效应检验。

内置 mixed_anova 数据的混合方差分析与事后比较输出(实测终端截图,2026-10-19 运行生成)
随后在第二个独立虚拟环境中安装 0.6.1,用同一脚本和相同的依赖版本重跑,没有出现兼容性错误。两版的描述统计、F 值、未校正 p 值和事后比较完全相同,差别集中在球形性相关的几列:Time 的 eps 由 0.998751 变为 0.99812,Mauchly 检验 p 值由 0.964357 变为 0.947694,GG 校正 p 值由 0.022677 变为 0.020438;交互作用在 0.6.1 中没有校正 p 值,0.7.0 给出 0.069655。
eps 接近 1 时,校正 p 值本应与未校正 p 值(0.020369)非常接近。0.6.1 给出的 0.022677 偏离较多,0.7.0 的 0.020438 则贴近,这与更新记录描述的问题相符。在这份数据里,两个版本的结论一致:Time 在 0.05 水平显著,交互作用不显著。本次只测了这一份数据,不能据此估计其他设计中修正前后的差距。
t 检验与相关示例
README 第 1 节的 t 检验示例使用随机种子 123,每组 30 个观测,按默认的独立样本设定运行(python ex01_ttest.py)。一行 pg.ttest 返回 T=−3.400706,自由度 58,p=0.001222,均值差的 95% 置信区间为 [−1.68, −0.43],Cohen's d=0.878059,检验力 0.916807,BF10=26.155。README 生成的两列数据本身相关,真实的配对设计应设置 paired=True。
README 第 2 节的 Pearson 相关复用同一组数据(python ex03_correlation_plot.py):n=30,r=0.594785,95% 置信区间 [0.3, 0.79],p=0.000527,BF10=69.723,检验力 0.950373。同一脚本还运行了函数文档中的 pg.qqplot 示例:重设种子 123,生成 50 个标准正态样本,画出文首的 Q-Q 图。它只演示绘图功能,不是对下文案例残差的诊断。
模拟前后测研究案例
为了贴近常见的干预研究,实测另写了一个前后测两组设计的案例。以下全部是模拟数据,不是研究证据:两组各 30 人,前测、后测各一次;个体基线服从均值 50、标准差 8 的正态分布,测量噪声标准差为 3,对照组设定平均提高 1 分,干预组提高 6 分;随机种子固定为 20261019。
混合方差分析(python ex04_research_case.py)显示,Time 主效应 F=39.905608,p=4.066926×10⁻⁸,偏 η²=0.407593;Group 主效应 F=0.017024,p=0.8966405;交互作用 F=13.362783,p=0.0005541788,偏 η²=0.187251。只有两个时间点时 epsilon 等于 1,这个案例看不出球形性校正的作用。
pg.pairwise_tests 在混合设计中默认比较的是每个时间点上的组间差异,前测和后测的 Holm 校正 p 都是 0.568783。研究者往往更关心各组自身的前后变化,因此脚本另对每组做 Post−Pre 配对 t 检验,并在这两次预设检验之间做 Holm 校正:对照组 t=1.633326,p=0.1132123,Cohen's d=0.168390;干预组 t=8.600295,校正 p=3.591585×10⁻⁹,Cohen's d=0.773684,BF10=6.531×10⁶。还要注意,pairwise_tests 输出中单个主效应行的 p_corr 显示为 NaN,不代表这些行已经校正。
最后用同一随机数流生成 40 名受访者对 5 个连续题项的作答,计算得到 Cronbach α 约为 0.935(输出 0.9347949933198707),95% 置信区间为 [0.896, 0.962]。这只示范内部一致性的计算,不能说明量表效度。

模拟前后测两组设计的混合方差分析、配对比较与 Cronbach alpha 输出(模拟数据,实测终端截图,2026-10-19 运行生成)
局限与许可
这次实测只覆盖 README 和函数文档中的少量示例和一个模拟案例,没有运行项目完整测试套件,结果不能当作对 Pingouin 数值正确性的独立认证。我们也没有另行检验正态性、方差齐性等前提。依赖版本由安装时自动解析,换一套依赖组合,输出可能有差别。0.7.0 还包含不兼容改动,例如 linear_regression 不再自动删除重复、全零或多余的常数列,已弃用的 gzscore 被移除,升级前应检查已有脚本。
Pingouin 采用 GNU GPL 第 3 版。这一许可不限制在研究中运行程序;分发修改版,或分发包含 Pingouin 的软件时,须按 GPL-3.0 提供对应源代码并附许可证文本。计划把它打包进闭源工具对外发布的团队,应先评估许可要求。
已经在用 0.6.x 的读者,可以拿一份自己的混合设计数据,在两个独立环境中分别运行 0.6.1 和 0.7.0,对照 eps 与 p_GG_corr 两列;这是建议的验收步骤,本文没有用真实研究数据做过。项目入口:GitHub 仓库、v0.7.0 发布页、文档站。