模型和结果表
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
areg
吸收一个类别变量的回归
Stata
areg y x, absorb(id)R 包:fixest
fixest::feols(y ~ x | id, data = data)与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
avplots
bootstrap
自助法标准误
Stata
bootstrap, reps(500): regress y xR 包:sandwich
lmtest::coeftest(fit, vcov = sandwich::vcovBS(fit, R = 500))与 Stata 有差异 R 代码为已有拟合估计协方差;重抽样单位、中心化和 t 或正态推断须匹配 Stata bootstrap/jackknife 前缀选项。
cluster
K 均值聚类
Stata
cluster kmeans x1 x2, k(3)R 包:stats
kmeans(na.omit(select(data, x1, x2)), centers = 3)与 Stata 有差异 R 默认 Hartigan-Wong k 均值和随机初始中心;Stata 初值和迭代默认不同。比较聚类须控制初始中心。
csdid
多期(交错)双重差分
Stata
csdid y, ivar(id) time(year) gvar(first_treat)R 包:did
did::att_gt(yname = "y", tname = "year", idname = "id", gname = "first_treat", data = data)与 Stata 有差异 须匹配对照组、预期效应和估计方法;csdid 与 att_gt() 的默认值、聚合和推断不保证一致。
didregress
双重差分(Stata 17 及以上)
Stata
didregress (y) (treated), group(id) time(year)R 包:fixest
fixest::feols(y ~ treated | id + year, data = data)与 Stata 有差异 仅 TWFE 系数不含 didregress 默认组聚类标准误和诊断;须指定聚类并核对 DID 设计。
estat
Breusch-Pagan 异方差检验
Stata
estat hettestR 包:lmtest
lmtest::bptest(fit, ~ fitted(fit), studentize = FALSE)这些选项与 Stata 默认的以拟合值为基础的检验一致。
信息准则
Stata
estat icR 包:stats
c(AIC = AIC(fit), BIC = BIC(fit))与 Stata 有差异 须比较相同估计样本和似然常数;R 类别和 Stata 对尺度参数或似然项的计数可能不同。
estimates
保存模型结果
Stata
estimates store m1R 包:stats
m1 <- lm(y ~ x, data = data)模型结果是普通的对象,可以用不同的名字保存任意多个。
eststo
esttab
etable
glm
heckman
ivreg2
带稳健标准误的工具变量回归
Stata
ivreg2 y x1 (x2 = z), robustR 包:fixest
fixest::feols(y ~ x1 | x2 ~ z, data = data, vcov = "hetero")与 Stata 有差异 fixest::fitstat(fit, ~ ivf + ivwald) 报告第一阶段统计量。 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
ivregress
工具变量回归(两阶段最小二乘)
Stata
ivregress 2sls y x1 (x2 = z)R 包:fixest
fixest::feols(y ~ x1 | x2 ~ z, data = data)与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
jackknife
刀切法标准误
Stata
jackknife: regress y xR 包:sandwich
lmtest::coeftest(fit, vcov = sandwich::vcovJK(fit))与 Stata 有差异 R 代码为已有拟合估计协方差;重抽样单位、中心化和 t 或正态推断须匹配 Stata bootstrap/jackknife 前缀选项。
lincom
系数的线性组合
Stata
lincom x1 - x2R 包:marginaleffects
marginaleffects::hypotheses(fit, "x1 - x2 = 0")与 Stata 有差异 hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
logistic
以优势比报告的 logit 模型
Stata
logistic y xR 包:broom
broom::tidy(glm(y ~ x, family = binomial, data = data), exponentiate = TRUE, conf.int = TRUE)与 Stata 有差异 broom 置信区间依赖模型;即使优势比相同,glm 剖面似然区间仍可能不同于 Stata 默认 Wald 区间。
logit
Logit 模型
Stata
logit y x1 x2R 包:stats
glm(y ~ x1 + x2, family = binomial, data = data)另有 1 个示例及替代实现
优势比
Stata
logit y x, orR 包:broom
broom::tidy(glm(y ~ x, family = binomial, data = data), exponentiate = TRUE)与 Stata 有差异 broom 置信区间依赖模型;即使优势比相同,glm 剖面似然区间仍可能不同于 Stata 默认 Wald 区间。
lrtest
似然比检验
Stata
lrtest m1 m2R 包:lmtest
lmtest::lrtest(m1, m2)与 Stata 有差异 须比较相同估计样本和似然常数;R 类别和 Stata 对尺度参数或似然项的计数可能不同。
margins
分组的预测边际
Stata
margins groupR 包:marginaleffects
marginaleffects::avg_predictions(fit, by = "group")与 Stata 有差异 by = “group” 在观测组内平均;margins group 将全样本设为各水平后平均。该 Stata 目标须使用反事实预测。
平均边际效应
Stata
margins, dydx(*)R 包:marginaleffects
marginaleffects::avg_slopes(fit)与 Stata 有差异 avg_slopes() 平均模型导数;因子离散变化、权重和协方差须匹配 margins 及模型上下文。
marginsplot
melogit
多层 logit 模型
Stata
melogit y x || id:R 包:lme4
lme4::glmer(y ~ x + (1 | id), data = data, family = binomial)与 Stata 有差异 glmer() 默认 Laplace 积分(nAGQ = 1);melogit 默认自适应求积,可能改变估计和似然。
mi
在多个插补数据上估计并合并结果
Stata
mi estimate: regress y xR 包:mice
mice::pool(with(imp, lm(y ~ x)))与 Stata 有差异 Rubin 合并仍需匹配与 mi estimate 的完整数据自由度和小样本校正。
多重插补
Stata
mi impute chained (regress) x1 x2 = yR 包:mice
imp <- mice::mice(data, m = 20)与 Stata 有差异 mice() 按 R 列类型选择方法,常用预测均值匹配;默认并非指定的链式线性回归。须明确方法、预测矩阵和 m。
mixed
多层(混合)线性模型
Stata
mixed y x || id:R 包:lme4
lme4::lmer(y ~ x + (1 | id), data = data)与 Stata 有差异 lme4 不报告 p 值;lmerTest::lmer() 会加上。 lmer() 默认 REML,Stata mixed 默认 ML。ML 须设 REML = FALSE,固定效应 p 值还需另选方法。
mlogit
多项 logit 模型
Stata
mlogit y x1 x2R 包:nnet
nnet::multinom(y ~ x1 + x2, data = data)与 Stata 有差异 multinom() 的多分类 y 须为因子;结果参照类别和优化器默认值可能与 Stata mlogit 不同。
nbreg
负二项模型
Stata
nbreg y xR 包:MASS
MASS::glm.nb(y ~ x, data = data)与 Stata 有差异 fixest::fenegbin() 可以加入固定效应。 glm.nb() 与默认 nbreg 同为 NB2,但 theta 为 Stata alpha 倒数,似然或优化报告规则不同。
nlcom
系数的非线性组合
Stata
nlcom _b[x1] / _b[x2]R 包:marginaleffects
marginaleffects::hypotheses(fit, "x1 / x2 = 0")与 Stata 有差异 标准误使用 delta 方法,与 Stata 一致。 hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
oaxaca
Blinder-Oaxaca 分解
Stata
oaxaca y x1 x2, by(group)R 包:oaxaca
oaxaca::oaxaca(y ~ x1 + x2 | group, data = data)与 Stata 有差异 oaxaca() 报告多个参照权重分解;须明确选择 Stata oaxaca 使用的参照系数及方差方法。
ologit
有序 logit 模型
Stata
ologit y x1 x2R 包:MASS
MASS::polr(factor(y) ~ x1 + x2, data = data, Hess = TRUE)与 Stata 有差异 Hess = TRUE 使 summary() 能显示标准误。 polr() 使用有序因子水平和阈值参数化;须明确水平顺序并核对与 Stata 的切点符号规则。
oprobit
有序 probit 模型
Stata
oprobit y x1 x2R 包:MASS
MASS::polr(factor(y) ~ x1 + x2, data = data, method = "probit", Hess = TRUE)与 Stata 有差异 polr() 使用有序因子水平和阈值参数化;须明确水平顺序并核对与 Stata 的切点符号规则。
outreg2
poisson
ppmlhdfe
带固定效应的泊松模型
Stata
ppmlhdfe y x, absorb(id year)R 包:fixest
fixest::fepois(y ~ x | id + year, data = data)与 Stata 有差异 泊松固定效应系数目标一致,但分离或单例组删除和协方差校正可能不同;须核对保留样本和不确定性。
predict
预测值
Stata
predict yhatR 包:stats
mutate(data, yhat = predict(fit, newdata = data))与 Stata 有差异 residuals(fit) 给出模型所用个案的残差。 predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
另有 2 个示例及替代实现
预测概率
Stata
predict p, prR 包:stats
mutate(data, p = predict(fit, newdata = data, type = "response"))与 Stata 有差异 predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
每行的残差
Stata
predict r, residualsR 包:stats
mutate(data, r = y - predict(fit, newdata = data))与 Stata 有差异 predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
probit
putdocx
putexcel
qreg
中位数(分位数)回归
Stata
qreg y xR 包:quantreg
quantreg::rq(y ~ x, tau = 0.5, data = data)与 Stata 有差异 rq() 默认标准误方法取决于样本量,可能不同于 Stata qreg;须明确协方差和推断方法。
rdrobust
断点回归
Stata
rdrobust y x, c(0)R 包:rdrobust
rdrobust::rdrobust(data$y, data$x, c = 0)与 Stata 有差异 R 和 Stata 实现使用相同估计器;有限样本输出还须匹配版本、带宽、质量点和方差设置。
reghdfe
高维固定效应
Stata
reghdfe y x, absorb(id year)R 包:fixest
fixest::feols(y ~ x | id + year, data = data)与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
regress
线性回归
Stata
regress y x1 x2R 包:stats
fit <- lm(y ~ x1 + x2, data = data)summary(fit) 显示系数表;broom::tidy(fit) 以数据表形式返回。
另有 5 个示例及替代实现
因子变量和交互项
Stata
regress y i.group c.x1##c.x2R 包:stats
lm(y ~ factor(group) + x1 * x2, data = data)与 Stata 有差异 factor() 相当于 i.;x1 * x2 相当于 c.x1##c.x2,x1:x2 相当于 c.x1#c.x2。 factor() 按 R 水平顺序选择参照;Stata i.group 使用数值基准水平。应明确因子水平和对比编码。
指定参照组
Stata
regress y ib3.groupR 包:stats
lm(y ~ relevel(factor(group), ref = "3"), data = data)使用抽样权重的回归
Stata
regress y x [pweight = wt]R 包:fixest
fixest::feols(y ~ x, data = data, weights = ~wt, vcov = "hetero")与 Stata 有差异 若有分层和聚类等完整的抽样设计,请查看 svyset。 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
异方差稳健标准误
Stata
regress y x1 x2, robustR 包:fixest
fixest::feols(y ~ x1 + x2, data = data, vcov = "hetero")与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
聚类标准误
Stata
regress y x1 x2, vce(cluster id)R 包:fixest
fixest::feols(y ~ x1 + x2, data = data, cluster = ~id)与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
rreg
稳健回归
Stata
rreg y xR 包:MASS
MASS::rlm(y ~ x, data = data)与 Stata 有差异 rlm() 使用 Huber M 估计;Stata 的 rreg 结合了 Huber 和 biweight 权重,因此估计值可能略有不同。 rlm() 默认 Huber M 估计;rreg 筛异常值并结合 Huber 与双权迭代,估计和推断都可能不同。
rvfplot
sem
结构方程模型
Stata
sem (y <- x1 x2)R 包:lavaan
lavaan::sem("y ~ x1 + x2", data = data)与 Stata 有差异 lavaan 默认将观测外生预测变量视为固定;须匹配与 Stata sem 的 fixed.x 和缺失数据似然设置。
synth
teffects
逆概率加权
Stata
teffects ipw (y) (t x1 x2)R 包:WeightIt
WeightIt::weightit(t ~ x1 + x2, data = data, method = "glm")test
检验系数的假设
Stata
test x1 = x2R 包:marginaleffects
marginaleffects::hypotheses(fit, "x1 = x2")与 Stata 有差异 hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
tobit
vif
方差膨胀因子
Stata
vifR 包:car
car::vif(fit)与 Stata 有差异 car::vif() 对多自由度项给出广义 VIF;Stata estat vif 给出回归列 VIF,因此因子项表格不同。
xtabond
动态面板(Arellano-Bond)
Stata
xtabond y xR 包:plm
plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:99), data = data, index = c("id", "year"))与 Stata 有差异 pgmm() 须匹配变换、滞后工具、压缩和一步或两步选择;仅公式不能复现 xtabond 默认工具或标准误。
xtlogit
条件(固定效应)logit 模型
Stata
xtlogit y x, feR 包:survival
survival::clogit(y ~ x + strata(id), data = data)与 Stata 有差异 fixest::feglm(y ~ x | id, family = binomial) 更快,但估计的是非条件固定效应。 clogit() 对应条件固定效应 logit;精确似然、权重和协方差须匹配 xtlogit, fe,而非含虚拟变量的无条件 logit。
xtpoisson
固定效应泊松模型
Stata
xtpoisson y x, feR 包:fixest
fixest::fepois(y ~ x | id, data = data)与 Stata 有差异 泊松固定效应系数目标一致,但分离或单例组删除和协方差校正可能不同;须核对保留样本和不确定性。
xtreg
面板固定效应模型
Stata
xtreg y x, feR 包:fixest
fixest::feols(y ~ x | id, data = data)与 Stata 有差异 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
另有 1 个示例及替代实现
面板随机效应模型
Stata
xtreg y x, reR 包:plm
plm::plm(y ~ x, data = data, index = c("id", "year"), model = "random")与 Stata 有差异 plm 和 xtreg, re 默认方差分量估计法不同;比较结果前须匹配 random.method 和面板样本。