. use http://www.stata-press.com/data/r9/fish,clear
. zinb count persons livebait, inflate(child camper) nolog
Zero-inflated negative binomial regression Number of obs =
250
Nonzero obs =
108
Zero obs =
142
Inflation model = logit LR chi2(2) =
82.23
Log likelihood = -401.5478 Prob > chi2 =
0.0000
------------------------------------------------------------------------
------
| Coef. Std. Err. z P>|z| [95% Conf.
Interval]
-------------+----------------------------------------------------------
------
count |
persons | .9742984 .1034938 9.41 0.000 .7714543
1.177142
livebait | 1.557523 .4124424 3.78 0.000 .7491503
2.365895
_cons | -2.730064 .476953 -5.72 0.000 -3.664874
-1.795253
-------------+----------------------------------------------------------
------
inflate |
child | 3.185999 .7468551 4.27 0.000 1.72219
4.649808
camper | -2.020951 .872054 -2.32 0.020 -3.730146
-.3117567
_cons | -2.695385 .8929071 -3.02 0.003 -4.44545
-.9453189
-------------+----------------------------------------------------------
------
/lnalpha | .5110429 .1816816 2.81 0.005 .1549535
.8671323
-------------+----------------------------------------------------------
------
alpha | 1.667029 .3028685 1.167604
2.380076
------------------------------------------------------------------------
------
. predict n_hat
(option n assumed; predicted number of events)
. gen pz = invlogit(-2.695385-2.020951*camper+3.185999*child)
. gen m = exp(-2.730064+1.557523*livebait+0.9742984*persons)
. gen my_n_hat = (1-pz)*m
. summ n_hat my_n_hat
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
n_hat | 250 3.131795 4.189243 .0159387 15.11586
my_n_hat | 250 3.131795 4.189243 .0159391 15.11586
Al Feiveson
.
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Steichen,
Thomas J.
Sent: Tuesday, March 13, 2007 3:21 PM
To: [email protected]
Subject: st: RE: Zinb predictions
Yesterday, I sent a message to the list saying:
========================================================================
=
Below is (version 9.2) output from the -zinb- program using the example
data from the manual. In this data, "count" is the number of fish
caught by visitors to a national park and "persons", "livebait", "child"
and "camper" are covariates.
. use http://www.stata-press.com/data/r9/fish
. zinb count persons livebait, inflate(child camper) nolog
Zero-inflated negative binomial regression Number of obs = 250
Nonzero obs = 108
Zero obs = 142
Inflation model = logit LR chi2(2) = 82.23
Log likelihood = -401.5478 Prob > chi2 = 0.0000
------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
---------+--------------------------------------------------------------
count |
persons | .9742984 .1034938 9.41 0.000 .7714543 1.177142
livebait | 1.557523 .4124424 3.78 0.000 .7491503 2.365895
_cons | -2.730064 .476953 -5.72 0.000 -3.664874 -1.795253
---------+--------------------------------------------------------------
inflate |
child | 3.185999 .7468551 4.27 0.000 1.72219 4.649808
camper | -2.020951 .872054 -2.32 0.020 -3.730146 -.3117567
_cons | -2.695385 .8929071 -3.02 0.003 -4.44545 -.9453189
---------+--------------------------------------------------------------
/lnalpha | .5110429 .1816816 2.81 0.005 .1549535 .8671323
---------+--------------------------------------------------------------
alpha | 1.667029 .3028685 1.167604 2.380076
------------------------------------------------------------------------
After fitting the model, one can use the -predict- command to generate
the predicted number of events (ie., the number of fish caught):
. predict pn
This works fine, however, to verify I understand what the model really
is, I'm trying to manually calculate the predicted number of events from
the values of the variables and the model coefficients.
So far, I'm failing miserably!
Can anyone suggest how to use these coefficients to manually generate
predicted # of events?
========================================================================
=
Resting my tired brain overnight let me see past the block I had formed
and I'm now able to manually generate the predicted counts.
For anyone interested, I'll explain below.
First, note that if one lists the coefficient matrix, e(b), it shows the
coefficients are stored as follows:
. matrix list e(b)
e(b)[1,7]
count: count: count: inflate: inflate: inflate:
lnalpha:
persons livebait _cons child camper _cons
_cons
y1 .97429837 1.5575226 -2.7300635 3.1859991 -2.0209512 -2.6953847
..51104289
I will refer to these coefficients, then, as b1, b2, ..., b7.