模型与估计
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
betareg
使用cloglog均值连接拟合贝塔回归
Stata
betareg share x, link(cloglog)R 包:betareg
betareg::betareg(share~x,data=data,link="cloglog",type="ML",link.phi="log")与 Stata 有差异 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi=“log”时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
使用logit均值连接拟合贝塔回归
Stata
betareg share x, link(logit)R 包:betareg
betareg::betareg(share~x,data=data,link="logit",type="ML",link.phi="log")与 Stata 有差异 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi=“log”时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
使用probit均值连接拟合贝塔回归
Stata
betareg share x, link(probit)R 包:betareg
betareg::betareg(share~x,data=data,link="probit",type="ML",link.phi="log")与 Stata 有差异 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi=“log”时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
使用协变量建模贝塔回归精度参数
Stata
betareg share x, scale(z) slink(log)R 包:betareg
betareg::betareg(share~x|z,data=data,link="logit",link.phi="log",type="ML")与 Stata 有差异 对精度参数使用对数连接;数值比较前需统一Stata的scale连接参数化。
binreg
拟合优势比尺度二项回归
Stata
binreg b i.g, orR 包:stats
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="logit"))与 Stata 有差异 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
拟合风险差尺度二项回归
Stata
binreg b i.g, rdR 包:stats
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="identity"))与 Stata 有差异 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
拟合风险比尺度二项回归
Stata
binreg b i.g, rrR 包:stats
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="log"))与 Stata 有差异 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
boxcox
bsqreg
使用自助法估计分位数回归推断
Stata
bsqreg y x z, reps(99)R 包:quantreg
{ fit <- quantreg::rq(y~x+z,data=data,tau=0.5); summary(fit,se="boot",R=99) }与 Stata 有差异 用99次自助重复进行分位数回归推断。R与Stata的随机流及重抽样实现不同,因此自助标准误不完全相同。
cloglog
拟合cloglog回归
Stata
cloglog b x zR 包:stats
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="cloglog"))与 Stata 有差异 R采用互补log-log链接。须统一事件类别和完整样本;GLM结果对象和收敛容差不同于Stata的cloglog。
拟合无截距cloglog模型
Stata
cloglog b x z, noconstantR 包:stats
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="cloglog"))与 Stata 有差异 R采用互补log-log链接。须统一事件类别和完整样本;GLM结果对象和收敛容差不同于Stata的cloglog。
cnsreg
在两个系数相等的约束下拟合最小二乘回归
Stata
constraint define 1 x = z
cnsreg y x z, constraints(1)R 包:stats
{ fit <- stats::lm(y~I(x+z),data=data); c(intercept=unname(stats::coef(fit)[1]),x=unname(stats::coef(fit)[2]),z=unname(stats::coef(fit)[2])) }固定流程。先在Stata中定义constraint 1 x = z;重参数化施加此固定线性约束,协方差报告需进行对应系数变换。
constraint
eivreg
fracreg
使用三明治推断拟合分数logit回归
Stata
fracreg logit share xR 包:sandwich
{ fit <- stats::glm(share ~ x,data=data,family=stats::quasibinomial(link="logit")); lmtest::coeftest(fit,vcov.=sandwich::vcovHC(fit,type="HC0"),df=Inf) }与 Stata 有差异 准二项拟合避免非整数成功次数警告;此例显式使用三明治推断,小样本校正可能不同。
使用三明治推断拟合分数probit回归
Stata
fracreg probit share xR 包:sandwich
{ fit <- stats::glm(share ~ x,data=data,family=stats::quasibinomial(link="probit")); lmtest::coeftest(fit,vcov.=sandwich::vcovHC(fit,type="HC0"),df=Inf) }与 Stata 有差异 准二项拟合避免非整数成功次数警告;此例显式使用三明治推断,小样本校正可能不同。
glm
拟合二项互补对数对数连接模型
Stata
glm b x z, family(binomial) link(cloglog)R 包:stats
stats::glm(b ~ x + z, data=data, family=stats::binomial(link="cloglog"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
另有 12 个示例及替代实现
拟合二项logit连接模型
Stata
glm b x z, family(binomial) link(logit)R 包:stats
stats::glm(b ~ x + z, data=data, family=stats::binomial())与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合二项probit连接模型
Stata
glm b x z, family(binomial) link(probit)R 包:stats
stats::glm(b ~ x + z, data=data, family=stats::binomial(link="probit"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合泊松对数连接广义线性模型
Stata
glm count x z, family(poisson) link(log)R 包:stats
stats::glm(count ~ x + z, data=data, family=stats::poisson())与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合泊松恒等连接模型
Stata
glm count x, family(poisson) link(identity)R 包:stats
stats::glm(count ~ x, data=data, family=stats::poisson(link="identity"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合成功次数与试验次数形式的分组二项模型
Stata
glm events x, family(binomial trials) link(logit)R 包:stats
stats::glm(cbind(events,trials-events) ~ x,data=data,family=stats::binomial())与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
为正值结果拟合伽马对数连接模型
Stata
glm y x z, family(gamma) link(log)R 包:stats
stats::glm(y ~ x + z, data=data, family=stats::Gamma(link="log"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合高斯恒等连接广义线性模型
Stata
glm y x z, family(gaussian) link(identity)R 包:stats
stats::glm(y ~ x + z, data=data, family=stats::gaussian())与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合高斯对数连接广义线性模型
Stata
glm y x z, family(gaussian) link(log)R 包:stats
stats::glm(y ~ x + z, data=data, family=stats::gaussian(link="log"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合伽马恒等连接模型
Stata
glm y x, family(gamma) link(identity)R 包:stats
stats::glm(y ~ x, data=data, family=stats::Gamma(link="identity"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合伽马倒数连接模型
Stata
glm y x, family(gamma) link(inverse)R 包:stats
stats::glm(y ~ x, data=data, family=stats::Gamma(link="inverse"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合逆高斯恒等连接模型
Stata
glm y x, family(igaussian) link(identity)R 包:stats
stats::glm(y ~ x, data=data, family=stats::inverse.gaussian(link="identity"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
拟合逆高斯对数连接模型
Stata
glm y x, family(igaussian) link(log)R 包:stats
stats::glm(y ~ x, data=data, family=stats::inverse.gaussian(link="log"))与 Stata 有差异 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
hetregress
拟合带乘性异方差的正态均值模型
Stata
hetregress y x, het(z)R 包:nlme
nlme::gls(y~x,data=data,weights=nlme::varExp(form=~z),method="ML")与 Stata 有差异 nlme将标准差建模为exp(thetaz),因此Stata对数方差模型中z的系数为2theta。
intreg
对区间取值结果拟合正态回归
Stata
intreg lower upper x zR 包:survival
survival::survreg(survival::Surv(lower,upper,type="interval2")~x+z,data=data,dist="gaussian")与 Stata 有差异 将survreg用作截面结果的高斯区间似然计算工具,不赋予事件时间解释。
iqreg
logistic
报告逻辑回归优势比
Stata
logistic b x zR 包:stats
{ fit <- stats::glm(b ~ x+z,data=data,family=stats::binomial()); exp(stats::coef(fit)) }与 Stata 有差异 将二项logit系数取指数得到优势比。仅返回点估计,不含Stata的logistic所打印的置信区间和检验。
logit
拟合logit回归
Stata
logit b x zR 包:stats
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="logit"))与 Stata 有差异 R使用logit链接的二项GLM,返回对数优势尺度系数。须统一二元编码和完整样本;Stata的迭代诊断及结果存储结构不同。
另有 1 个示例及替代实现
拟合无截距logit模型
Stata
logit b x z, noconstantR 包:stats
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="logit"))与 Stata 有差异 R使用logit链接的二项GLM,返回对数优势尺度系数。须统一二元编码和完整样本;Stata的迭代诊断及结果存储结构不同。
mlexp
最大化显式定义的正态似然
Stata
mlexp (lnnormalden(y,{mu},exp({lnsigma})))R 包:stats
stats::optim(c(mu=mean(data$y),log_sigma=log(stats::sd(data$y))),function(par) -sum(stats::dnorm(data$y,mean=par[1],sd=exp(par[2]),log=TRUE)),method="BFGS",hessian=TRUE)与 Stata 有差异 R对log sigma优化以确保正值;使用exp()变换回标准差。
mlogit
指定参照结果类别拟合多项logit模型
Stata
mlogit g x z, baseoutcome(4)R 包:nnet
nnet::multinom(stats::relevel(factor(g), ref = "4") ~ x+z,data=data,trace=FALSE)与 Stata 有差异 将结果类别4重设为R因子的首个水平,匹配baseoutcome(4)。系数标签和优化准则不同;须保留相同观测和类别支持。
nbreg
拟合NB2负二项回归
Stata
nbreg count x zR 包:MASS
MASS::glm.nb(count ~ x+z,data=data)与 Stata 有差异 两者均采用NB2方差mu+alpha*mu^2;MASS的theta等于1/alpha。
nl
拟合非线性饱和响应曲线
Stata
nl (y = {a=1} + {b=2}*x/({c=1}+x))R 包:stats
stats::nls(y ~ a+b*x/(c+x),data=data,start=list(a=1,b=2,c=1))与 Stata 有差异 从给定初值拟合所示非线性均值函数。nls与Stata的nl使用不同收敛控制,可能得到不同局部解。
拟合非线性指数均值曲线
Stata
nl (y = {a=2}*exp({b=0.2}*x))R 包:stats
stats::nls(y ~ a*exp(b*x),data=data,start=list(a=2,b=0.2))与 Stata 有差异 从给定初值拟合所示非线性均值函数。nls与Stata的nl使用不同收敛控制,可能得到不同局部解。
ologit
拟合有序logit回归
Stata
ologit y x zR 包:MASS
MASS::polr(y ~ x+z,data=data,method="logistic",Hess=TRUE)与 Stata 有差异 MASS使用累积连接截距;比较软件结果时需核对切点和斜率的符号约定。
oprobit
拟合有序probit回归
Stata
oprobit y x zR 包:MASS
MASS::polr(y ~ x+z,data=data,method="probit",Hess=TRUE)与 Stata 有差异 MASS使用累积连接截距;比较软件结果时需核对切点和斜率的符号约定。
poisson
通过暴露量拟合泊松发生率
Stata
poisson count x z, exposure(exposure)R 包:stats
stats::glm(count ~ x+z+offset(log(exposure)),data=data,family=stats::poisson())与 Stata 有差异 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
另有 2 个示例及替代实现
报告泊松发生率比
Stata
poisson count x z, irrR 包:stats
{ fit <- stats::glm(count~x+z,data=data,family=stats::poisson()); exp(stats::coef(fit)) }与 Stata 有差异 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
拟合无截距泊松回归
Stata
poisson count x z, noconstantR 包:stats
stats::glm(count ~ x+z-1,data=data,family=stats::poisson())与 Stata 有差异 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
probit
拟合probit回归
Stata
probit b x zR 包:stats
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="probit"))与 Stata 有差异 R使用probit链接的二项GLM。须统一二元编码和完整样本;GLM结果对象和收敛容差不同于Stata的probit。
另有 1 个示例及替代实现
拟合无截距probit模型
Stata
probit b x z, noconstantR 包:stats
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="probit"))与 Stata 有差异 R使用probit链接的二项GLM。须统一二元编码和完整样本;GLM结果对象和收敛容差不同于Stata的probit。
qreg
拟合条件第25百分位回归
Stata
qreg y x z, quantile(25)R 包:quantreg
quantreg::rq(y ~ x+z,data=data,tau=0.25)与 Stata 有差异 拟合所选条件分位数。rq与Stata的qreg使用不同的优化程序和默认协方差估计;系数一致不代表标准误对应。
另有 1 个示例及替代实现
拟合条件第75百分位回归
Stata
qreg y x z, quantile(75)R 包:quantreg
quantreg::rq(y ~ x+z,data=data,tau=0.75)与 Stata 有差异 拟合所选条件分位数。rq与Stata的qreg使用不同的优化程序和默认协方差估计;系数一致不代表标准误对应。
regress
拟合二次项回归
Stata
regress y c.x##c.xR 包:stats
stats::lm(y ~ x + I(x^2), data=data)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
另有 11 个示例及替代实现
加入两个连续主效应及交互项
Stata
regress y c.x##c.zR 包:stats
stats::lm(y ~ x * z, data=data)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
拟合不同组的线性斜率
Stata
regress y c.x##i.gR 包:stats
stats::lm(y ~ x * factor(g), data=data)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
在线性回归中控制分类变量
Stata
regress y i.g c.xR 包:stats
stats::lm(y ~ factor(g) + x, data=data)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
拟合分析权重最小二乘回归
Stata
regress y x [aweight=w]R 包:stats
stats::lm(y ~ x, data=data, weights=w)与 Stata 有差异 权重与方差的倒数成比例。比较软件结果前需核对权重尺度和残差自由度。
在指定子样本中拟合线性回归
Stata
regress y x z if b == 1R 包:stats
stats::lm(y ~ x + z, data=data, subset=b == 1)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
报告标准化线性回归系数
Stata
regress y x z, betaR 包:stats
{ fit <- stats::lm(y ~ x + z, data=data); stats::coef(fit)[c("x","z")] * vapply(data[c("x","z")], stats::sd, numeric(1)) / stats::sd(data$y) }与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
拟合无截距线性回归
Stata
regress y x z, noconstantR 包:stats
stats::lm(y ~ x + z - 1, data=data)与 Stata 有差异 OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
使用单向聚类标准误和聚类自由度
Stata
regress y x z, vce(cluster g)R 包:sandwich
{ fit <- stats::lm(y ~ x + z, data = data, subset = !is.na(g)); lmtest::coeftest(fit, vcov. = sandwich::vcovCL(fit, cluster = ~g, type = "HC1"), df = length(unique(stats::expand.model.frame(fit, ~g)$g)) - 1L) }与 Stata 有差异 演示样本只有三个聚类;实际推断需要足够多的独立聚类。
报告HC2异方差稳健线性回归推断
Stata
regress y x z, vce(hc2)R 包:sandwich
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC2")) }与 Stata 有差异 系数仍为最小二乘估计;此例显式选择协方差校正类型。
报告HC3异方差稳健线性回归推断
Stata
regress y x z, vce(hc3)R 包:sandwich
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC3")) }与 Stata 有差异 系数仍为最小二乘估计;此例显式选择协方差校正类型。
报告HC1异方差稳健线性回归推断
Stata
regress y x z, vce(robust)R 包:sandwich
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC1")) }与 Stata 有差异 系数仍为最小二乘估计;此例显式选择协方差校正类型。
rreg
sqreg
tobit
拟合左删失正态Tobit模型
Stata
tobit y x z, ll(0)R 包:AER
AER::tobit(y~x+z,data=data,left=0)与 Stata 有差异 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
另有 2 个示例及替代实现
拟合双界限删失正态模型
Stata
tobit y x z, ll(0) ul(2)R 包:AER
AER::tobit(y~x+z,data=data,left=0,right=2)与 Stata 有差异 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
拟合右删失正态Tobit模型
Stata
tobit y x z, ul(2)R 包:AER
AER::tobit(y~x+z,data=data,left=-Inf,right=2)与 Stata 有差异 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
zinb
拟合零膨胀NB2计数模型
Stata
zinb count x, inflate(z)R 包:pscl
pscl::zeroinfl(count~x|z,data=data,dist="negbin",link="logit")与 Stata 有差异 NB2部分中的负二项theta参数等于Stata alpha的倒数。
zip
拟合采用logit零膨胀部分的零膨胀泊松模型
Stata
zip count x, inflate(z)R 包:pscl
pscl::zeroinfl(count~x|z,data=data,dist="poisson",link="logit")与 Stata 有差异 拟合所示零膨胀Poisson模型,分别指定计数和膨胀方程。须统一膨胀链接、offset和完整样本;优化程序及系数标签不同。
拟合采用probit零膨胀部分的零膨胀泊松模型
Stata
zip count x, inflate(z) probitR 包:pscl
pscl::zeroinfl(count~x|z,data=data,dist="poisson",link="probit")与 Stata 有差异 拟合所示零膨胀Poisson模型,分别指定计数和膨胀方程。须统一膨胀链接、offset和完整样本;优化程序及系数标签不同。