多层模型

先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。

estat

随机截距组内相关

Stata

estat icc

R 包:lme4

{ v <- lme4::VarCorr(fit); between <- as.numeric(v$id[1, 1]); between / (between + stats::sigma(fit)^2) }

与 Stata 有差异 固定流程;请明确调整示例列名。ICC仅在高斯随机截距模型中恒定;随机斜率使其依赖协变量。

另有 2 个示例及替代实现

随机效应协方差矩阵

Stata

estat recovariance

R 包:lme4

as.matrix(lme4::VarCorr(fit)$id)

与 Stata 有差异 固定流程;请明确调整示例列名。协方差估计以所选随机效应结构为条件。

标准差与相关系数形式的方差分量

Stata

estat sd

R 包:lme4

as.data.frame(lme4::VarCorr(fit))

与 Stata 有差异 固定流程;请明确调整示例列名。包含残差标准差及随机效应相关系数。

mecloglog

Complementary-log-log随机截距模型:Laplace近似

Stata

mecloglog binary x || id:, intpoints(1)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

Complementary-log-log随机截距模型:自适应求积

Stata

mecloglog binary x || id:, intpoints(9)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

meglm

广义混合模型连接:cloglog

Stata

meglm binary x || id:, family(binomial) link(cloglog)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 7)

与 Stata 有差异 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。

广义混合模型连接:logit

Stata

meglm binary x || id:, family(binomial) link(logit)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 7)

与 Stata 有差异 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。

广义混合模型连接:probit

Stata

meglm binary x || id:, family(binomial) link(probit)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 7)

与 Stata 有差异 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。

melogit

Logistic随机截距模型:Laplace近似

Stata

melogit binary x || id:, intpoints(1)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

另有 1 个示例及替代实现

Logistic随机截距模型:自适应求积

Stata

melogit binary x || id:, intpoints(9)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

menbreg

二次均值方差负二项混合模型

Stata

menbreg nb x || id:

R 包:glmmTMB

glmmTMB::glmmTMB(nb ~ x + (1 | id), data = data, family = glmmTMB::nbinom2())

与 Stata 有差异 glmmTMB采用Laplace积分;Stata的menbreg默认采用intpoints(7)自适应求积,需指定intpoints(1)才使用可比的积分近似。比较辅助参数前须统一NB2离散参数与其倒数的含义;积分近似一致本身不保证估计精确相同。

menl

随机系数非线性指数增长

Stata

menl y = {A}*exp({B}*x), define(A: {a0}+{U[id]})

R 包:nlme

nlme::nlme(y ~ A * exp(B * x), data = data, fixed = A + B ~ 1, random = A ~ 1 | id, start = c(A = 2, B = .25))

与 Stata 有差异 固定流程;请明确调整示例列名。非线性混合模型流程;Stata menl语法和参数定义须符合目标模型。

meologit

随机截距累积Logit模型

Stata

meologit ordinal x || id:

R 包:ordinal

ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "logit", nAGQ = 7)

与 Stata 有差异 固定流程;请明确调整示例列名。须统一阈值符号和默认求积方式。

meoprobit

随机截距累积Probit模型

Stata

meoprobit ordinal x || id:

R 包:ordinal

ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "probit", nAGQ = 7)

与 Stata 有差异 固定流程;请明确调整示例列名。潜在残差方差由Probit连接固定。

mepoisson

Poisson随机截距模型:Laplace近似

Stata

mepoisson count x || id:, intpoints(1)

R 包:lme4

lme4::glmer(count ~ x + (1 | id), data = data, family = stats::poisson(link = "log"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

Poisson随机截距模型:自适应求积

Stata

mepoisson count x || id:, intpoints(9)

R 包:lme4

lme4::glmer(count ~ x + (1 | id), data = data, family = stats::poisson(link = "log"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

meprobit

Probit随机截距模型:Laplace近似

Stata

meprobit binary x || id:, intpoints(1)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

Probit随机截距模型:自适应求积

Stata

meprobit binary x || id:, intpoints(9)

R 包:lme4

lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))

与 Stata 有差异 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。

mixed

二次固定趋势与随机截距

Stata

mixed y c.x##c.x || id:

R 包:lme4

lme4::lmer(y ~ x + I(x^2) + (1 | id), data = data, REML = FALSE)

与 Stata 有差异 固定流程;请明确调整示例列名。R默认REML,Stata mixed默认ML;须明确选择目标似然。

另有 4 个示例及替代实现

REML随机截距模型

Stata

mixed y x || id:

R 包:lme4

lme4::lmer(y ~ x + (1 | id), data = data, REML = FALSE)

与 Stata 有差异 REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。

独立随机截距和斜率

Stata

mixed y x || id: x, covariance(independent)

R 包:lme4

lme4::lmer(y ~ x + (x || id), data = data, REML = FALSE)

与 Stata 有差异 REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。

相关随机截距和斜率

Stata

mixed y x || id: x, covariance(unstructured)

R 包:lme4

lme4::lmer(y ~ x + (x | id), data = data, REML = FALSE)

与 Stata 有差异 REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。

极大似然随机截距模型

Stata

mixed y x || id:, mle

R 包:lme4

lme4::lmer(y ~ x + (1 | id), data = data, REML = FALSE)

与 Stata 有差异 固定流程;请明确调整示例列名。R默认REML,Stata mixed默认ML;须明确选择目标似然。

predict

包含随机效应的条件拟合值

Stata

predict fitted, fitted

R 包:lme4

stats::predict(fit)

与 Stata 有差异 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。

另有 3 个示例及替代实现

条件混合模型残差

Stata

predict residual, residuals

R 包:lme4

stats::residuals(fit)

与 Stata 有差异 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。

经验Bayes随机截距和斜率

Stata

predict u0 u1, reffects

R 包:lme4

lme4::ranef(fit)$id

与 Stata 有差异 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。

仅固定效应预测

Stata

predict xb, xb

R 包:lme4

stats::predict(fit, re.form = NA)

与 Stata 有差异 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。

quadchk

混合Logit估计对求积点数的敏感性

Stata

quadchk

R 包:lme4

{ fits <- lapply(c(5, 9, 15), function(q) lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(), nAGQ = q)); data.frame(points = c(5, 9, 15), logLik = vapply(fits, function(f) as.numeric(stats::logLik(f)), numeric(1)), slope = vapply(fits, function(f) unname(lme4::fixef(f)[2]), numeric(1))) }

固定流程;请明确调整示例列名。手动检查求积敏感性,不能自动保证收敛。

xtologit

随机截距累积Logit模型

Stata

xtologit ordinal x

R 包:ordinal

ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "logit", nAGQ = 12)

与 Stata 有差异 固定流程;请明确调整示例列名。须统一阈值符号和默认求积方式。

xtoprobit

随机截距累积Probit模型

Stata

xtoprobit ordinal x

R 包:ordinal

ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "probit", nAGQ = 12)

与 Stata 有差异 固定流程;请明确调整示例列名。潜在残差方差由Probit连接固定。