Stata:两部模型实现命令-twopm

发布时间:2021-09-30 阅读 135

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

作者:张少鹏 (哈尔滨工业大学)
邮箱13251610878@163.com

编者按:本文主要摘译自下文,特此致谢!
Source:Belotti F, Deb P, Manning W G, et al. twopm: Two-part models[J]. The Stata Journal, 2015, 15(1): 3-20. -Link-


目录


1. 背景简介

实证分析中的许多结果 (yi) 是混合离散和连续的受限因变量。它们有两个基本的统计特征:1) yi0,2) yi=0 的观察频率足够高,因此在进行实证分析时需要进行特殊处理。两部模型就是针对这种受限因变量展开回归分析的典型方法。本文接下来要介绍的就是两部模型的估计命令 twopm

值得说明的是,两部模型 twopm 命令有以下几个优点:

  • 第一,它结合了 svy:,因此它可以调整参数估计中的复杂调查设计以及这些估计的标准误;
  • 第二,使用该命令对两部模型中两部的参数进行联合统计检验较为容易;
  • 第三,使用后估计命令 predictmargin ,很容易重新获得因变量的总体预测值和组合模型的边际效应;
  • 第四,使用该命令在第一部分产生预测的估计值,可以在第二部分进行适当的变换;
  • 第五,它自动计算预测值和边际效应的标准误,并考虑模型的稳健标准误。

应用 twopm 命令估计两部模型的步骤主要有两个部分,通常使用第一部分的 logitprobit 方法来预测二元离散变量,使用第二部分的 olsglm 方法来拟合连续变量。此外,可以采用两个语法进行指定:第一种语法在第一部分和第二部分中可以自动指定相同的回归变量,通常推荐使用;第二种语法允许用户在第一部分和第二部分中指定不同的回归变量。

2. twopm 命令

2.1 命令安装

安装该命令,既可以使用 Stata 的官方命令 ssc install,也可以使用连享会最新推出的国内镜像 cnssc install 命令。

安装方法 1:Stata 官方安装 ssc

. ssc install twopm, replace

安装方法 2:连享会的镜像 cnssc

. ssc install cnssc, replace   //使用 cnssc 命令的话,需要事先安装好此命令
. cnssc install twopm, replace 

2.2 命令语法

安装好命令之后,可以输入 help twopm,查看 twopm 的帮助文档。

. help twopm

twopm 命令第一种语法结构如下:

twopm depvar [indepvars] [if] [in] [weight], firstpart(f_options) secondpart(s_options) [twopm_options]

twopm 命令第二种语法结构如下:

