面板数据

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

hausman

固定与随机效应Hausman比较

Stata

hausman fixed random

R 包:plm

plm::phtest(fe, re)

与 Stata 有差异 固定流程;请明确调整示例列名。要求解释变量相同且协方差假设相容。

xtcloglog

随机截距面板互补对数模型

Stata

xtcloglog binary x, re

R 包:lme4

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

与 Stata 有差异 采用正态面板随机截距和12点自适应求积,与Stata的intpoints(12)一致;求积适配方法和收敛准则仍因软件而异。

xtdpd

动态面板一步差分GMM

Stata

xtdpd y L.y x, div(x) dgmmiv(y, lagrange(2 3))

R 包:plm

{ plm <- plm::plm; plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:3), data = pd, effect = "individual", model = "onestep", transformation = "d", collapse = TRUE) }

与 Stata 有差异 固定流程;请明确调整示例列名。仅支持标准差分GMM子集,并明确压缩工具变量。xtdpd还支持更复杂误差过程;比较前须统一工具变量、初始权重矩阵及有限样本修正。

xtdpdsys

水平方程与差分方程的系统GMM

Stata

xtdpdsys y x, maxldep(3)

R 包:plm

{ plm <- plm::plm; plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:3), data = pd, effect = "individual", model = "onestep", transformation = "ld", collapse = TRUE) }

与 Stata 有差异 固定流程;请明确调整示例列名。额外水平方程矩条件要求更强的初始条件假设;须明确统一工具变量压缩、范围及权重,不能声称与xtdpdsys默认设置完全相同。

xtgee

binomial GEE:exchangeable工作相关结构

Stata

xtgee binary x, family( binomial ) corr( exchangeable )

R 包:geepack

geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "exchangeable")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

binomial GEE:independence工作相关结构

Stata

xtgee binary x, family( binomial ) corr( independence )

R 包:geepack

geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "independence")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

gaussian GEE:ar1工作相关结构

Stata

xtgee y x, family( gaussian ) corr( ar1 )

R 包:geepack

geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "ar1")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

gaussian GEE:exchangeable工作相关结构

Stata

xtgee y x, family( gaussian ) corr( exchangeable )

R 包:geepack

geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "exchangeable")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

gaussian GEE:independence工作相关结构

Stata

xtgee y x, family( gaussian ) corr( independence )

R 包:geepack

geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "independence")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

另有 4 个示例及替代实现

binomial GEE:ar1工作相关结构

Stata

xtgee binary x, family( binomial ) corr( ar1 )

R 包:geepack

geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "ar1")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

poisson GEE:ar1工作相关结构

Stata

xtgee count x, family( poisson ) corr( ar1 )

R 包:geepack

geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "ar1")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

poisson GEE:exchangeable工作相关结构

Stata

xtgee count x, family( poisson ) corr( exchangeable )

R 包:geepack

geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "exchangeable")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

poisson GEE:independence工作相关结构

Stata

xtgee count x, family( poisson ) corr( independence )

R 包:geepack

geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "independence")

与 Stata 有差异 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err=“san.se”),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。

xtgls

组间异方差面板极大似然GLS

Stata

xtgls y x z, panels(heteroskedastic) igls

R 包:nlme

nlme::gls(y ~ x + z, data = data, weights = nlme::varIdent(form = ~1 | id), method = "ML")

固定流程;请明确调整列名。共同斜率、独立残差及组别特异残差方差;似然、方差归一化和收敛标准可能不同。

xthtaylor

含时变与时不变内生协变量的Hausman-Taylor模型

Stata

xthtaylor y x1 x2 a b, endog(x2 b) constant(a b)

R 包:plm

plm::plm(y ~ x1 + x2 + a + b | x1 + a | x2, data = data, index = c("id", "time"), random.method = "ht", model = "random", inst.method = "baltagi")

