# Statistical Methods for ML/AI Experiments

完整的统计分析方法指南，用于 ML/AI 实验结果分析。

## 基础统计量

### 均值 (Mean)

**定义**: 所有观测值的平均值

**公式**: μ = (Σx) / n

**报告格式**: "模型在测试集上达到 85.3% 的准确率"

### 标准差 (Standard Deviation, SD)

**定义**: 衡量数据分散程度

**公式**: SD = √[Σ(x - μ)² / (n-1)]

**报告格式**: "准确率为 85.3% ± 2.1%（标准差）"

**何时使用**: 描述数据的变异性

### 标准误 (Standard Error, SE)

**定义**: 样本均值的标准差

**公式**: SE = SD / √n

**报告格式**: "准确率为 85.3% ± 0.7%（标准误）"

**何时使用**: 估计均值的不确定性

### 标准差 vs 标准误

| 特性 | 标准差 (SD) | 标准误 (SE) |
|------|------------|------------|
| 含义 | 数据的分散程度 | 均值估计的不确定性 |
| 随样本量变化 | 不变 | 减小（∝ 1/√n） |
| 用途 | 描述数据变异 | 推断总体均值 |
| 报告场景 | 描述性统计 | 推断性统计 |

**重要**: 论文中必须明确说明使用的是标准差还是标准误。

### 置信区间 (Confidence Interval)

**定义**: 总体参数的可能范围

**95% 置信区间公式**: CI = μ ± t(α/2, n-1) × SE

**报告格式**: "准确率为 85.3% [95% CI: 83.9%, 86.7%]"

**解释**: 95% 的置信区间意味着如果重复实验多次，95% 的区间会包含真实值。

## 预先检验（必须执行）

在进行参数检验前，必须验证数据是否满足检验的假设条件。

### 1. 正态性检验 (Normality Test)

**目的**: 验证数据是否服从正态分布

**何时需要**: 使用 t-test、ANOVA 等参数检验前

**常用方法**:

#### Shapiro-Wilk 检验
- **适用**: 样本量 n < 50
- **零假设**: 数据服从正态分布
- **判断**: p > 0.05 → 接受正态分布假设
- **使用场景**: 小样本，最常用

#### Kolmogorov-Smirnov 检验
- **适用**: 样本量 n ≥ 50
- **零假设**: 数据服从正态分布
- **判断**: p > 0.05 → 接受正态分布假设
- **使用场景**: 大样本

#### Anderson-Darling 检验
- **适用**: 所有样本量
- **优点**: 对尾部偏离更敏感
- **使用场景**: 需要检测尾部异常时

#### Q-Q 图 (Quantile-Quantile Plot)
- **类型**: 图形化方法
- **判断**: 点接近直线 → 正态分布
- **优点**: 直观展示偏离程度
- **使用场景**: 配合数值检验使用

**不满足正态性时的处理**:
1. 数据转换（log, sqrt, Box-Cox）
2. 使用非参数检验（Wilcoxon, Mann-Whitney U）
3. 增加样本量（中心极限定理）

### 2. 方差齐性检验 (Homogeneity of Variance)

**目的**: 验证多组数据的方差是否相等

**何时需要**: 使用独立样本 t-test、ANOVA 前

**常用方法**:

#### Levene 检验
- **适用**: 最常用，对非正态分布鲁棒
- **零假设**: 各组方差相等
- **判断**: p > 0.05 → 接受方差齐性假设
- **使用场景**: 默认选择

#### Bartlett 检验
- **适用**: 数据严格正态分布时
- **零假设**: 各组方差相等
- **判断**: p > 0.05 → 接受方差齐性假设
- **使用场景**: 正态性已验证

#### Brown-Forsythe 检验
- **适用**: Levene 检验的改进版
- **优点**: 对非正态分布更鲁棒
- **使用场景**: 数据明显偏态时

**不满足方差齐性时的处理**:
1. 使用 Welch's t-test（不假设方差相等）
2. 使用 Welch's ANOVA
3. 数据转换
4. 使用非参数检验

### 3. 独立性检验

**目的**: 验证观测值之间是否独立

**何时需要**: 所有统计检验前

**常见违反独立性的情况**:
- 时间序列数据（自相关）
- 重复测量（同一对象多次测量）
- 聚类数据（同一组内的观测）

**处理方法**:
- 时间序列：使用时间序列分析方法
- 重复测量：使用配对检验或混合效应模型
- 聚类数据：使用多层模型或聚类标准误

### 4. 异常值检测

**目的**: 识别和处理极端值

**常用方法**:

#### IQR 方法
- **定义**: 异常值 = Q1 - 1.5×IQR 或 Q3 + 1.5×IQR 之外
- **使用场景**: 最常用，简单直观

