正态性检验工具 - FAB工程师工具
================================

【工具简介】
本工具用于检验工艺数据是否符合正态分布，是 SPC 控制图分析的先决条件。
仅使用 Python numpy 标准库，实现偏度/峰度检验 + 简化 Shapiro-Wilk 检验 + Q-Q 图。

【适用场景】
- SPC 控制图分析前先检验正态性假设
- 判断工艺波动是否为随机正常波动
- 检测工艺异常（双峰、右偏等非正态分布）
- 验证改善措施后分布是否改善

【内置三组示例数据】
1. 正常分布: FAB Oxide 厚度 (n=50, μ=21.0nm, σ=0.35nm)
2. 右偏分布: 模拟刻蚀速率右偏（刻蚀不均匀性导致）
3. 双峰分布: 工艺异常时的膜厚双峰（两台设备差异导致）

【核心公式】
1. 偏度 (Sample Skewness):
   g1 = n * Σ(xi-x̄)^3 / ((n-1)(n-2)σ^3)
   偏度标准误: SE_g1 = sqrt(6n(n-1) / ((n-2)(n+1)(n+3)))
   t_skew = g1 / SE_g1

2. 峰度 (Sample Excess Kurtosis):
   g2 = n(n+1)m4 / ((n-1)(n-2)(n-3)σ^4) - 3(n-1)^2/((n-2)(n-3))
   峰度标准误: SE_g2 = sqrt(24n(n-1)^2 / ((n-3)(n-2)(n+5)(n+7)))
   t_kurt = g2 / SE_g2

3. Shapiro-Wilk W 统计量 (简化版):
   W = (Σai*xi_sorted)^2 / Σ(xi-x̄)^2
   ai 为 Shapiro-Wilk 经验权重系数
   W > 0.935 (n<=50) 认为近似正态

4. Q-Q 图原理:
   样本排序 x(i) vs 理论分位数 z(i) = Φ^(-1)((i-0.5)/n)
   若近似正态，数据点应紧贴 y = μ + σ*z 直线

【判定规则】
- 偏度: |g1| < 2*SE_g1 → 对称
- 峰度: |g2| < 2*SE_g2 → 正态峰度
- Shapiro-Wilk: W >= 0.935 → 正态
- 综合: 三项全部通过 → 正态分布

【非正态数据处理建议】
- 右偏数据: 尝试对数变换 Box-Cox
- 左偏数据: 尝试指数变换
- 双峰数据: 调查是否存在两个子过程/设备差异
- 均匀分布: 调查是否存在人为截断

【使用说明】
1. 运行 python normality_test.py 启动工具
2. 选择示例数据集观察三种不同分布的 Q-Q 图
3. 或选择手动输入粘贴自己的数据
4. 点击 [正态性检验] 查看详细结果
5. Q-Q 图点越贴近直线越接近正态

【依赖】
  Python 3.8+
  numpy
  matplotlib
  tkinter (Python标准库)

【作者】FAB Engineering Team
【版本】v2.0  2026-07-25
