p值的计算方向 取决于 备择假设的方向,即使统计量值相同,p值的位置也会不同。
原因解析
1. 单侧检验 vs 双侧检验
less:检验统计量是否 显著小于 零假设值greater:检验统计量是否 显著大于 零假设值two-sided:检验统计量是否 显著不同于 零假设值(两个方向)
2. p值的计算位置
即使观察到的统计量值相同,p值的计算区域不同:
# 假设零分布是正态分布,观察到的统计量 = 2.0
# greater: p值 = P(stat ≥ 2.0)
p_greater <- 1 - pnorm(2.0) # 右尾面积
# less: p值 = P(stat ≤ 2.0)
p_less <- pnorm(2.0) # 左尾面积
# two-sided: p值 = 2 × min(P(stat ≤ 2.0), P(stat ≥ 2.0))
p_twosided <- 2 * min(p_less, p_greater)选择正确的方向
选择取决于研究问题:
- 想要证明”大于”:用
greater - 想要证明”小于”:用
less - 想要证明”不同”:用
two-sided
关键点:同样的统计量值,在不同的备择假设下,p值的计算方法和意义完全不同!
你说的情况是:
chisq.test(gss$party, gss$NASA)
null_dist %>% get_pvalue(obs_stat = obs_stat, direction = "greater")结果一致,但你觉得奇怪,因为 卡方检验不是有方向的检验。
关键点解释
-
卡方统计量的性质
-
卡方统计量本质上是
-
永远是 非负数。
-
也就是说,统计量不可能为负,因此检验的分布是从 0 开始往右拉长的单峰分布。
-
-
检验的方向
- 在大多数检验里(比如 t 检验),我们要考虑左尾、右尾,甚至双尾。
- 但是在卡方检验里,偏离零越大,证据越强,所以显著性区间永远在右尾。
- 所以“greater”就是唯一有意义的方向。
-
为什么结果一致
-
chisq.test()默认就是计算 右尾概率: -
而你在
get_pvalue(..., direction = "greater")时,做的也是一样的事情。 -
所以两个结果完全一致,是正常的。
-
- 卡方检验没有“less”或“双尾”的概念,只有“greater”。
- 你看到结果一致,是因为两个函数都在计算右尾概率。
要不要我帮你用一个小例子(比如 2×2 列联表)演示一下 chisq.test()、greater、less 的结果对比?这样你会更直观地看到为什么只有 greater 有意义。
**Effect size(效应量)**在统计检验里是一个非常核心但经常被忽视的概念。它和 p 值 有很大区别:
- p 值 告诉你“这个结果是否在统计上显著”。
- 效应量 告诉你“这个结果在实际意义上有多大”。
1. 什么是效应量 (Effect size)
效应量衡量的是 变量之间关系的强弱 或者 组间差异的大小,而不仅仅是“是否显著”。
它不依赖于样本量(至少不像 p 值那样敏感)。
常见定义:
- 差异类效应量:两组之间均值差异相对于总体标准差的比例。
- 关联类效应量:两个变量之间相关性的强度。
- 解释变异比例:模型能解释多少方差。
2. 常见的效应量指标
(a) 两组差异
-
Cohen’s d:
衡量两组均值差异的标准化大小。
- ≈ 小效应
- ≈ 中等效应
- ≈ 大效应
-
Hedges’ g: 类似 d,但对小样本做了修正。
(b) 方差分析 (ANOVA)
-
η² (Eta squared):
表示组间差异占总方差的比例。
-
Partial η²: 在控制其他因素后,某一自变量解释的方差比例。
(c) 相关性
-
Pearson’s r:
- 0.1 ≈ 小效应
- 0.3 ≈ 中效应
- 0.5 ≈ 大效应
(d) 回归
-
R² (决定系数): 模型解释的方差比例。
-
f² (Cohen’s f squared):
(e) 分类检验
-
Cramér’s V (基于卡方):
衡量列联表中分类变量之间的关联强度。
3. 为什么效应量重要
- p 值显著 ≠ 效应大:大样本下,极小的差异也可能显著。
- 效应量让结果有实际意义:告诉你这个差异/关系是否值得关注。
- 在科研中,报告效应量越来越成为标准(比如 APA 要求同时报告 p 值和效应量)。
4. 举个例子
假设你研究两种教学方法对考试成绩的影响:
- A 组平均分 = 80,B 组平均分 = 82,样本量 = 1000。
- 检验结果可能 p < 0.01(显著),但 Cohen’s d = (82-80)/10 = 0.2(小效应)。
👉 说明方法 B 在统计上显著优于方法 A,但差异不大,实际应用意义有限。
1. 为什么右侧观测值,却要左右都涂色?
-
双尾检验的逻辑是:我们怀疑原假设不对,但没有预设它会变大还是变小。
-
因此,“极端”要在两个方向都考虑:
- 右边极端:统计量比观测值更大的情况
- 左边极端:统计量比观测值更小(同等“远离零”)的情况
换句话说,虽然你的观测值落在右侧,但如果它落在左侧,偏离的程度相同,也同样算作“反对原假设”的证据。
所以程序自动在左右两边同时涂色。
2. 怎么解释双尾结果?
-
统计量落在右尾 → 数据提供的证据是“比原假设预期更大”。
-
双尾涂色 → 我们在计算 p 值 时,既考虑“比观测值更大的极端情况”,也考虑“另一边对称的极端情况”。
-
p 值 = 两个尾部极端概率的总和。
- 直观上:这是“如果原假设成立,那么得到一个至少像现在这么极端(不管方向)的结果”的概率。
3. 如果你想只在右边涂色?
那就说明你的假设是 单尾的(比如只关心“变大”),代码应该写成:
null_dist %>%
visualize() +
shade_p_value(obs_stat = point_estimate, direction = "greater")看起来 p 值是 0.046,这是非常小的——如果每周的真实平均工作小时数实际上是 40,那么我们的样本平均值与 40 相距如此远(1.382 小时)的概率将是 0.046
两侧的红色阴影区域(p值):
右侧阴影:代表“随机偶然性导致结果好于观察值”的概率。
左侧阴影:代表“随机偶然性导致结果差于观察值”的概率(这里的“差”是相反方向,但其绝对值同样大)。
总面积:代表“随机偶然性导致一个与观察值同样离谱(无论方向) 的结果”的总概率。