twopm equation1 equation2 [if] [in] [weight], firstpart(f_options) secondpart(s_options) [twopm_options]
where equation1 and equation2 are specified as (depvar [=] [indepvars])
  • firstpart(f_options):指定第一部分的模型,可以为 logit 回归或 probit 回归;
  • secondpart(s_options):指定第二部分的模型,可以为 ols 线性回归或 glm 广义线性回归;
  • vce(vcetype)vcetype 可以是 conventionalrobustclusterclustvarbootstrapjackknife
  • robust:等价于 vce(robust)
  • cluster(clustvar):等价于 vce(cluster clustvar)
  • suest:将第一部分和第二部分的估计结果结合起来,得到同期协方差矩阵;
  • level(#):设置置信度,默认为 level(95)
  • nocnsreport:不显示约束条件;
  • display_options:控制遗漏变量、基数和空单元格的间距和显示。

3. Stata 实操

本文使用女性工资数据进行演示,这是因为只有参加工作的女性工资数据才能被观察到,而未参加工作的女性工资数据缺失,因此在研究女性工资这一受限因变量的影响因素时存在估计偏差,故而采用两部模型 twopm 命令进行回归分析。

. *调入数据
. webuse womenwk, clear
. replace wage = 0 if wage==. //将 wage 变量的缺失值替换为 0

3.1 第一种语法

在第一部分和第二部分对收入 wage 的回归中使用相同的自变量,分别是受教育水平 education、年龄 age、是否结婚 married 和孩子数量 children。首先,使用 logit 模型进行第一部分回归,使用 glm 方法进行第二部分回归。

. *第一部分使用 logit 模型,第二部分使用 glm 方法
. twopm wage educ age married children, firstpart(logit) secondpart(glm)

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood =  -5187.675                 Number of obs   =       2000
Part 1: logit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(4)      =     476.62
                                                  Prob > chi2     =     0.0000
Log likelihood = -1027.9144                       Pseudo R2       =     0.1882
Part 2: glm
------------------------------------------------------------------------------
                                                   Number of obs   =      1343
Deviance         =  38542.35905                    (1/df) Deviance =  28.80595
Pearson          =  38542.35905                    (1/df) Pearson  =  28.80595

Variance function: V(u) = 1                        [Gaussian]
Link function    : g(u) = u                        [Identity]
                                                   AIC             =  6.202175
Log likelihood   = -4159.760537                    BIC             =   28905.2
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
logit        |
   education |      0.098      0.019     5.27   0.000        0.062       0.135
         age |      0.058      0.007     8.02   0.000        0.044       0.072
     married |      0.742      0.126     5.87   0.000        0.494       0.990
    children |      0.764      0.052    14.84   0.000        0.663       0.865
       _cons |     -4.159      0.332   -12.53   0.000       -4.810      -3.508
-------------+----------------------------------------------------------------
glm          |
   education |      0.875      0.050    17.42   0.000        0.777       0.974
         age |      0.151      0.019     7.86   0.000        0.114       0.189
     married |     -0.540      0.357    -1.51   0.131       -1.240       0.161
    children |     -0.686      0.103    -6.65   0.000       -0.889      -0.484
       _cons |      7.934      0.926     8.56   0.000        6.119       9.750
------------------------------------------------------------------------------

基于上述回归结果可以发现,在第一部分,所有协变量的回归系数显著性都通过了统计检验,并且对收入(工作)发生概率均具有显著正向影响;在第二部分,只有是否结婚 married 没有通过显著性检验,其他协变量对工资收入的增长都存在显著影响。区别在于受教育水平 education 和年龄 age 对工资收入是显著正向影响,而孩子数量 children 则表现为显著负向影响。

其次,使用 probit 模型进行第一部分回归,使用 ols 方法进行第二部分回归。

. *第一部分使用 probit 模型,第二部分使用 ols 方法
. twopm wage educ age married children, firstpart(probit) secondpart(regress)

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood = -5186.8221                 Number of obs   =       2000
Part 1: probit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(4)      =     478.32
                                                  Prob > chi2     =     0.0000
Log likelihood = -1027.0616                       Pseudo R2       =     0.1889
Part 2: regress
------------------------------------------------------------------------------
                                                  Number of obs   =       1343
                                                  F(   4,   1338) =     128.55
                                                  Prob > F        =     0.0000
                                                  R-squared       =     0.2776
                                                  Adj R-squared   =     0.2755
Log likelihood = -4159.7605                       Root MSE        =     5.3671
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
probit       |
   education |      0.058      0.011     5.32   0.000        0.037       0.080
         age |      0.035      0.004     8.21   0.000        0.026       0.043
     married |      0.431      0.074     5.81   0.000        0.285       0.576
    children |      0.447      0.029    15.56   0.000        0.391       0.504
       _cons |     -2.467      0.193   -12.81   0.000       -2.845      -2.090
-------------+----------------------------------------------------------------
regress      |
   education |      0.875      0.050    17.42   0.000        0.777       0.974
         age |      0.151      0.019     7.86   0.000        0.114       0.189
     married |     -0.540      0.357    -1.51   0.131       -1.240       0.161
    children |     -0.686      0.103    -6.65   0.000       -0.889      -0.484
       _cons |      7.934      0.926     8.56   0.000        6.119       9.750
------------------------------------------------------------------------------

可以发现,该结果与上面的回归结果基本一致,只是在回归系数方面略有差异。

最后,在使用 probit 模型进行第一部分回归和使用 ols 方法进行第二部分回归的基础上,采用收入 wage 的对数值作为第二部分的因变量。

. *在此基础上,还可以使用 wage 变量的对数值作为第二部分的因变量
. twopm wage educ age married children, firstpart(probit) secondpart(regress, log)

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood = -1053.9723                 Number of obs   =       2000
Part 1: probit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(4)      =     478.32
                                                  Prob > chi2     =     0.0000
Log likelihood = -1027.0616                       Pseudo R2       =     0.1889
Part 2: regress_log
------------------------------------------------------------------------------
                                                  Number of obs   =       1343
                                                  F(   4,   1338) =     115.72
                                                  Prob > F        =     0.0000
                                                  R-squared       =     0.2570
                                                  Adj R-squared   =     0.2548
Log likelihood = -26.910688                       Root MSE        =     0.2473
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
probit       |
   education |      0.058      0.011     5.32   0.000        0.037       0.080
         age |      0.035      0.004     8.21   0.000        0.026       0.043
     married |      0.431      0.074     5.81   0.000        0.285       0.576
    children |      0.447      0.029    15.56   0.000        0.391       0.504
       _cons |     -2.467      0.193   -12.81   0.000       -2.845      -2.090
-------------+----------------------------------------------------------------
regress_log  |
   education |      0.038      0.002    16.42   0.000        0.033       0.043
         age |      0.007      0.001     7.50   0.000        0.005       0.008
     married |     -0.030      0.016    -1.82   0.070       -0.062       0.002
    children |     -0.032      0.005    -6.76   0.000       -0.041      -0.023
       _cons |      2.448      0.043    57.35   0.000        2.365       2.532
------------------------------------------------------------------------------

可以发现,第一部分的回归结果与上面的结果完全一致,但是第二部分的结果除了回归系数相比而言有所减小之外,是否结婚 married 也由不显著变为显著。

3.2 第二种语法

在第一部分和第二部分对收入 wage 的回归中使用不一样的自变量,具体地,第一部分的自变量分别是受教育水平 education、年龄 age 和孩子数量 children;第二部分的自变量分别是受教育水平 education、年龄 age 和是否结婚 married。首先,使用 logit 模型进行第一部分回归,使用 glm 方法进行第二部分回归。

. *第一部分使用 logit 模型,第二部分使用 glm 方法
. twopm (wage = educ age children) (wage = educ age married), firstpart(logit) secondpart(glm)  

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood = -5226.9421                 Number of obs   =       2000
Part 1: logit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(3)      =     441.73
                                                  Prob > chi2     =     0.0000
Log likelihood = -1045.3561                       Pseudo R2       =     0.1744
Part 2: glm
------------------------------------------------------------------------------
                                                   Number of obs   =      1343
Deviance         =  39815.66688                    (1/df) Deviance =  29.73537
Pearson          =  39815.66688                    (1/df) Pearson  =  29.73537
Variance function: V(u) = 1                        [Gaussian]
Link function    : g(u) = u                        [Identity]
                                                   AIC             =  6.233188
Log likelihood   = -4181.586035                    BIC             =   30171.3
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
logit        |
   education |      0.120      0.018     6.56   0.000        0.084       0.156
         age |      0.069      0.007     9.88   0.000        0.055       0.083
    children |      0.689      0.047    14.51   0.000        0.596       0.782
       _cons |     -4.269      0.329   -12.97   0.000       -4.914      -3.624
-------------+----------------------------------------------------------------
glm          |
   education |      0.904      0.051    17.77   0.000        0.804       1.004
         age |      0.151      0.020     7.70   0.000        0.112       0.189
     married |     -0.258      0.361    -0.71   0.475       -0.965       0.449
       _cons |      6.019      0.895     6.73   0.000        4.265       7.772
------------------------------------------------------------------------------

基于上述回归结果可以发现,在第一部分,所有协变量的回归系数显著性都通过了统计检验,并且对收入 (工作) 发生概率均具有显著正向影响;但是在第二部分,只有受教育水平 education 和年龄 age 对工资收入的增长是显著正向影响,而是否结婚 married 则不具有显著影响。

其次,使用 probit 模型进行第一部分回归,使用 ols 方法进行第二部分回归。

. *第一部分使用 probit 模型,第二部分使用 ols 方法
. twopm (wage = educ age children) (wage = educ age married), firstpart(probit) secondpart(regress) 

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood = -5225.6481                 Number of obs   =       2000
Part 1: probit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(3)      =     444.32
                                                  Prob > chi2     =     0.0000
Log likelihood = -1044.0621                       Pseudo R2       =     0.1755
Part 2: regress
------------------------------------------------------------------------------
                                                  Number of obs   =       1343
                                                  F(   3,   1339) =     151.77
                                                  Prob > F        =     0.0000
                                                  R-squared       =     0.2538
                                                  Adj R-squared   =     0.2521
Log likelihood =  -4181.586                       Root MSE        =     5.4530
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
probit       |
   education |      0.071      0.011     6.65   0.000        0.050       0.092
         age |      0.041      0.004    10.14   0.000        0.033       0.049
    children |      0.408      0.027    15.17   0.000        0.356       0.461
       _cons |     -2.536      0.191   -13.30   0.000       -2.909      -2.162
-------------+----------------------------------------------------------------
regress      |
   education |      0.904      0.051    17.77   0.000        0.804       1.004
         age |      0.151      0.020     7.70   0.000        0.112       0.189
     married |     -0.258      0.361    -0.71   0.475       -0.965       0.449
       _cons |      6.019      0.895     6.73   0.000        4.265       7.772
------------------------------------------------------------------------------

可以发现,该结果中第一部分与上面的回归结果基本一致,只是在回归系数方面略有差异,而第二部分结果则完全一致。

最后,在使用 probit 模型进行第一部分回归和使用 ols 方法进行第二部分回归的基础上,采用收入 wage 的对数值作为第二部分的因变量。

. *在此基础上,还可以使用 wage 变量的对数值作为第二部分的因变量
. twopm (wage = educ age children) (wage = educ age married), firstpart(probit) secondpart(regress, log) 

Two-part model
------------------------------------------------------------------------------
Log pseudolikelihood = -1093.5513                 Number of obs   =       2000
Part 1: probit
------------------------------------------------------------------------------
                                                  Number of obs   =       2000
                                                  LR chi2(3)      =     444.32
                                                  Prob > chi2     =     0.0000
Log likelihood = -1044.0621                       Pseudo R2       =     0.1755
Part 2: regress_log
------------------------------------------------------------------------------
                                                  Number of obs   =       1343
                                                  F(   3,   1339) =     134.55
                                                  Prob > F        =     0.0000
                                                  R-squared       =     0.2316
                                                  Adj R-squared   =     0.2299
Log likelihood = -49.489211                       Root MSE        =     0.2514
------------------------------------------------------------------------------
        wage | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
probit       |
   education |      0.071      0.011     6.65   0.000        0.050       0.092
         age |      0.041      0.004    10.14   0.000        0.033       0.049
    children |      0.408      0.027    15.17   0.000        0.356       0.461
       _cons |     -2.536      0.191   -13.30   0.000       -2.909      -2.162
-------------+----------------------------------------------------------------
regress_log  |
   education |      0.039      0.002    16.79   0.000        0.035       0.044
         age |      0.007      0.001     7.34   0.000        0.005       0.008
     married |     -0.017      0.017    -1.00   0.315       -0.049       0.016
       _cons |      2.359      0.041    57.18   0.000        2.278       2.439
------------------------------------------------------------------------------

可以发现,第一部分的回归结果与上面的结果完全一致,第二部分的结果主要是回归系数方面有所减小。

4. 结语

使用 twopm 命令估计两部模型的优点相信大家已经有所体会,不过它也存在一些不足,比如不允许对连续结果使用许多其他可能的模型,例如使用 Box-Cox 变换 (boxcox) 的回归、分位数回归 (qreg) 以及用户编写提供的其他方法。但是,上述不足仍然掩盖不了 twopm 命令在实证分析中的优势,并且随着命令的愈加完善,一定会带给广大科研工作者更多的便利。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh heckman 自选择 两部模型, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh