PAYATHON 2026

R 中如何用伪似然拟合二项 GLMM?

数据阿明

结论

lme4::glmer() 没有切换到伪似然估计的参数。它默认使用 nAGQ = 1,通过 Laplace 近似计算 GLMM 的边际似然,这不属于伪似然。MASS::glmmPQL() 使用惩罚准似然(PQL),是伪似然方法的一种。如果你说的“pseudo-likelihood”指另一种算法,需要先明确具体定义;在 R 的常见选项中,glmmPQL() 实现的就是 PQL。lme4 glmer() 文档 MASS glmmPQL() 文档

先了解 glmer() 的近似选项

glmer() 默认设置 nAGQ = 1,也就是使用 Laplace 近似。对于只含一个标量随机效应项的模型,可以把 nAGQ 设为大于 1 的整数,改用自适应 Gauss-Hermite 求积。这样能提高积分近似的精度,但计算量也会增加。它不是伪似然开关,也不适用于任意复杂的随机效应结构。

nAGQ = 0 使用较快的 PIRLS 近似,也不等于 PQL。不要只因为标准误看起来偏小,就把 nAGQ 改为 0;这个选项不是用来修正标准误的。

library(lme4)

fit_laplace <- glmer(
  y ~ x + (1 | group),
  data = df,
  family = binomial,
  nAGQ = 1
)

# 仅在模型有一个标量随机效应项时考虑更高阶求积
fit_quad <- glmer(
  y ~ x + (1 | group),
  data = df,
  family = binomial,
  nAGQ = 9
)

如果需要伪似然估计

在 R 中,可以用 MASS::glmmPQL() 拟合 PQL 模型。它和最大似然方法不同。正如问题中提到的,PQL 是一种具体的伪似然方法,并不涵盖所有伪似然定义。PQL 属于近似方法,估计结果和不确定性会受数据与模型条件影响,不能预设它一定会给出更大的标准误,或更适合当前数据。

library(MASS)

fit_pql <- glmmPQL(
  fixed = y ~ x,
  random = ~ 1 | group,
  family = binomial,
  data = df
)

代码中的 y、x、group 要替换为数据里的变量名。如果你需要的是另一种明确命名的伪似然方法,可以考虑 SAS PROC GLIMMIX。它提供 METHOD=RSPL、MSPL 等选项,具体用哪一种取决于所需的方法定义和模型设定。SAS PROC GLIMMIX 文档

标准误偏小时,先检查模型和不确定性

更换估计方法前,可以先检查模型结构是否合理:确认分组变量和随机效应符合数据的抽样或重复测量结构,查看 glmer() 是否有收敛提示或奇异拟合,并评估过度离散和稀疏数据问题。样本量或分组数较少时,常规渐近标准误也可能不够可靠。

参数自助法可以帮助评估固定效应估计的不确定性。下面以固定效应系数为例。自助法区间和标准误会受模型拟合稳定性及模拟次数影响,解读时应结合诊断结果。

set.seed(1)

boot_fixef <- bootMer(
  fit_laplace,
  FUN = fixef,
  nsim = 1000,
  type = "parametric",
  use.u = FALSE
)

apply(boot_fixef$t, 2, sd, na.rm = TRUE)  # 自助法标准误
apply(boot_fixef$t, 2, quantile,
      probs = c(0.025, 0.975), na.rm = TRUE)  # 百分位区间

如果需要明确使用 PQL,可以试用 glmmPQL(),并说明这一方法的前提。如果主要想判断 glmer() 的标准误是否偏小,先检查模型结构,再用参数自助法评估不确定性,通常更有针对性。

备注:内容仅供参考。