p 值(p-value)
2025/12/4约 834 字大约 3 分钟
p 值(p-value)
1. p 值的核心概念
p 值用于衡量 在原假设 为真时,观察到当前样本数据(或更极端)出现的概率。
定义:
- 值小 → 数据在 下不常见 → 倾向拒绝
- 值大 → 数据与 一致 → 不拒绝
数学表达式(双侧):
2. p 值不是什么
- p 值 不是“原假设为真的概率”
- p 值 不是“差异显著的概率”
- p 值 不能“衡量效果大小”
- p 值 不代表实际意义,只说明统计意义
3. p 值与分布的关系
p 值来自统计量的抽样分布,而不是固定使用正态分布。
不同检验对应不同分布:
- z 检验 → 标准正态分布
- t 检验 → t 分布
- 检验 → 卡方分布
- F 检验 → F 分布
- 非参数检验 → 各自的抽样分布
- 自助法(bootstrap)、置换检验(permutation) → 经验分布
因此:
p 值不是基于正态分布整体,而是基于“统计量在 下的分布”。
4. p 值计算流程(通用)
构建统计量
如:、、、。确定该统计量在 下的理论分布
计算观察值对应的尾部概率:
(根据单侧 / 双侧决定是否乘 2)
5. 常见检验及 p 值计算公式
5.1 单样本 t 检验
统计量:
p 值(双侧):
5.2 双样本 t 检验(等方差)
其中 pooled variance:
5.3 z 检验(已知方差或大样本)
p 值:
5.4 卡方检验(分类表)
统计量:
p 值:
5.5 F 检验(方差分析、回归整体显著性)
6. 回归中的 p 值
回归系数 的 t 值:
p 值同样来自 t 分布。
7. p 值实践注意事项(重要)
- p 值不能体现 效果大小(需要效应量 + 置信区间)
- p < 0.05 不代表结论“确定”
- 样本越大,越容易得到小 p 值
- 多重检验必须做校正(如 Bonferroni、FDR)
- p 值不能独立判断业务价值,需要结合实际场景
8. MATLAB 计算 p 值示例
单样本 t 检验
data = [9 11 10 12 8];
mu0 = 10;
[h, p, ci, stats] = ttest(data, mu0);
disp(p)双样本 t 检验
A = [5 6 7 6];
B = [8 7 9 8];
[h, p, ci, stats] = ttest2(A, B);
disp(p)z 检验
data = [51, 49, 52, 50, 50];
sigma = 10;
mu0 = 50;
[h, p, ci, zval] = ztest(data, mu0, sigma);
disp(p)回归系数 p 值
tbl = table(x, y);
mdl = fitlm(tbl, 'y ~ x');
mdl.Coefficients9. 总结
- p 值描述的是“数据在原假设下有多罕见”
- 不是基于单一分布,而是基于统计量的理论分布
- 不应该单独依赖 p 值做决策
- 实际应用中应结合:效应量、置信区间、业务背景