#### Z-score 方法
- **定义**: |Z| > 3 为异常值
- **使用场景**: 数据近似正态分布

#### Grubbs 检验
- **适用**: 检测单个异常值
- **使用场景**: 正态分布数据

**处理异常值**:
1. 检查是否为数据错误
2. 报告异常值的存在
3. 进行敏感性分析（有/无异常值）
4. 使用鲁棒统计方法

## 预先检验决策树

```
开始
  ↓
样本量 < 30？
  ↓ 是
  检查正态性（Shapiro-Wilk）
    ↓ 不满足
    使用非参数检验
  ↓ 否
  检查正态性（K-S 或 Q-Q 图）
    ↓ 满足
    两组比较？
      ↓ 是
      检查方差齐性（Levene）
        ↓ 满足
        独立样本 t-test
        ↓ 不满足
        Welch's t-test
      ↓ 否
      多组比较？
        ↓ 是
        检查方差齐性（Levene）
          ↓ 满足
          ANOVA
          ↓ 不满足
          Welch's ANOVA
```

## 预先检验报告模板

**论文中应报告**:

"在进行参数检验前，我们使用 Shapiro-Wilk 检验验证了数据的正态性（方法 A: W = 0.96, p = 0.23; 方法 B: W = 0.95, p = 0.18），使用 Levene 检验验证了方差齐性（F = 1.23, p = 0.31）。所有检验均满足参数检验的假设条件。"

**如果不满足假设**:

"Shapiro-Wilk 检验显示数据不满足正态性假设（方法 A: W = 0.87, p = 0.01），因此我们使用非参数的 Mann-Whitney U 检验进行比较。"

## 假设检验（参数检验）

### 1. t-test（两组对比）

**用途**: 比较两个方法的性能差异

**假设条件**:
- 数据服从正态分布
- 方差齐性（独立样本 t-test）
- 观测值独立

#### 独立样本 t-test (Independent Samples t-test)

**使用场景**: 比较两个独立组的均值
- 例：方法 A vs 方法 B 在不同数据集上的性能

**假设**:
- H₀: μ₁ = μ₂（两组均值相等）
- H₁: μ₁ ≠ μ₂（两组均值不等）

**报告格式**: "方法 A (85.3% ± 2.1%) 显著优于方法 B (82.1% ± 1.8%), t(18) = 3.45, p = 0.003"

**何时使用**: ✅ 两个独立组，满足正态性和方差齐性

#### 配对样本 t-test (Paired Samples t-test)

**使用场景**: 比较同一组对象在两种条件下的表现
- 例：同一数据集上，方法 A vs 方法 B 的性能

**假设**:
- H₀: μd = 0（差值的均值为0）
- H₁: μd ≠ 0（差值的均值不为0）

**报告格式**: "在10个数据集上，方法 A 显著优于方法 B, t(9) = 4.23, p = 0.002"

**何时使用**: ✅ 配对数据，同一对象的前后对比

#### Welch's t-test

**使用场景**: 两组方差不相等时
- 例：方差齐性检验不通过（Levene's test p < 0.05）

**优点**: 不假设方差相等，更鲁棒

**报告格式**: "方法 A 显著优于方法 B, Welch's t(16.3) = 3.21, p = 0.005"

**何时使用**: ✅ 方差齐性检验失败时的替代方案

### 2. ANOVA（多组对比）

**用途**: 同时比较三个或更多方法

**假设条件**:
- 数据服从正态分布
- 方差齐性
- 观测值独立

#### 单因素 ANOVA (One-Way ANOVA)

**使用场景**: 比较多个独立组的均值
- 例：方法 A vs B vs C vs D 的性能对比

**假设**:
- H₀: μ₁ = μ₂ = μ₃ = ... = μk（所有组均值相等）
- H₁: 至少有一组均值不同

**报告格式**: "不同方法之间存在显著差异, F(3, 36) = 8.45, p < 0.001"

**何时使用**: ✅ 三个或更多独立组

**重要**: ANOVA 只告诉你"至少有一组不同"，需要事后检验找出具体哪些组不同。

#### 重复测量 ANOVA (Repeated Measures ANOVA)

**使用场景**: 同一组对象在多个条件下的表现
- 例：同一数据集上，多个方法的性能对比

**假设**:
- H₀: 所有条件下的均值相等
- H₁: 至少有一个条件的均值不同

**报告格式**: "不同方法之间存在显著差异, F(3, 27) = 12.34, p < 0.001"

**何时使用**: ✅ 配对数据，多个条件的对比

#### 双因素 ANOVA (Two-Way ANOVA)