与 Stata 有差异 固定流程;请明确调整示例列名。R三部分公式明确区分外生协变量及时变内生协变量;时不变内生效应识别要求足够的外生时变工具变量,这些分类须有实质依据。

xtivreg

固定效应工具变量回归

Stata

xtivreg y z (x = instrument), fe

R 包:plm

plm::plm(y ~ x + z | instrument + z, data = pd, model = "within")

与 Stata 有差异 固定流程;请明确调整示例列名。工具变量有效性须有实质论证;此数据仅检验代码可执行性。

xtlogit

条件固定效应Logistic回归

Stata

xtlogit binary x, fe

R 包:survival

{ coxph <- survival::coxph; survival::clogit(binary ~ x + survival::strata(id), data = data) }

与 Stata 有差异 固定流程;请明确调整示例列名。通过条件似然消去组截距;组内结局不变化的组不提供系数信息。

xtpcse

Beck-Katz面板修正协方差

Stata

xtpcse y x z, correlation(independent)

R 包:plm

{ fit <- plm::plm(y ~ x + z, data = pd, model = "pooling"); lmtest::coeftest(fit, vcov. = plm::vcovBK(fit, type = "HC0", cluster = "time")) }

与 Stata 有差异 vcovBK(cluster=“time”)允许PCSE所需的同期跨面板相关;面板平衡性、成对缺失处理、有限样本缩放及检验参考分布仍可能与xtpcse不同。

xtpoisson

随机截距面板Poisson

Stata

xtpoisson count x, re normal

R 包:lme4

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

与 Stata 有差异 采用正态面板随机截距和12点自适应求积,与Stata的默认求积点数一致。xtpoisson须指定re normal才采用该分布,其单独re的默认分布为gamma。求积适配方法和收敛准则仍因软件而异。

xtprobit

随机截距面板Probit

Stata

xtprobit binary x, re

R 包:lme4

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

与 Stata 有差异 采用正态面板随机截距和12点自适应求积,与Stata的intpoints(12)一致;求积适配方法和收敛准则仍因软件而异。

xtrc

随机系数面板模型流程

Stata

xtrc y x z

R 包:nlme

nlme::lme(y ~ x + z, random = ~ x + z | id, data = data, method = "ML")

截距、x和z三个系数均随面板变化。nlme用ML拟合高斯混合模型;xtrc采用Swamy随机系数GLS,故估计方法和协方差估计不同。

xtreg

个体和时间双向固定效应

Stata

xtreg y x z i.time, fe

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "within", effect = "twoways")

与 Stata 有差异 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。

另有 11 个示例及替代实现

组间回归

Stata

xtreg y x z, be

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "between", effect = "individual")

与 Stata 有差异 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。

个体固定效应

Stata

xtreg y x z, fe

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "within", effect = "individual")

与 Stata 有差异 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。

拟合组内固定效应面板回归

Stata

xtreg y x z, fe

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "within", effect = "individual")

两端均通过组内变换拟合个体固定效应。plm报告变换模型系数向量,不含Stata所报告截距;残差自由度和协方差缩放须另行统一。

按个体聚类的面板稳健标准误

Stata

xtreg y x z, fe vce(cluster id)

R 包:plm

{ V <- plm::vcovHC(fit, method = "arellano", type = "HC1", cluster = "group"); lmtest::coeftest(fit, vcov. = V) }

与 Stata 有差异 Stata的xtreg, fe vce(robust)等同于vce(cluster id)。plm的HC1采用N/(N-K),K按组内模型系数计数,coeftest采用残差自由度;Stata还应用聚类修正,并以G-1为检验自由度。因此标准误和p值不构成Stata有限样本精确对应。

组内估计的面板聚类稳健标准误

Stata

xtreg y x z, fe vce(robust)

R 包:plm

{ V <- plm::vcovHC(fit, method = "arellano", type = "HC1", cluster = "group"); lmtest::coeftest(fit, vcov. = V) }

