1、第十章 计数模型,主要内容,泊松回归模型负二项和广义负二项回归模型零膨胀回归模型,实验10-1:泊松回归模型,实验基本原理 对上式两边取对数可得对数似然函数,之后对求导便可得最大似然估计值。,实验内容及数据来源本书附带光盘data文件夹下的“airinjure.dta”工作文件,给出了美国九家大的航线一年中的伤亡人数数据。 变量包括airline=航线,injuries=该航线一年的伤亡人数,n=各航线飞离纽约的航班数量占全部飞离纽约的航班数量的比例,XYZowned=航线是否为XYZ公司所拥有(1代表为XYZ公司拥有,0代表为其他公司拥有)。利用这些数据,我们分析XYZ公司拥有的航线是否有更
2、高的伤亡率。因为被解释变量injuries为计数数据,所以我们考虑使用泊松模型。利用“airinjure.dta”的数据,我们将讲解泊松回归的操作、拟合优度的检验以及模型的预测。,实验操作指导1 泊松回归的操作(1)泊松回归的基本操作进行泊松回归的基本命令如下:poisson depvar indepvar if in weight ,options其中,poisson代表“泊松回归”的基本命令语句,depvar代表被解释变量的名称,indepvar代表解释变量的名称,if代表条件语句,in代表范围语句,weight代表权重语句,options代表其他选项。,表10.2显示了各options选
3、项及其含义。,(2)计算发生率比IRR我们重新进行前面的回归,令其汇报发生率比。输入命令: poisson injuries XYZowned, exposure(n) irr 其中,选项exposure()约束ln(n)的系数为1,irr表示结果汇报发生率比。,(3)水平形式的泊松回归我们先产生一个变量ln(n),然后再进行泊松回归。 gen lnn=ln(n) poisson injuries XYZowned lnn 其中,第一步为产生一个新变量lnn,其值为n的自然对数;第二步进行泊松回归,被解释变量为injuries,解释变量为XYZowned和lnn。,2.泊松回归的检验和预测(1
4、)拟合优度(goodness of fit)检验命令estat gof 用于检验模型是否与数据吻合良好。在泊松回归之后进行该检验,原假设为模型服从泊松分布。当p值很小时,我们就应该拒绝原假设。对前面回归的模型进行拟合优度检验,命令为:quietly poisson injuries XYZowned, exposure(n)estat gof其中,第一步命令中的quietly用于指示stata不显示该步的结果;第二步为拟合优度的检验。,(2)泊松回归的预测预测的基本命令格式为:predict type newvar if in , statistic nooffset其中,predict是预测
5、的基本命令语句,newvar代表生成的新变量的名称,type代表新变量的类型,if代表条件语句,in代表范围语句,statistic代表要预测的统计量。表10.3显示了各statistic统计量及其含义。,实验10-2:负二项和广义负二项回归模型,实验基本原理,实验内容及数据来源本书附带光盘data文件夹下的“mortality.dta”工作文件给出了不同时期儿童死亡人数的调查数据。变量包括:cohort=分组变量(1代表出生于1941-1959年间,2代表出生于1960-1967年间,3代表出生于1968-1976年间), age_mos=死亡时的年龄(单位为月),deaths=死亡人数,
6、exposure=暴露于风险的总年数(=儿童人数*相应的年龄)。利用这些数据,我们研究不同年代对儿童死亡率的影响。我们会进行泊松回归及其拟合优度检验,负二项回归以及广义负二项回归。,实验操作指导1 泊松回归及拟合优度检验因为我们要进行的回归分析中,被解释变量死亡人数是计数变量,因此,我们首先考虑进行泊松回归。命令如下:gen logexp=ln(exposure)xi: poisson deaths i.cohort, offset(logexp)其中,第一步生成了一个新变量logexp,其值为变量exposure的自然对数;第二步为泊松回归。在第二步中,xi表示生成扩展交互项(interac
7、tion expansion),在这里,解释变量cohort之前有前缀“i.”,即表示生成cohort的虚拟变量(因为分组变量cohort取值为1、2、3,所以会生成3个虚拟变量)。也就是说,被解释变量为deaths,解释变量为虚拟变量_Icohort_1、_Icohort_2和_Icohort_3。为避免多重共线性,stata会自动删掉一个虚拟变量。此外,选项offset(logexp)表明约束logexp的系数为1,这是因为我们要研究组别对死亡率的影响,而死亡人数除以暴露期才是死亡率。,对上面的回归进行拟合优度检验:estat gof结果显示,我们应当拒绝数据服从泊松回归的原假设。,2 负
8、二项回归对 “mortality.dta”的数据进行泊松回归后,拟合优度检验表明泊松回归模型是不合适的。这样,我们考虑用负二项回归模型。负二项回归的基本命令格式为:nbreg depvar indepvar if in weight , nbreg_options其中,nbreg代表“负二项回归”的基本命令语句,depvar代表被解释变量的名称,indepvar代表解释变量的名称,if代表条件语句,in代表范围语句,weight代表权重语句,nbreg_options代表其他选项。,下面,我们利用“mortality.dta”的数据进行负二项回归,命令为:xi: nbreg deaths i.
9、cohort, offset(logexp) nolog其中,被解释变量为deaths,解释变量为cohort的虚拟变量,选项offset(logexp)约束logexp的系数为1,nolog表明不显示迭代过程。,3 广义负二项回归广义负二项回归的命令与负二项回归基本一致,为:gnbreg depvar indepvar if in weight , gnbreg_options其中,gnbreg代表“广义负二项回归”的基本命令语句,gnbreg_options代表其他选项。仍利用“mortality.dta”的数据,我们假设死亡人数是年龄的函数,而参数则是分组变量cohort的函数。为了拟合
10、这个模型,我们键入以下命令:xi: gnbreg deaths age_mos, lnalpha(i.cohort) offset(logexp)该命令中,xi:是为了与i.cohort相呼应,生成cohort的虚拟变量。选项lnalpha(i.cohort) 表明,参数则是cohort的虚拟变量的函数。如果我们认为在cohort相邻两组间的差异是一样的时候,可以直接使用cohort,而不必用其虚拟变量。,4 模型的预测负二项回归和广义负二项回归的模型预测和泊松回归的模型预测大致相同,只有几个选项不一样。预测的基本的命令格式如下:predict type newvar if in , stat
11、istic nooffset其中,predict代表预测的基本命令语句,newvar代表生成的新变量的名称,type代表新变量的类型,if代表条件语句,in代表范围语句,statistic代表进行预测的统计量。nbreg和gnbreg可用的statistic选项包括n、ir、xb和stdp,对选项的解释,也和poisson相同。,下面,让我们通过例子来加深对命令的理解。仍使用“mortality.dta”的数据,我们先进行负二项回归,然后预测,再考察预测值的描述统计量。命令为:quietly xi: nbreg deaths i.cohortpredict countsummarize dea
12、ths count其中,第一步为进行负二项回归,quietly表明不显示该回归的结果;第二步对被解释变量进行预测,并将其命名为count;第三步将显示被解释变量deaths和预测变量count的描述统计量。下面,我们再进行scores的预测,并对预测结果进行描述。命令为:predict dscore1 dscore2, scoresdescribe deaths dscore1 dscore2,实验10-3:零膨胀回归模型,实验基本原理当计数数据中含有大量的“0”值时,可以考虑使用“零膨胀泊松回归”(Zero-Inflated Poisson regression,简记ZIP)或“零膨胀负二项
13、回归”(Zero-Inflated Negative Binomial regression,简记ZINB)。对零膨胀回归模型而言,估计是分两阶段进行的。首先,决定计数变量“取零”还是“取正整数”,这相当于二值选择。其次,如果决定“取正整数”,则进一步确定选择哪个正整数。,实验内容及数据来源本书附带光盘data文件夹的“fish.dta”工作文件给出了某一国家公园中游客捕鱼情况的数据,主要变量包括: count=各群游客捕获的鱼的条数,persons=该群游客的数量,child=该群游客中儿童的数量,livebait=是否使用活饵,camper=是否露营。利用这些数据,我们研究各因素对游客捕鱼
14、条数的影响。考虑到被解释变量count中有142个观测值取值为0,我们使用零膨胀回归模型来进行模型拟合。下面,利用“fish.dta”的数据,我们来讲解零膨胀泊松回归、零膨胀负二项回归的拟合和预测。,实验操作指导1 零膨胀泊松回归(ZIP)的操作,对于“fish.dta”的数据,我们认为,影响捕获的鱼的条数(count)的因素主要有该群游客有几人(persons)以及是否使用活饵(livebait),而影响游客捕鱼与否的因素则包括游客中有几人是儿童(child)以及是否露营(camper)。我们希望在回归的过程中汇报Vuong统计量,这样,该回归的命令为:zip count persons l
15、ivebait, inf(child camper) vuong,2 零膨胀泊松回归的预测,对于本例,我们可以预测捕获的鱼的数量,并命名为pcount:predict pcount或预测捕鱼数量为0的概率,并命名为prob:predict prob, pr 对于其他选项,道理相同,在此不再举例。,3 零膨胀负二项回归(ZINB)的操作仍然利用“fish.dta”的数据,我们来拟合零膨胀负二项回归,并汇报Vuong统计量以及似然比检验。zinb count persons livebait, inf(child camper) vuong zip这里,被解释变量为count,解释变量为perso
16、ns和livebait,决定是否捕鱼的变量为child和camper。,习题,1.利用本书附带光盘data文件夹下“poissonreg.dta”工作文件对决定初中生旷课天数的因素进行分析。主要变量包括: id=学生的编号,school=学校,male=是否男生,math=数学课成绩,langarts=语言艺术课成绩,daysatt=在校天数,daysabs=旷课天数。以daysabs为被解释变量,以male和langarts为解释变量,进行泊松回归模型的拟合。下图列出了数据的基本情况。,2.在习题1的回归之后,对旷课天数进行预测,并比较使用不同选项时的预测结果。3.对习题1中的泊松回归模型进行拟合优度检验,并对结果进行解释。4.对于习题1中的数据,使用负二项回归重新进行拟合。5.使用实验10-3中“fish.dta”文件的前150个数据进行零膨胀泊松回归,并对结果进行解读。,6.使用“fish.dta”文件的前150个数据进行零膨胀负二项回归,尝试使用不同的选项和模型设定形式,并对结果进行解读。7.使用“fish.dta”文件的全部数据进行ZINB回归,然后进行预测,使用不同的选项。,