**使用场景**: 研究两个因素的影响及其交互作用
- 例：方法类型（因素1）× 数据集大小（因素2）对性能的影响

**报告格式**:
- "方法类型主效应显著, F(2, 54) = 15.23, p < 0.001"
- "数据集大小主效应显著, F(2, 54) = 8.91, p < 0.001"
- "交互作用不显著, F(4, 54) = 1.23, p = 0.31"

**何时使用**: ✅ 研究多个因素及其交互作用

#### Welch's ANOVA

**使用场景**: 方差不齐时的 ANOVA 替代方案

**报告格式**: "不同方法之间存在显著差异, Welch's F(3, 18.5) = 7.89, p = 0.002"

**何时使用**: ✅ 方差齐性检验失败时

### 3. 事后检验 (Post-hoc Tests)

**目的**: ANOVA 显著后，找出具体哪些组不同

**常用方法**:

#### Tukey HSD (Honestly Significant Difference)

**使用场景**: ANOVA 后的标准事后检验
- **优点**: 控制家族错误率
- **适用**: 各组样本量相等或接近
- **报告**: "Tukey HSD 检验显示，方法 A 显著优于方法 B (p = 0.003) 和方法 C (p = 0.012)"

**何时使用**: ✅ 默认选择，最常用

#### Bonferroni 校正

**使用场景**: 保守的事后检验
- **优点**: 简单，控制家族错误率
- **缺点**: 过于保守
- **报告**: "Bonferroni 校正后，方法 A 显著优于方法 B (p = 0.002)"

**何时使用**: ✅ 需要严格控制 Type I 错误时

#### Scheffé 检验

**使用场景**: 最保守的事后检验
- **优点**: 适用于所有对比（包括复杂对比）
- **缺点**: 功效最低
- **报告**: "Scheffé 检验显示，方法 A 显著优于方法 B (p = 0.015)"

**何时使用**: ✅ 需要进行复杂对比时

#### Dunnett 检验

**使用场景**: 多个实验组与一个对照组比较
- **优点**: 专门设计用于与对照组比较
- **报告**: "Dunnett 检验显示，方法 A、B、C 均显著优于基线方法 (p < 0.01)"

**何时使用**: ✅ 有明确的对照组（基线方法）时

## 假设检验（非参数检验）

**何时使用非参数检验**:
- 数据不满足正态分布假设
- 样本量很小（n < 30）
- 数据为序数或等级数据
- 存在明显的异常值

### 4. Wilcoxon 检验（配对数据）

**用途**: 配对数据的非参数检验，t-test 的非参数替代

**使用场景**: 同一数据集上，两个方法的性能对比
- 例：10个数据集上，方法 A vs 方法 B

**假设**:
- H₀: 两组的中位数相等
- H₁: 两组的中位数不等

**报告格式**: "Wilcoxon 符号秩检验显示，方法 A 显著优于方法 B, Z = 2.81, p = 0.005"

**何时使用**: ✅ 配对数据，不满足正态性假设

### 5. Mann-Whitney U 检验（独立数据）

**用途**: 独立样本的非参数检验，独立样本 t-test 的非参数替代

**使用场景**: 两个独立组的性能对比
- 例：方法 A 在数据集1上 vs 方法 B 在数据集2上

**假设**:
- H₀: 两组的分布相同
- H₁: 两组的分布不同

**报告格式**: "Mann-Whitney U 检验显示，方法 A 显著优于方法 B, U = 45, p = 0.012"

**何时使用**: ✅ 独立样本，不满足正态性假设

**别名**: Wilcoxon 秩和检验

### 6. Kruskal-Wallis 检验（多组对比）

**用途**: 多组独立样本的非参数检验，ANOVA 的非参数替代

**使用场景**: 三个或更多方法的性能对比
- 例：方法 A vs B vs C vs D

**假设**:
- H₀: 所有组的分布相同
- H₁: 至少有一组的分布不同

**报告格式**: "Kruskal-Wallis 检验显示，不同方法之间存在显著差异, H(3) = 15.23, p = 0.002"

**何时使用**: ✅ 多组独立样本，不满足正态性假设

**事后检验**: Dunn 检验（带 Bonferroni 校正）

### 7. Friedman 检验（重复测量）

**用途**: 配对数据的多组非参数检验，重复测量 ANOVA 的非参数替代

**使用场景**: 同一数据集上，多个方法的性能对比
- 例：10个数据集上，方法 A vs B vs C vs D

**假设**:
- H₀: 所有条件下的分布相同
- H₁: 至少有一个条件的分布不同

**报告格式**: "Friedman 检验显示，不同方法之间存在显著差异, χ²(3) = 18.45, p < 0.001"

**何时使用**: ✅ 配对数据，多组对比，不满足正态性假设

