statistical-analysis

Polar Sponsor
爱发电 赞助
.NET 9.0

面向研究数据的引导式统计分析——检验选择、假设检查、效应量、功效分析、贝叶斯替代方法和 APA 格式报告。适用于用户想要比较组、检验假设、分析实验或调查数据、检

进行假设检验(t 检验、方差分析、卡方检验)、回归、相关和贝叶斯分析,并系统地进行假设检查、效应量计算和 APA 风格报告

功能概述

进行假设检验(t 检验、方差分析、卡方检验)、回归、相关和贝叶斯分析,并系统地进行假设检查、效应量计算和 APA 风格报告是一项面向实际任务的技能,主要用于目标是产生一份审稿人无法挑剔的分析:正确的检验、经过验证的假设、诚实的效应量和完整的报告;何时使用此技能;

核心要点

  • 在以下情况下使用此技能:;
  • 进行统计假设检验(t 检验、方差分析、卡方检验、非参数检验);
  • 执行回归或相关分析;

使用与执行

运行贝叶斯统计分析;检查统计假设和诊断。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

统计分析

概述

进行假设检验(t 检验、方差分析、卡方检验)、回归、相关和贝叶斯分析,并系统地进行假设检查、效应量计算和 APA 风格报告。目标是产生一份审稿人无法挑剔的分析:正确的检验、经过验证的假设、诚实的效应量和完整的报告。

何时使用此技能

在以下情况下使用此技能:

  • 进行统计假设检验(t 检验、方差分析、卡方检验、非参数检验)
  • 执行回归或相关分析
  • 运行贝叶斯统计分析
  • 检查统计假设和诊断
  • 计算效应量并进行功效分析
  • 以 APA 格式报告统计结果
  • 分析用于研究的实验或观察数据

安装

使用 uv 安装此技能中使用的库。生产环境固定版本;非固定安装适合探索。

# 核心频率统计栈(Python 3.10+;推荐 3.12+ 以获得最新的 SciPy/ArviZ)
uv pip install "pingouin>=0.6" "scipy>=1.11" "statsmodels>=0.14.6" pandas matplotlib seaborn

# 贝叶斯建模(PyMC 5 + ArviZ)
uv pip install "pymc>=5.0" "arviz>=1.0"

兼容性说明(已验证 pingouin 0.6.1、statsmodels 0.14.6、arviz 1.2,2026 年):

  • Pingouin 0.6.0 重命名输出列以移除特殊字符:p_val、cohen_d、CI95、p_unc(之前为 0.5.x 中的 p-val、cohen-d、CI95%、p-unc)。以下示例使用当前名称;如果停留在 0.5.x,请使用连字符形式。
  • statsmodels + SciPy:使用 statsmodels>=0.14.6 和 scipy>=1.11 以避免 SciPy 1.16+ 上的 _lazywhere 导入错误。
  • ArviZ 1.x:az.summary() 现在默认为 89% 区间(eti89 列),宽度参数为 ci_prob(而非 hdi_prob)。要报告常规的 95% 可信区间,请传递 az.summary(trace, ci_prob=0.95)。
  • Pingouin 已移除单侧贝叶斯因子:pg.ttest(..., alternative='greater') 静默丢弃 BF10 列,pg.bayesfactor_ttest 在单侧替代上引发错误。对于单侧贝叶斯检验,直接使用 PyMC(计算方向性假设的后验概率)或 JASP/R 的 BayesFactor。

对于模型特定 API(OLS、GLM、ARIMA),参见 statsmodels 技能。对于 PyMC 工作流,参见 pymc 技能。

分析工作流

