阅读全文:Stata:一文读懂两部模型-twopm (lianxh.cn)
作者:王恩泽 (武汉大学经济与管理学院)
邮箱:enzewang2008@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. -PDF-
1. 简介
1.1 什么是两部分模型?
在实证分析的过程中,我们经常会遇到混合型 (离散-连续) 随机变量,这类变量往往有如下基本特征:(1) yiyi ≥ 0,(2) yiyi = 0。换句话说,该类变量往往由大量的 00 值与大于 00 的值组成。由于大量 00 值的存在,单一的指数模型往往无法对这类数据进行较好地拟合。为此,我们需要借助于两部分模型 (Two-part models) 对该类数据进行处理。
具体而言,两部分模型借助一个二元选择模型获得观测值为零值的概率。随后,以观测到正值为条件。一个合适的回归模型被应用于拟合正值。在本篇推文中,我们介绍了 twopm
命令,该命令可被应用于估计两部分模型。同时,借助该命令,我们也能够计算使用两部分模型得出的预测值与边际效应。
以下是 ChatGPT 关于两部分模型 (Two-part models) 的介绍:
Two-part models(两部分模型)是一种统计模型,由两个部分组成,用于描述具有大量零值或较小计数的数据。这种模型的两个部分通常是一个二项分布或泊松分布的概率质量函数和一个正态分布的概率密度函数。
Two-part models通常用于医疗保健和社会科学领域的数据分析,例如用于描述医疗服务利用、药物使用等问题。这种模型最常见的用途是对一些稀有事件(如住院、手术等)进行建模。
Two-part models中的第一部分通常描述了事件的发生概率,因为大部分数据都是零。第二部分描述了对于发生了事件的个体,其数值数据如何分布。这种模型通常使用最大似然估计进行参数估计。
Two-part models具有许多优点,例如可以对具有复杂数据结构的数据进行建模,可以更好地描述实际数据的特征。但是,它们也有一些缺点,例如可能需要更多的计算资源和更复杂的模型选择过程。
以下是一些关于Two-part models的例子:
医疗保健利用模型:Two-part models常用于医疗保健领域的数据分析,例如描述患者住院率、手术率、就诊次数等问题。该模型的第一部分可以描述患者发生住院或手术的概率,第二部分可以描述住院或手术的费用分布。
药物使用模型:Two-part models也可用于描述药物使用情况,例如描述患者是否使用某种药物和他们使用药物的频率和剂量。该模型的第一部分可以描述患者是否使用药物的概率,第二部分可以描述药物剂量的分布。
家庭收入模型:Two-part models还可用于社会科学领域的数据分析,例如描述家庭收入情况。该模型的第一部分可以描述家庭收入为零的概率,第二部分可以描述家庭收入非零的分布。
保险索赔模型:Two-part models也可用于描述保险索赔的情况,例如描述保险索赔是否发生以及发生时索赔的金额。该模型的第一部分可以描述索赔是否发生的概率,第二部分可以描述索赔金额的分布。
这些例子仅是Two-part models应用的一小部分,该模型可用于任何具有大量零值或较小计数的数据集。
1.2 twopm 命令简介
twopm
命令允许我们在第一步中使用 logit 或 probit 模型对数据进行拟合,在第二步中使用 OLS 或者 GLM 回归对数据进行拟合。相比于分别对两部分模型进行估计,twopm
命令具有如下优势:
- 第一,它可以适应复杂的调查设计,进而对参数估计和这些估计的标准误差进行调整。复杂的调查设计在大型调查中很常见,然而,忽略调查结构可能导致总体参数的估计偏差。
- 第二,该命令可以对两部分模型中每一步都存在变量的联合显著性进行检验。
- 第三,使用该命令后,借助
predict
和margins
可以方便的计算被解释变量的预测值与解释变量的边际效应。值得注意的是,此处的预测值是针对全样本而言的,而非仅仅针对第二步预测过程中包含的正数观测值。 - 第四,该命令可以对估计尺度进行再转换。具体而言,在第二步估计时若使用 OLS 对 ln(y)ln(y) 进行回归,该程序能够提供以 yy 尺度 ( 原始尺度 ) 为基础预测的估计值。
- 第五,该命令会在考虑模型的两个部分、复杂的调查设计、及基于增量方法 (delta method) 的稳健标准误的基础上自动计算预测值和边际效应的标准误差。
2. twopm 命令的语法格式
该命令具有两种语法格式,第一种语法格式自动在第一和第二步中定义相同的回归模型和函数形式;第二种语法格式允许我们自主设定第一和第二步中所使用的的回归模型。
ssc install twopm , replace
2.1 语法格式 1 (两部分为相同的回归模型)
twopm depvar [indepvars] [if] [in] [weight],
firstpart(f_options) secondpart(s_options)
[vce(vcetype) robust cluster(cluster)
suest level(#) nocnsreport display_options]
2.2 语法格式 2 (两部分为不同的回归模型)
twopm equation1 equation2 [indepvars] [if] [in] [weight],
firstpart(f_options) secondpart(s_options)
[vce(vcetype) robust cluster(cluster)
suest level(#) nocnsreport display_options]
其中,equation1
和 equation2
被定义为如下形式:
(depvar [=] [indepvars])
2.3 语法选项详解
firstpart(f_options)
:设定模型第一步估计采用的形式。(f_options)
处填写logit
或probit
。secondpart(s_options)
:设定模型第二步估计采用的形式。(s_options)
处填写regress
或glm
。vce(vcetype)
:设定模型所报告标准误的类型。五种类型可选:包括从渐近理论推导出的类型、对某些类型的错误识别具有稳健性的类型、允许组内相关的类型、以及使用 bootstrap 或 jackknife 方法的类型。默认类型为vce(conventional)
,即在模型的第一步和第二步中使用常规的方差估计。robust
:相当于使用vce(robust)
。cluster (clustvar)
:相当于使用vce(cluster clustvar)
。suest
:结合了模型第一部分和第二部分的估计结果,该选项往往填写test
或testnl
进而用来检验某一变量的联合显著性。
2.4 使用 twopm 语法后的估计与预测
predict [type] newvar [if] [in], [{normal|duan} scores nooffset]
该语法被应用于计算预测值或者 E(y|x) 的估计值。
predict [type] {stub*|newvar1 ... newvarq} [if] [in], scores
该语法被应用于计算等式得分 (equation-level scores)。
在上述两种语法格式中,若在 [if]
处填写 if e(sample)
,则意味着预测值与计算所得的等式得分都被限制于估计的样本中。在使用对数形式的被解释变量进行两部分回归后,如下选项将可以使用:
normal
:使用正态理论重新转换进而获得拟合值。duan
:使用 Duan (1983) 的 smearing 再转换进而获取拟合值。scores
:为模型的每个部分创建得分变量。由于模型第二部分的得分只有在估计 y>0y>0 分样本时有意义,故计算第二部分的得分变量时样本被自动限于估计的分样本。nooffset
:设定计算预测值或得分时忽略设定模型时定义的偏移变量或暴露变量。