**事后检验**: Nemenyi 检验或 Wilcoxon 符号秩检验（带 Bonferroni 校正）

### 8. Sign 检验

**用途**: 最简单的配对数据非参数检验

**使用场景**: 只关心方向（哪个更好），不关心差异大小
- 例：方法 A 在多少个数据集上优于方法 B

**假设**:
- H₀: 正负差异的数量相等
- H₁: 正负差异的数量不等

**报告格式**: "Sign 检验显示，方法 A 在 10 个数据集中的 8 个上优于方法 B, p = 0.055"

**何时使用**: ✅ 只关心胜负，不关心差异大小

**优点**: 最鲁棒，对异常值不敏感
**缺点**: 功效最低

## 统计检验选择流程图

```
数据类型？
  ↓
配对数据？
  ↓ 是
  两组对比？
    ↓ 是
    正态性检验
      ↓ 满足
      配对 t-test
      ↓ 不满足
      Wilcoxon 符号秩检验
    ↓ 否（多组）
    正态性检验
      ↓ 满足
      重复测量 ANOVA
      ↓ 不满足
      Friedman 检验
  ↓ 否（独立数据）
  两组对比？
    ↓ 是
    正态性检验
      ↓ 满足
      方差齐性检验
        ↓ 满足
        独立 t-test
        ↓ 不满足
        Welch's t-test
      ↓ 不满足
      Mann-Whitney U 检验
    ↓ 否（多组）
    正态性检验
      ↓ 满足
      方差齐性检验
        ↓ 满足
        ANOVA + 事后检验
        ↓ 不满足
        Welch's ANOVA + Games-Howell
      ↓ 不满足
      Kruskal-Wallis + Dunn 检验
```

## 多重比较校正

**问题**: 多次检验增加 Type I 错误（假阳性）概率

**公式**: P(至少一次错误) = 1 - (1-α)^k，其中 k 为检验次数

**常用方法**:

| 方法 | 公式 | 保守程度 | 使用场景 |
|------|------|----------|----------|
| Bonferroni | α' = α/k | 最保守 | 少量检验 |
| Holm-Bonferroni | 逐步校正 | 较保守 | 中等数量检验 |
| FDR (Benjamini-Hochberg) | 控制错误发现率 | 较宽松 | 大量检验，探索性分析 |

## 效应量

**定义**: 衡量差异的实际大小，独立于样本量

**常用指标**:

| 效应量 | 适用场景 | 解释 |
|--------|----------|------|
| Cohen's d | t-test | \|d\| < 0.2 小，0.2-0.5 中，≥0.8 大 |
| η² (Eta squared) | ANOVA | 0.01 小，0.06 中，0.14 大 |
| r (相关系数) | 非参数检验 | 0.1 小，0.3 中，0.5 大 |

**报告**: 必须同时报告 p-value 和效应量

## 实验设计要点

**重复次数**: 最少 3-5 次，推荐 5-10 次，高方差任务 10+ 次

**随机种子**: 报告所有使用的随机种子，确保可重现

**交叉验证**: k-fold (k=5 或 10) 用于评估泛化性能

## 常见错误

1. **Cherry-picking**: 只报告最好结果 → 报告所有实验
2. **p-hacking**: 尝试多种分析找显著结果 → 预先确定方法
3. **混淆 SD 和 SE**: 不说明使用哪个 → 明确标注
4. **忽略多重比较**: 多次检验不校正 → 使用 Bonferroni/FDR
5. **只报告 p-value**: 缺少效应量 → 同时报告两者

## 报告检查清单

- [ ] 报告均值和标准差/标准误（明确标注）
- [ ] 报告实验重复次数
- [ ] 执行预先检验（正态性、方差齐性）
- [ ] 选择适当的统计检验
- [ ] 报告完整统计信息（检验统计量、自由度、p-value）
- [ ] 报告效应量
- [ ] 多重比较进行校正
- [ ] 说明随机种子设置

## 参考资源

- [Nature Statistics Checklist](https://www.nature.com/documents/nr-reporting-summary-flat.pdf)
- [ASA Statement on P-Values](https://www.amstat.org/asa/files/pdfs/p-valuestatement.pdf)
- [Reporting Statistics in Psychology](https://apastyle.apa.org/instructional-aids/numbers-statistics-guide.pdf)

## 总结

统计分析的核心原则：

1. **预先检验** - 验证假设条件
2. **完整报告** - 均值、标准差/标准误、样本量
3. **适当检验** - 根据数据特征选择方法
4. **多重校正** - 多次比较时校正 α
5. **效应量** - 不只报告 p-value
6. **可重现** - 提供足够细节

遵循这些原则可以确保实验结果的统计严谨性和可信度。