每项合理的分析都遵循相同的流程。跳过步骤是分析最终被撤稿的原因,因此请按顺序进行,并在每一步说明你所做的工作。

  1. 在接触数据之前先提出问题。 陈述假设、结果和预测变量以及研究设计(独立 vs. 配对、组数)。现在就承诺执行事先计划好的检验——在查看结果后选择检验就是 p-hacking,即使是出于无意。
  2. 检查数据。 每组:n、均值、标准差、中位数、缺失值。在任何检验之前绘制原始数据(直方图或箱线图)。不等的组大小、缺失值、地板/天花板效应和异常值都会改变适合的检验——将其呈现给用户,而不是静默地绕过它们。
  3. 使用下面的快速参考选择检验,或对于超出基本设计(计数、时间-事件、可靠性、因子设计)的内容,参见 references/test_selection_guide.md。
  4. 使用 scripts/assumption_checks.py 检查假设。 如果假设不满足,切换到补救性检验(见下表),并同时报告原计划和变更。
  5. 运行检验并始终同时计算效应量——p 值说明效应存在;效应量说明是否值得关注。
  6. 使用下面的 APA 模板进行报告,包括描述性统计、精确统计量、带 CI 的效应量以及所执行的假设检查。

如果用户只需要一个步骤(例如"我需要多少参与者?"),直接跳到该部分——但仍然确认计算所依赖的设计假设。

检验选择指南

快速参考:选择正确的检验

参见 references/test_selection_guide.md 获取全面指导(计数、生存、可靠性、因子设计)。快速参考:

比较两组:

  • 独立、连续、正态 → 独立样本 t 检验
  • 独立、连续、非正态 → Mann-Whitney U 检验
  • 配对、连续、正态 → 配对 t 检验
  • 配对、连续、非正态 → Wilcoxon 符号秩检验
  • 二分类结果 → 卡方检验或 Fisher 精确检验

比较 3 组及以上:

  • 独立、连续、正态 → 单因素方差分析
  • 独立、连续、非正态 → Kruskal-Wallis 检验
  • 配对、连续、正态 → 重复测量方差分析
  • 配对、连续、非正态 → Friedman 检验

关系:

  • 两个连续变量 → Pearson 相关(正态)或 Spearman 相关(非正态)
  • 连续结果 + 预测变量 → 线性回归
  • 二分类结果 + 预测变量 → Logistic 回归

贝叶斯替代方法: 所有检验都有贝叶斯版本,提供关于假设的直接概率陈述、量化证据的贝叶斯因子以及支持零假设的能力。参见 references/bayesian_statistics.md。

假设检查

在解释检验结果之前始终检查假设,并报告检查结果——审稿人会关注这些。

使用捆绑的 scripts/assumption_checks.py 模块。从技能目录(skills/statistical-analysis/)运行 Python,或将 scripts/ 添加到 sys.path:

from assumption_checks import comprehensive_assumption_check

# 异常值 + 正态性(每组)+ 方差齐性,含图表
results = comprehensive_assumption_check(
    data=df,
    value_col='score',
    group_col='group',  # 可选:用于组间比较
    alpha=0.05
)

针对特定检查,导入单独的函数:

from assumption_checks import (
    check_normality,                # Shapiro-Wilk + Q-Q 图 + 直方图
    check_normality_per_group,
    check_homogeneity_of_variance,  # Levene 检验 + 箱线图
    check_linearity,                # 简单回归的散点图 + 残差图
    check_regression_diagnostics,   # 完整 OLS 诊断(见下面的回归)
    detect_outliers                 # IQR 或 z-score 方法
)

result = check_normality(data=df['score'], name='Test Score', alpha=0.05, plot=True)
print(result['interpretation'])
print(result['recommendation'])

假设违反时的处理

正态性违反:

  • 轻度违反 + 每组 n > 30 → 继续进行参数检验(稳健)
  • 中度违反 → 使用非参数替代方法
  • 严重违反 → 转换数据或使用非参数检验

方差齐性违反:

  • 对于 t 检验 → 使用 Welch t 检验(pg.ttest 在 correction='auto' 时自动应用)
  • 对于方差分析 → 使用 Welch 方差分析(pg.welch_anova)或 Brown-Forsythe
  • 对于回归 → 使用稳健标准误或加权最小二乘法

线性违反(回归):

  • 添加多项式项、转换变量或使用非线性模型 / GAM

