. list in 1/10, sepby(id) abbreviate(10)
然后,查看下数据的基本特征:. sum id premium deductible income insurance choice
2.2 研究步骤本文主要目的是通过inschoice.dta介绍stata估计混合logit模型、潜类别logit模型和随机参数logit模型的方法,同时为了做对比,也将估计条件logit模型,具体流程如下:估计条件logit模型;估计混合logit模型;估计随机参数logit模型;在估计潜类别logit模型。3 应用实例3.1 条件logit模型由于条件logit模型只接受随方案而变的自变量,因此仅使用 premium、deductible变量分析其对选择保险方案的影响。此外,数据集本身没有设置各方案的虚拟变量,故第一步先生成各保险方案的虚拟变量:gen Health=0gen HCorp=0gen SickInc=0gen MGroup=0gen MoonHealth=0replace Health=1 if insurance==1replace HCorp=1 if insurance==2replace SickInc=1 if insurance==3replace MGroup=1 if insurance==4replace MoonHealth=1 if insurance==5
然后,进行条件logit模型回归,以方案5(MoonHealth)为参考类别:. clogit choice Health HCorp SickInc MGroup premium deductible,group(id) nolog
从估计的结果可以看出,如果其他解释变量的取值相同(premium、deductible),则个人最有可能选择Health保险方案。另外,一个方案的保费和免赔额越高,则选择该方案的概率越低。由于离散选择模型是非线性模型,故模型的系数只有其符号能反映正负影响,而不能反映影响的大小,所以在上述命令中加入OR计算其风险比:. clogit choice Health HCorp SickInc MGroup premium deductible,group(id) nolog or
premium的风险比为0.086,表示一个方案的保费每增加一个单位(100美元),则选择该方案的概率将会降低91.4%。此外,如果各方案的保费和免赔额相等,则个人选择Health保险方案的概率是MoonHealth的33.804倍,其他变量可以类似的解释。3.2 混合logit模型相比于条件logit模型只接受随方案而变的变量,混合logit还可以接受个人属性变量,为了进行对比,先进行仅包含随方案而变的混合logit模型。同样,以方案5(MoonHealth)为参考类别:. asclogit choice premium deductible,case(id) alternatives(insurance) base(5) nolog
通过对比条件logit模型和混合logit模型的结果,可以发现当仅包含随方案而变的自变量时,混合logit模型和条件logit模型的估计结果一致。下面,在上述混合logit模型的基础上加入个人属性变量(income),并计算各变量的风险比:asclogit choice premium deductible,case(id) alternatives(insurance) base(5) casevars(income) nolog or
结果显示,收入(income)对选择Health和HCorp方案的选择在0.05水平上有影响。例如年收入每增加一个单位(10,000美元),个人选择Health保险方案的概率将提高64%。3.3 随机参数logit模型随机参数logit模型假设个体之间存在异质性,通过模型参数的分布(均值、标准差)刻画个体的异质性。stata15.0提供了asmixlogit命令用于估计随机参数logit模型,新的stata16.0版本采用了新命令cmmixlogit作为官方命令,故本文采用cmmixlogit估计随机参数logit模型。首先通过smset设置个体和可选方案变量,本数据集为id和insurance变量,命令:. cmset id insurance
假定premium与deductible均为随机参数,并且假定参数服从正态分布;此外,随机参数logit模型是采用蒙特卡罗模拟法估计参数的,研究表明使用蒙特卡罗法时采用Halton序列抽样更有效率,故本文采用Halton序列抽样法进行演示,并设定每次Halton序列取1000个点,命令如下:. cmmixlogit choice, random(deductible premium) casevars(income) basealternative(5) intmethod(Halton) intpoints(1000)
stata提供的检验关于是否需要采用随机参数的方法比较保守,仅作为参考。实际上,判断是否需要采用随机参数logit的方法很简单,只需要看随机参数的均值和标准差是否显著即可。stata官方命令计算的结果仅提供随机参数均值的Z和P值,并不提供其标准差的显著性统计量。我们可以很简单的计算出其Z统计量(Z统计量=估计值/标准差):过计算出的Z值可以看出,premium的标准差在0.05显著性水平上显著,deductible的标准差在0.1的显著性水平上显著,表明考虑将这两个变量刻画成随机参数是合理的。随机参数logit模型的固定参数估计解释跟前述模型一致,故这里只以deductible为例,介绍下如何解释随机参数。deductible服从N( -1.155932, 0.8484104^2)的正态分布,根据正态分布的累计概率计算结果表明,一个方案的免赔额越高,91.31%的个体选择该方案的概率更低,而8.69%的个体选择该方案的概率更高,这体现了个体之间的异质性。同样地,我们也可以计算每个变量的边际效应,以定量衡量各变量对选择各方案的边际效应,以deductible为例,首先预测每个保险方案的市场份额:. margins
结果表明,根据本身的数据集预测有20.3%的个体选择Health保险方案。然后通过改变deductible的值,以考察选择Health保险方案份额的变化,考虑将deductible增加10%:. margins, at(deductible=generate(deductible1.10)) alternative(Health)
我们可以发现,当deductible增加10%,选择Health保险方案的个体降至了18.7%。注:本例只是为了演示作用,简单的估计了随机参数logit模型,在实际应用中需要多次测试随机参数服从的不同的分布形式、以及不同抽样序列的样本点值。尤其是当变量数多了以后,需要多次测试每个变量是否可以建模为随机参数。此外,Nlogit软件也可以估计随机参数logit模型,并且比stata更灵活,可以自己写效用函数,甚至可以估计非线性效用函数,也可以将个人属性变量的参数估计刻画成随机参数,有兴趣的读者可以采用Nlogit软件试试,文末会给出Nlogit软件的参考文献和书目。3.4 潜类别logit模型Pacifico's (2012)写了个用EM算法估计潜类别logit模型的外部命令(lclogit),本文也将采用lclogit命令估计潜类别logit模型,使用该命令前需要先安装,这里就不演示命令安装过程了。由于潜类别logit模型事先不知道最佳的潜类别数,故在正式估计模型前,需要根据不同类别数的CAIC和BIC指标确定合适的潜类别数。因此,先运行以下命令,确定合适的潜类别数:. forvalues c = 2/5 {lclogit choice premium deductible,group(id) id(id) nclasses(`c') membership(income) seed(123)matrix b = e(b)matrix ic = nullmat(ic) \ `e(nclasses)', `e(ll)', `=colsof(b)', `e(caic)', `e(bic)'}matrix colnames ic = "Classes" "LLF" "Nparam" "CAIC" "BIC"matlist ic, name(columns)
结果显示,当类别数为2时,CAIC和BIC指标均达到最小,故应选取2个类别的潜类别logit模型。并且在上述模型的基础上,加入方案的虚拟变量,下面将估计2类别潜类别logit模型:. lclogit choice Health HCorp SickInc MGroup premium deductible,group(id) id(id) nclasses(2) membership(income) seed(123)
上表显示了潜类别logit模型以类别2为参考类别,并报告了每个类别的比例,由于我们更关心参数估计,故上面的结果就不作过多的解释,下面将展示参数估计结果:. lclogitml, iter(10)
参数估计结果显示,无论是在类别1还是类别2,如果其他解释变量的取值相同(premium、deductible),则个人最有可能选择Health保险方案;相较于类别2,类别1的群体受保费和免赔额的影响更大。另外,一个方案的保费和免赔额越高,则选择该方案的概率越低,这与条件logit模型估计的结果一致。此外,相比于类别2,类别1的人群更有可能是年收入更高的人群。同样的,我们采取exp(B)的方式计算风险比,这里就不加以演示了。4 结语本文通过实例详细地介绍了条件logit模型、混合logit模型、随机参数logit和潜类别logit模型的stata实现过程,尤其介绍了随机参数logit和潜类别logit两种异质性模型,希望能对读者在利用这些模型做研究时提供帮助。值得注意的是,本文并未比较各模型的优劣,在实际应用中可以采用伪R方、预测准确性和BIC等指标选取最佳模型。此外,以作者的经验来看,stata提供的命令虽然简单,但是局限性也较多,有兴趣的读者可以考虑用Nlogit软件实现各种离散模型的估计。如果各位读者有兴趣,后续可以专门写一篇用Nlogit软件估计非线性效用函数的随机参数logit模型和有序随机参数logit模型的推文。5 参考文献[1] Train K. Discrete Choice Methods With Simulation [M]. Second edition. Cambridge: Cambridge University Press, 2009.[2] Mannering F L, Bhat C R. Analytic methods in accident research: methodological frontier and future directions [J]. Analytic Methods in Accident Research, 2014, 1: 1-22.[3] Pacifico D , Yoo H I . Lclogit: A Stata Command for Fitting Latent-Class Conditional Logit Models via the Expectation-Maximization Algorithm[J]. Stata Journal Promoting Communications on Statistics & Stata, 2013, 13(3):625-639.[4] StataCorp. 2019.Stata choice models reference manual release 16. College Station, TX: StataCorp LLC.[5] 陈强. 高级计量经济学及stata应用(第二版),2013.学习Nlogit软件的参考书目:[1 ]Hensher D A, Rose J M , Greene W H. Applied Choice Analysis [M]. Second edition. Cambridge: Cambridge University Press, 2015.[2] Greene W H.2016. NLOGIT version 6 reference guide[S]. Plainview, NY: Econometric Software.6 完整代码use https://www.stata-press.com/data/r16/inschoice//展示前10行数据list in 1/10, sepby(id) abbreviate(10)//描述性统计sum id premium deductible income insurance choice//生成方案的虚拟变量gen Health=0gen HCorp=0gen SickInc=0gen MGroup=0gen MoonHealth=0replace Health=1 if insurance==1replace HCorp=1 if insurance==2replace SickInc=1 if insurance==3replace MGroup=1 if insurance==4replace MoonHealth=1 if insurance==5//条件logit模型回归,以方案5(MoonHealth)为参考类别clogit choice Health HCorp SickInc MGroup premium deductible,group(id) nologclogit choice Health HCorp SickInc MGroup premium deductible,group(id) nolog or//混合logit模型回归,以方案5(MoonHealth)为参考类别asclogit choice premium deductible,case(id) alternatives(insurance) base(5) nolog//混合logit模型回归,以方案5(MoonHealth)为参考类别,加入income,并求orasclogit choice premium deductible,case(id) alternatives(insurance) base(5) casevars(income) nolog or//随机参数logit模型,Halton抽样cmmixlogit choice, random(deductible premium) casevars(income) basealternative(5) intmethod(Halton) intpoints(1000)display(0.8484104/ 0.4390417)display(0.8561866/ 0.4157747 )marginsmargins, at(deductible=generate(deductible1.01)) alternative(Health)//确定最优的潜类别logit模型分类数目forvalues c = 2/5 {lclogit choice premium deductible,group(id) id(id) nclasses(`c') membership(income) seed(123)matrix b = e(b)matrix ic = nullmat(ic) \ `e(nclasses)', `e(ll)', `=colsof(b)', `e(caic)', `e(bic)'}matrix colnames ic = "Classes" "LLF" "Nparam" "CAIC" "BIC"matlist ic, name(columns)//估计二类潜类别logit模型lclogit choice Health HCorp SickInc MGroup premium deductible,group(id) id(id) nclasses(2) membership(income) seed(123)lclogitml, iter(10)
(图片来源网络,侵删)
0 评论