均值差检验
独立两样本 t 检验预设两个正态总体是相互独立的。即,已知 σ12=σ22,判断 H0:μ1=μ2.
我们的想法是,设法研究样本平均值的差 x−y 的分布,当此差超过了 μ1=μ2 时随机变化的正常范围时,否定 H0.
在 H0:μ1=μ2 的条件下,构造检验统计量
T=(n11+n21)σ^2X−Y−(μ1−μ2) =(n11+n21)σ^2X−Y∼t(2n−2)
其中的方差 σ2 使用合并方差估计
σ^2:=把俩样本合成一个样本,算方差
为了找到一个区间使得 P(∣T∣>λ)=α,查 t(2n−2) 分布临界值表得到
λ:=qt(2n−2,1−2α)
判断 ∣T∣ 与 λ 的大小关系,从而判断 H0 是否成立,也就是两个总体的平均数无(有)显著(性)差异。
有些实际问题中的数据是成对的,比如同一个人两次测量同一指标。这时,两个变量 X 和 Y 一般是不独立的,不能使用上述的独立两样本 t 检验。
配对两样本 t 检验方法考虑新的总体 Z=X−Y,样本为 Zi=Xi−Yi
- 如果 (X,Y) 服从联合正态分布,则 Z 也服从正态分布
- 要检验 H0:E(X)=E(Y),只要检验等价的假设 E(Z)=0。
- 问题化为单样本 t 检验问题
方差分析
概率统计课程讲授的内容就到此为止了。在社会科学的定量方法中,常用的检验方法是方差分析 ANOVA 方法。
单因素 ANOVA
对于多组别间差异显著性的比较,如果采用两两进行 t 检验的方式,会导致整体假阳率 FPR 显著高于单组 p 值。此时应当采用方差分析 (ANOVA)的方法。
已知 σ12=σ22=…=σn2,判断 H0:μ1=μ2=…=μn.
方差分析将总方差(总变异)拆解为组内变异 (SSW) 和组间变异 (SSB)。组内变异可以是个体差异性,视为随机波动。我们在意的是组间变异相比于组内变异是否显著。
SSTotal=SSBetween+SSWithin
其中 SSTotal=∑∑(yij−yˉ..)2,SSBetween=∑nj(yˉj.−yˉ..)2,SSWithin=∑∑(yij−yˉj.)2
在零假设 H0: 各组均值相同的情况下,构造检验统计量
F=MSwithinMSbetween=dfbSSb/dfwSSw∼F(dfb,dfw)
其中 MS 表示均方,即平方和经过自由度 df 归一化后的结果。自由度 df 定义为数据中可以自由变化的独立观测值的个数。
dfb=ni−1,dfw=∑dfb=N−k
判断 F 与 1 的大小关系落入何概率区间即可。
这只能说明这个自变量对于总体均值是否有影响,不能说明具体是自变量的何种取值对总体均值有影响。
多因素 ANOVA
以上是针对单个自变量、多种取值得到多组别结果之间显著性的检验。
在许多情境下,某现象并非仅受单一因子的影响,甚至存在另一个因子的效应,例如要比较五个都市的空气污染总指针差异,除了都市别的因素之外,还必须考量汽机车密度的因素,在这样的情境下,都市别与汽机车密度可能就存在着某种效应影响着空气污染的多寡,因此在双因子方差分析中,除了考量双因子彼此的效应之外,也可能存在因子之间的联合效应,也就是因子间的交互作用(interaction),这也使得双因子方差分析变的比较复杂。
对于多个自变量,在控制整体 FPR 的情况下,探究是哪些自变量对于均值有影响(「贡献」),需要用到多因素 ANOVA.
以双因子为例。双因子方差分析也能将总变异量分解成双因子的主效应、双因子的联合效应与组内变异。
“Common Statistical Tests Are Linear Models”
这种说法打开了看待二者关系的新视角,但与其实质相比,显得有些骇人听闻了。实际上是,对于特定形式的线性回归模型,最小二乘法可以将模型系数构造为各组之间的均值差。而检验系数的过程与普通假设检验的过程仍然是一致的。只是用线性回归模型统一了诸如 t-test,anova 等的假设检验方法于一体。
具体而言,对于不同组别之间差异显著性的各种常见统计检验方法,可以看做一个 0-1 变量(哑变量)线性回归模型,及对其回归系数 β^ 的检验。
y=β0+β1x1+β2x2+…+βnxn+ε=Xβ+ε
如果要比较 k 组数据的组间差异,则需要 (k−1) 元及以上哑变量线性回归模型。其中,x1,…,k−1∈{0,1} 。
使用哑变量,是为了确保预测值 y^ 始终是该组的样本均值。在连续变量回归中,回归线为了照顾所有的点,往往无法穿过每一个点的均值。但在哑变量回归中,回归线虽然数学上画出来是直线,但我们只关心 0 和 1 这两个点,它不需要照顾中间的取值,因此它可以精准地“踩”在每一组的均值中心。
通过使用哑变量,我们让模型在 (x1,…,xk−1)=0 时的预测值 y^ 代表第 0 组的取值,在 xi=1 时的预测值 y^ 代表第 i 组的取值。这样,模型的预测值 y^ 就永远与该组的样本均值相同了,也就使得模型系数的预测值 β^i 能够反映不同组别之间的均值差,从而对于系数预测值的显著性检验即等价于均值差检验,也就是实现了 t 检验方法的效果。
用上面的办法,我们就得以将线性模型及其系数的检验,与均值差检验统一起来了。所以,零假设是
H0:μ0=…=μk−1⟺β1=…=βk−1=0
要检验这个假设,我们关注以下两个检验:
F 检验(联合显著性检验/模型线性相关性检验)
F=SSE/(n−k−1)SSR/k∼F(k,n−k−1)
这其实检验的是线性相关性是否显著。其中 SSR 是回归平方和,SSE 是残差平方和。这与单因素 ANOVA 的 MS_between / MS_within 在数学上一致。
因变量总偏差平方和
lyy=∑(Yi−Y)2=残差平方和Q=∑ϵ^2∑(Yi−Yi^)2+回归平方和U=b^2lxx∑(Yi^−Y)2
如果 F 检验显著,则说明组间有差异,即这个自变量对因变量有显著影响。但不知道具体是自变量的哪个取值对因变量有显著影响。这需要逐一对回归系数进行 t 检验。
回归系数的 t 检验
线性模型回归系数的检验的意义是,系数越显著,模型的解释力越强,预报区间就越窄(预报越精确)。
在哑变量编码下,经过最小二乘法拟合得到的模型回归系数 βi^(i⩾1) 反映了 μi−μ0 的差值。对系数进行 t 检验,可以判断是哪些自变量的取值会导致因变量显著变化。
t=SE(β^0)β^0∼T(2n−2)
其中 SE 是标准误 (standard error),定义为
SE(β^)=Var(β^)
与标准差的区别是:标准差描写的是原始数据点的离散程度,而标准误描写的是估计值的不确定性。
线性混合模型
我们已经发现了 t 检验、ANOVA 检验的本质是一个哑变量线性回归模型
y=Xβ+ε
其中,我们对残差项 ε 有严格的假设:
- E(ε)=0
- 独立同分布:ε∼N(0,σ2I),这意味着方差-协方差矩阵 V 是一个单位矩阵的倍数。其中,对角线相等代表方差齐性(每个观测的变异程度一样),非对角线为 0 代表独立性(观测值之间没有相关性)。
V=Var(ϵ)=σ20⋮0σ2⋮⋯⋯⋱
但在实际研究中,数据往往存在嵌套或重复测量(比如,同一名学生在不同时间的成绩),导致残差之间存在相关性。为了捕获这种相关性,我们引入随机效应项 Zb:
y=Xβ+Zb+ε
随机截距模型
在随机截距模型中,Z 矩阵也和 X 矩阵一样是一个 One-hot 矩阵,作用是指明每一个观测值属于哪一个随机效应的水平。b 是一个随机截距列向量。
比如说,有一些观测值来自学校 1,有一些观测值来自学校 2。那么,来自 1 地的观测值都会在固定效应后加上一个随机截距 b1,来自 2 地的观测值都会加上一个随机截距 b2。
# y: 成绩, x: 学习时间, School: 学校ID
model <- lmer(y ~ x + (1 | School), data = df)
随机截距模型中 b 是怎么算的?
随机斜率模型
假设你要研究“学习时间” (Hours) 对“考试成绩” (Score) 的影响,且你认为不同学校的学生不仅起点不同(截距),进步速度也不同(斜率)。
# (1 + Hours | School) 表示截距和 Hours 的斜率都随 School 随机变化
model <- lmer(Score ~ Hours + (1 + Hours | School), data = df)
# 或者, `1 +` 可以省略
model <- lmer(Score ~ Hours + (Hours | School), data = df)
需要注意的是,随机斜率模型对数据量要求较高。如果每个分组里只有一两个观测点,模型往往会因“过度拟合”而无法收敛。
斜率-截距无关模型
有时候会看到这种写法:
lmer(Score ~ Hours + (Hours || School), data = df)
它等价于 (1 | School) + (0 + Hours | School)。它强制截距和斜率之间的相关性为 0。当模型太复杂无法收敛(Singular fit)时,通常会尝试这种写法来简化模型。
Reference
Common statistical tests are linear models (or: how to teach stats), https://lindeloev.github.io/tests-as-linear/#1_the_simplicity_underlying_common_tests