形式化检验随着 n 增大而变得过于敏感:对于 n ≥ 100,Q-Q 图的权重应高于 Shapiro-Wilk p 值。参见 references/assumptions_and_diagnostics.md 获取全面指导。

运行统计检验

主要库:

  • pingouin:用户友好的检验,默认返回效应量——标准检验优先使用
  • scipy.stats:核心统计检验
  • statsmodels:回归、诊断、功效分析
  • pymc + arviz:贝叶斯建模和诊断

带有完整报告的 T 检验

import pingouin as pg

# correction='auto' 在方差不相等时应用 Welch 校正
result = pg.ttest(group_a, group_b, correction='auto')

# Pingouin >= 0.6 列名
t_stat = result['T'].values[0]
df = result['dof'].values[0]
p_value = result['p_val'].values[0]
cohens_d = result['cohen_d'].values[0]
ci_lower, ci_upper = result['CI95'].values[0]  # 均值差的 CI

print(f"t({df:.0f}) = {t_stat:.2f}, p = {p_value:.3f}, d = {cohens_d:.2f}")

带事后检验的方差分析

import pingouin as pg

aov = pg.anova(dv='score', between='group', data=df, detailed=True)
print(aov)

# 效应量:偏 eta 平方
eta_p2 = aov['np2'].values[0]

# 如果显著,进行事后检验(Tukey HSD 控制族系误差)
if aov['p_unc'].values[0] < 0.05:
    posthoc = pg.pairwise_tukey(dv='score', between='group', data=df)
    print(posthoc)  # 包含每对的 Hedges' g

带诊断的线性回归

import statsmodels.api as sm
from assumption_checks import check_regression_diagnostics

X = sm.add_constant(X_predictors)  # 添加截距
model = sm.OLS(y, X).fit()
print(model.summary())

# 4 面板残差图 + Shapiro-Wilk、Breusch-Pagan、Durbin-Watson、VIF
diag = check_regression_diagnostics(model)
print(diag['interpretation'])
print(diag['vif'])

# 如果检测到异方差性,改用稳健标准误
robust = model.get_robustcov_results('HC3')

贝叶斯 T 检验

import pymc as pm
import arviz as az
import numpy as np

with pm.Model() as model:
    # 先验
    mu1 = pm.Normal('mu_group1', mu=0, sigma=10)
    mu2 = pm.Normal('mu_group2', mu=0, sigma=10)
    sigma = pm.HalfNormal('sigma', sigma=10)

    # 似然
    y1 = pm.Normal('y1', mu=mu1, sigma=sigma, observed=group_a)
    y2 = pm.Normal('y2', mu=mu2, sigma=sigma, observed=group_b)

    # 导出量
    diff = pm.Deterministic('difference', mu1 - mu2)

    trace = pm.sample(2000, tune=1000)

# ArviZ 1.x 默认为 89% 区间;为报告显式请求 95%
print(az.summary(trace, var_names=['difference'], ci_prob=0.95))

# 直接概率陈述(这就是单侧问题的转化形式)
prob_greater = np.mean(trace.posterior['difference'].values > 0)
print(f"P(mu1 > mu2 | data) = {prob_greater:.3f}")

# ArviZ 1.x 移除了 az.plot_posterior;使用 plot_dist(在 0.x 上,plot_posterior 仍然可用)
az.plot_dist(trace, var_names=['difference'], ci_prob=0.95)

根据数据缩放先验(例如,sigma=10 适用于 SD 接近 10 的结果;以观察到的 SD 为参考),并在报告中说明先验。

效应量

效应量量化幅度;p 值仅指示存在性。 为每个检验报告效应量。参见 references/effect_sizes_and_power.md 获取完整指南。

快速参考:常见效应量

检验 效应量 小 中 大
T 检验 Cohen's d 0.20 0.50 0.80
方差分析 η²_p 0.01 0.06 0.14
相关 r 0.10 0.30 0.50
回归 R² 0.02 0.13 0.26
卡方检验 Cramér's V 0.07 0.21 0.35

基准是惯例,而非定律——"小"效应可能至关重要(药物副作用),"大"效应可能微不足道。在上下文中解释。