与 Stata 有差异 Stata的xtreg, fe vce(robust)等同于vce(cluster id)。plm的HC1采用N/(N-K),K按组内模型系数计数,coeftest采用残差自由度;Stata还应用聚类修正,并以G-1为检验自由度。因此标准误和p值不构成Stata有限样本精确对应。

混合面板回归基准

Stata

xtreg y x z, pa corr(independent)

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "pooling", effect = "individual")

工作相关结构为独立时,高斯总体平均GEE与混合OLS的系数相同。xtreg, pa默认采用常规模型型GEE协方差,须显式指定才使用稳健协方差;plm混合回归按OLS残差缩放,故报告的标准误可能不同。

随机效应面板回归

Stata

xtreg y x z, re

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "random", effect = "individual")

与 Stata 有差异 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。

随机效应方差分量估计:amemiya

Stata

xtreg y x z, re

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "random", random.method = "amemiya")

Amemiya是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Amemiya,不表示数值对应。

随机效应方差分量估计:nerlove

Stata

xtreg y x z, re

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "random", random.method = "nerlove")

Nerlove是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Nerlove,不表示数值对应。

随机效应方差分量估计:swar

Stata

xtreg y x z, re

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "random", random.method = "swar")

固定流程;请明确调整示例列名。这些是不同的方差分量估计方法,方法一致时方可比较估计值。

随机效应方差分量估计:walhus

Stata

xtreg y x z, re

R 包:plm

plm::plm(y ~ x + z, data = pd, model = "random", random.method = "walhus")

Walhus是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Walhus,不表示数值对应。

xtregar

随机截距加AR(1)残差相关

Stata

xtregar y x z, re

R 包:nlme

nlme::lme(y ~ x + z, random = ~1 | id, correlation = nlme::corAR1(form = ~time | id), data = data, method = "ML")

固定流程;请明确调整示例列名。基于似然的混合模型流程与xtregar估计量不同。

xtscc

Driscoll-Kraay协方差

Stata

xtscc y x z, fe lag(2)

R 包:plm

{ V <- plm::vcovSCC(fit, type = "HC1", maxlag = 2); lmtest::coeftest(fit, vcov. = V) }

与 Stata 有差异 需要社区命令xtscc(ssc install xtscc);xtreg没有vce(dkraay)选项。两者均使用组内估计及滞后2阶的Driscoll-Kraay协方差,但有限样本缩放和检验自由度不同。

xttest0

个体随机效应Breusch-Pagan检验

Stata

xtreg y x z, re
xttest0

R 包:plm

plm::plmtest(plm::plm(y ~ x + z, data = pd, model = "pooling"), type = "bp", effect = "individual")

与 Stata 有差异 固定流程;请明确调整示例列名。Stata的边界修正混合分布可能不同于plm的卡方参考分布。

xtunitroot

面板单位根检验:madwu

Stata

xtunitroot fisher y, dfuller lags(1)

R 包:plm

plm::purtest(pd$y, test = "madwu", exo = "intercept", lags = 1, pmax = 1)

与 Stata 有差异 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。

面板单位根检验:hadri

Stata

xtunitroot hadri y, robust

R 包:plm

plm::purtest(pd$y, test = "hadri", exo = "intercept", Hcons = TRUE)

与 Stata 有差异 原假设是面板平稳。Hcons=TRUE选择异方差稳健Hadri统计量,对应Stata的robust;plm的Hadri检验忽略滞后选择,且不提供Bartlett HAC核修正。

面板单位根检验:ips

Stata

xtunitroot ips y, lags(1)

R 包:plm

plm::purtest(pd$y, test = "ips", exo = "intercept", lags = 1, pmax = 1)

与 Stata 有差异 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。

面板单位根检验:levinlin

Stata

xtunitroot llc y, lags(1)

R 包:plm

plm::purtest(pd$y, test = "levinlin", exo = "intercept", lags = 1, pmax = 1)

与 Stata 有差异 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。