在 Stata 里,`mixed` 命令把“随机截距模型”拆成两件事:
1. 固定部分:你在 `||` 左边写的所有自变量,对应的就是“固定效应”回归系数 β。
2. 随机部分:`||` 右边的“分组变量”告诉 Stata:每个分组(如学校、公司、村庄……)都有一个独有截距——这些截距被当作随机变量,而不是再额外估计 23 个哑变量。
下面用 最简例子 逐行拆解 Stata 到底在算什么。
---
1 一条命令
```stata
mixed math ses || schoolid:, mle nolog
```
---
2 Stata 内部等价于的统计模型
\[
\text{math}_{ij} = \underbrace{\gamma_{00} + \gamma_{10}\text{ses}_{ij}}_{\text{固定部分}}
+ \underbrace{u_{0j}}_{\text{随机截距}}
+ \varepsilon_{ij}
\]
- \(j\):学校编号(schoolid)
- \(i\):学校 \(j\) 内的学生
- \(\gamma_{00}\):总平均截距(固定)
- \(\gamma_{10}\):ses 的平均斜率(固定)
- \(u_{0j}\sim N(0,\tau^2)\):第 \(j\) 所学校的随机截距(与别的学校独立,方差为 \(\tau^2\))
- \(\varepsilon_{ij}\sim N(0,\sigma^2)\):学生层面的残差
---
3 Stata 具体怎么算
1. 把数据按 schoolid 分块
Stata 先按 `schoolid` 把样本拆成若干“面板”。
2. 构造设计矩阵
- 固定部分:
1 列常数(对应 \(\gamma_{00}\))
1 列 ses(对应 \(\gamma_{10}\))
- 随机部分:
对每所学校只放一个“随机效应向量” \(u_{0j}\),而不是 23 个哑变量——这就是“随机截距”。
3. 调用最大似然 (MLe)
`mixed` 用 自适应 Gauss-Hermite 积分 + Newton-Raphson(或 EM)最大化对数似然
\[
\ell(\gamma,\tau^2,\sigma^2) = \sum_{j=1}^{J} \log
\int \phi(\mathbf{u}_{0j})\;
\prod_{i=1}^{n_j}\phi\!\bigl(\text{math}_{ij}-\gamma_{00}-\gamma_{10}\text{ses}_{ij}-u_{0j}\bigr)\,du_{0j}
\]
4. 输出结果
```
Random-effects Parameters Estimate Std. Err.
------------------------------------------------------
schoolid: Identity
var(_cons) 3.42 0.71
Residual: 36.15 1.05
```
- `var(_cons)` 就是 \(\hat\tau^2\)(学校间方差)
- `Residual` 就是 \(\hat\sigma^2\)(学生内方差)
---
4 与“手动 23 个哑变量”差别
| 方法 | 参数个数 | 优点 | 缺点 |
|---|---|---|---|
| 手动哑变量 | 23 | 完全自由 | 学校多时爆炸、无法外推到新学校 |
| 随机截距 | 2 (τ²,σ²) + 2 固定 | 参数少、可外推、可算 ICC | 假设正态分布 |
---
5 一句话总结
`mixed math ses || schoolid:` 这句告诉 Stata:
“为每一所学校估计一个服从同一正态分布的截距,而不是给每所学校单独估计一个固定哑变量。”
Stata 内部用 最大似然 + 随机效应积分 一次性把固定效应、随机效应方差和所有随机截距的“最佳线性无偏预测”(BLUP) 都算出来。


雷达卡


京公网安备 11010802022788号