计算效应量

Pingouin 在其检验中返回效应量(pg.ttest 的 cohen_d、pg.anova 的 np2、pg.pairwise_tukey 的 hedges;pg.corr 的 r 本身就是一个效应量)。

效应量的置信区间

报告效应量的 CI 以显示其精度。使用 pg.compute_esci(注意:pg.compute_effsize_from_t 仅返回点估计——它不返回 CI):

import pingouin as pg

d = pg.compute_effsize(group_a, group_b, eftype='cohen')
ci_lower, ci_upper = pg.compute_esci(stat=d, nx=len(group_a), ny=len(group_b),
                                     eftype='cohen', confidence=0.95)
print(f"d = {d:.2f}, 95% CI [{ci_lower:.2f}, {ci_upper:.2f}]")

功效分析

先验功效分析(研究规划)

在数据收集前确定所需样本量:

from statsmodels.stats.power import tt_ind_solve_power, FTestAnovaPower

# T 检验:检测 d = 0.5 每组需要多少样本?
n_required = tt_ind_solve_power(
    effect_size=0.5,
    alpha=0.05,
    power=0.80,
    ratio=1.0,
    alternative='two-sided'
)
print(f"每组所需样本量: {n_required:.0f}")

# 单因素方差分析:检测 Cohen's f = 0.25 需要多少样本?
import math
anova_power = FTestAnovaPower()
n_total = anova_power.solve_power(
    effect_size=0.25,
    k_groups=3,
    alpha=0.05,
    power=0.80
)
print(f"所需总样本量: {math.ceil(n_total)}(每组 {math.ceil(n_total / 3)})")

敏感性分析(研究后)

确定研究能够检测到的效应量:

# 每组 n=50,在 80% 功效下能检测到什么效应?
detectable_d = tt_ind_solve_power(
    effect_size=None,  # 求解此项
    nobs1=50,
    alpha=0.05,
    power=0.80,
    ratio=1.0,
    alternative='two-sided'
)
print(f"研究能检测到 d >= {detectable_d:.2f}")

注意:事后"观察功效"(从观察到的效应计算功效)是循环论证且具有误导性——它是 p 值的确定性函数。如果研究已经完成并且有人询问功效,请改为进行敏感性分析。

参见 references/effect_sizes_and_power.md 获取详细指南。

报告结果

遵循 references/reporting_standards.md 的 APA 风格。每份报告需要:

  1. 描述性统计:所有组/变量的 M、SD、n
  2. 检验统计量:检验名称、统计量、自由度、精确 p 值(p = .034,而非 p < .05;仅在低于 .001 时使用 p < .001)
  3. 效应量:带置信区间
  4. 假设检查:运行了哪些检验、结果和采取的行动
  5. 所有计划的分析:包括不显著的结果——省略就是摘樱桃

示例报告模板

独立样本 T 检验

