SciPy 的 ttest_ind 只回两个数:T 值和 p 值。Pingouin 的 ttest 一次回八个:T 值、自由度、单双侧设定、p 值、均值差的 95% 置信区间、效应量 Cohen's
d、统计功效、贝叶斯因子 BF10。这个差别就是它存在的理由——README 里写得很直白,它面向想要「简单但详尽」的统计函数的用户。
项目 2018 年建立,现有 1,942 个 star、178 个 fork、14 个未结 issue,基于 Pandas 与 NumPy。
它覆盖哪些检验
README 列出的能力可以归成六组:
- 方差分析:多因素、重复测量、混合设计、协方差分析(ANCOVA);
- 成对事后检验(参数与非参数)与成对相关;
- 相关:稳健相关、偏相关、距离相关、重复测量相关;
- 回归与中介:线性/逻辑回归、中介分析;
- 贝叶斯与多元:贝叶斯因子、多元检验、信度与一致性;
- 配套:效应量与功效分析、效应量或相关系数的参数/自助法置信区间、圆形统计、卡方检验,以及 Bland-Altman 图、Q-Q 图、配对图、稳健相关图等绘图。
输出长什么样
README 的「10 分钟上手」给了两张标准输出表,值得记住列名,因为后面写报告要直接用:
| 检验 | 输出列 |
pg.ttest(x,
y) |
T、dof、alternative、p_val、CI95、cohen_
d、power、BF10 |
pg.corr(x,
y) |
n、r、CI95、p_val、BF10、power |
示例数据(n=30,均值 4 与
5、相关 0.6 的二元正态)跑出来是:T=3.401、dof=58、p_val=0.001、CI95=[1.68, 0.43]、cohen_d=0.878、power=0.917、BF10=26.155;相关系数 r=0.595、CI95=[0.3, 0.79]、p_val=0.001、BF10=69.723、power=0.950。
注意这两张表的共同点——点估计、区间、效应量、功效、贝叶斯因子都在同一行里,不需要另外调五六个函数拼。
依赖与环境
核心依赖:NumPy ≥ 2.2.
2、SciPy ≥ 1.15.0、Pandas ≥ 2.3.0、Matplotlib ≥ 3.10.
1、Seaborn ≥ 0.13.
2、Scikit-learn ≥ 1.6.
1、Tabulate;Python 3.11+。部分函数需要额外装 pingouin[extras]:Statsmodels ≥ 0.14.5 用于 ancova、rm_corr 以及不平衡设计或多因素设计的 anova;Mpmath 用于单侧 bayesfactor_pearson。
安装三选一:uv pip install pingouin、pip install pingouin、conda install -c conda-forge pingouin;发版较频繁,升级用 pip install --upgrade pingouin。
怎样同时报告效应量、假设检查与不确定性
把上面的输出列当成一张报告模板,顺序就出来了:
第一层是效应量与区间。p 值只回答「有没有」,cohen_d 与 CI95 回答「有多大、范围多宽」。Pingouin 的 CI95 既支持参数法也支持自助法,对偏态明显或样本小的数据,自助法区间比正态近似更稳。
第二层是功效与贝叶斯因子。power 告诉你这个设计在给定效应量下能检出结果的概率;BF10 给出另一套证据尺度——它不依赖「零假设为真」的框架,p=0.05 附近 BF10 常常只有弱证据,两个指标一起报能避免把「刚好显著」说成「已被证实」。
第三层是设计与假设。方差分析类的函数把多因素、重复测量、混合设计与协方差分析分开做,成对事后检验与成对相关都提供参数和非参数两套;不平衡或多因素设计要装 extras 里的 Statsmodels。报告时把设计类型、事后检验方法、是否做了多重比较校正写清楚,比只写一个 p 值有用得多。
第四层是稳健性。稳健相关、偏相关、距离相关、重复测量相关这四种相关各有适用场景:有离群值用稳健相关,需要控制第三变量用偏相关,变量间关系非线性用距离相关,同一批受试多次测量用重复测量相关。把主分析与稳健方法的结果并排放,比单报一个 Pearson r 更可信。
一句话:Pingouin 把「效应量+区间+功效+贝叶斯因子」打包成一行输出,但要不要报、按什么顺序解释,仍然取决于你的设计和对假设的检查——工具替你算了,没替你判断。
────────────────
仓库地址、官方文档、示例笔记本、JOSS 论文与 GPL-3.0 许可原文已整理好,回复后可见。