A 组(n = 48, M = 75.2, SD = 8.5)的得分显著高于
B 组(n = 52, M = 68.3, SD = 9.2),t(98) = 3.82, p < .001, d = 0.77,
95% CI [0.36, 1.18],双尾。正态性假设(Shapiro-Wilk:
A 组 W = 0.97, p = .18;B 组 W = 0.96, p = .12)和方差
齐性假设(Levene's F(1, 98) = 1.23, p = .27)均满足。

单因素方差分析

单因素方差分析显示处理条件对测试分数有显著的主效应,
F(2, 147) = 8.45, p < .001, η²_p = .10。使用 Tukey's HSD 的
事后比较表明,条件 A(M = 78.2, SD = 7.3)显著高于
条件 B(M = 71.5, SD = 8.1, p = .002, d = 0.87)和条件 C
(M = 70.1, SD = 7.9, p < .001, d = 1.07)。条件 B 与 C 之间
无显著差异(p = .52, d = 0.18)。

多元回归

进行了多元线性回归,以根据学习时间、先前 GPA 和出勤率
预测考试成绩。整体模型显著,F(3, 146) = 45.2, p < .001,
R² = .48, 调整后 R² = .47。学习时间(B = 1.80, SE = 0.31,
β = .35, t = 5.78, p < .001, 95% CI [1.18, 2.42])和
先前 GPA(B = 8.52, SE = 1.95, β = .28, t = 4.37, p < .001,
95% CI [4.66, 12.38])是显著预测因子,而出勤率则不是
(B = 0.15, SE = 0.12, β = .08, t = 1.25, p = .21, 95% CI [-0.09, 0.39])。
多重共线性不是问题(所有 VIF < 1.5)。

贝叶斯分析

使用弱信息先验(组均值的 Normal(0, 10))进行了贝叶斯
独立样本 t 检验。后验分布表明 A 组得分高于 B 组
(M_diff = 6.8, 95% 可信区间 [3.2, 10.4]),A 组均值
超过 B 组均值的后验概率为 99.8%。收敛诊断令人满意
(所有 R-hat < 1.01, ESS > 1000)。

如果使用了非参数检验,报告中位数而非均值、U/W/H 统计量以及基于秩的效应量(例如,pg.mwu 以 RBC 返回的秩-双列相关)。

贝叶斯统计

在以下情况下考虑贝叶斯方法:

  • 你有要纳入的先验信息
  • 你想要关于假设的直接概率陈述("效应位于此区间内的概率为 95%")
  • 样本量小或数据收集是顺序的(无需为可选停止进行校正)
  • 你需要量化支持零假设的证据
  • 模型复杂(分层结构、缺失数据)

参见 references/bayesian_statistics.md 了解先验设定、贝叶斯因子、可信区间、分层模型和收敛检查(R-hat < 1.01、足够的 ESS、后验预测检查)。

捆绑资源

参考文件(references/)

  • test_selection_guide.md:涵盖组比较、关系、计数、时间-事件、一致性和分类分析的决策树
  • assumptions_and_diagnostics.md:检查和处理的详细指导
  • effect_sizes_and_power.md:计算、解释和报告效应量;功效分析
  • bayesian_statistics.md:先验、贝叶斯因子、可信区间、分层模型、诊断
  • reporting_standards.md:带工作示例的 APA 风格报告指南

脚本(scripts/)

  • assumption_checks.py:带可视化的自动假设检查
    • comprehensive_assumption_check():一次调用完成异常值 + 正态性 + 方差齐性
    • check_normality()、check_normality_per_group():带 Q-Q 图的 Shapiro-Wilk
    • check_homogeneity_of_variance():带箱线图的 Levene 检验
    • check_regression_diagnostics():4 面板残差图 + 已拟合 OLS 模型的 Shapiro-Wilk、Breusch-Pagan、Durbin-Watson、VIF
    • check_linearity()、detect_outliers()

统计诚信

这些是使分析站得住脚的做法。它们很重要,因为最常见的统计失败不是计算错误——而是静默的灵活性(一直测试直到有结果)和选择性报告。

  1. 区分验证性和探索性分析。 在运行之前陈述计划的分析;将沿途发现的任何内容标记为探索性。
  2. 不要为显著性而钓鱼。 如果计划好的检验不显著,这就是结果。尝试替代检验、子集或异常值去除方案直到 p < .05 会使 p 值无效。
  3. 在运行成族检验时校正多重比较(事后方差分析用 Tukey HSD;其他成族用 Holm 或 Benjamini-Hochberg FDR),并说明使用了哪种校正。
  4. 不显著的结果不是无效应的证据。 在小样本下,研究可能只是功效不足——进行敏感性分析,或使用贝叶斯分析/等效性检验来实际量化对零假设的支持。
  5. 统计显著性不是实际重要性。 在大样本下,微不足道的效应也会达到 p < .001。用效应量主导解释。
  6. 在删除行之前了解缺失数据。 仅当数据完全随机缺失时,列表删除才是安全的;否则考虑多重插补并说明所做的工作。
  7. 使其可复现。 设置随机种子,对基于模拟的方法报告库版本,并将分析保存在可运行的脚本中。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习