You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

878 lines
31 KiB
Plaintext

*! version 0.8.1 - 2009-07-31
* work around S11 bug in estimates table
* To do:
* 1) add weights
* 2) use returns rather than scalars
// compare count models
capture program drop countfit
program define countfit, rclass
version 9.0
* 2009-07-31
local vwidth = 32 // causes error in Stata 11
local vwidth = 30
syntax varlist [if] [in] ///
, [Generate(string) replace ///
INFlate(string) /// inflation variables
MAXcount(integer 9) ///
NOGraph /// suppress graph of differences in predicted probabilities
NODifferences /// suppress table of differences in predicted probabilities
NOEstimates /// suppress table of estimated parameters
NOFit /// suppress table of fit statistics
Prm Nbreg ZIP ZINb ///
nodash ///
NOConstant ///
NOPRTable ///
note(string) /// note for graph
GRAPHexport(string) /// options passed to graph export
NOIsily ///
]
// trap weights
if "`e(wtype)'"!="" {
di in r "-countfix- does not work with weights."
exit
}
// define variable lists
* inflate is same as rhs if not specified
if "`inflate'"=="" {
** better way to do this?
local nvars : word count `varlist'
foreach i of numlist 2(1)`nvars' {
local var : word `i' of `varlist'
local inflate "`inflate' `var'"
}
}
// set up printing
local f83 "%8.3f"
local f93 "%9.3f"
local f93l "%-9.3f"
local f103 "%10.3f"
local dash ""
if "`nodash'"=="" {
local dash ///
"--------------------------------------------------------------------------"
}
// construct information on models being assessed
* defalult name is CF for variables created
if "`generate'"=="" local set "CF"
local set "`generate'" // label for sets of models
local modellist "" // list of types of models estimated
local mdlnmlist "" // like modellist but begin with generate prefix _
local pltsym "" // symbols used in the plot
local plty "" // y variables to plot
local pltx "" // x variables to plot
local mdlnum = 1 // number associated with each model
* set up information for all models specified
if "`prm'"=="prm" {
local mdlnmlist "`mdlnmlist' `set'PRM"
local modellist "PRM "
local pltx "`set'PRMval"
local plty "`set'PRMdif "
local pltsym "Th "
local pltleg1 "`set'PRM"
local mdlnum = `mdlnum' + 1
}
if "`nbreg'"=="nbreg" {
local mdlnmlist "`mdlnmlist' `set'NBRM"
local modellist "`modellist'NBRM "
local pltx "`set'NBRMval"
local plty "`plty' `set'NBRMdif "
local pltsym "`pltsym' Sh "
local pltleg`mdlnum' "`set'NBRM"
local mdlnum = `mdlnum' + 1
}
if "`zip'"=="zip" {
local mdlnmlist "`mdlnmlist' `set'ZIP"
local modellist "`modellist'ZIP "
local pltx "`set'ZIPval"
local plty "`plty' `set'ZIPdif "
local pltsym "`pltsym' T "
local pltleg`mdlnum' "`set'ZIP"
local mdlnum = `mdlnum' + 1
}
if "`zinb'"=="zinb" {
local mdlnmlist "`mdlnmlist' `set'ZINB"
local modellist "`modellist'ZINB "
local pltx "`set'ZINBval"
local plty "`plty' `set'ZINBdif "
local pltsym "`pltsym' S "
local pltleg`mdlnum' "`set'ZINB"
local mdlnum = `mdlnum' + 1
}
* if none, then all
if "`prm'"=="" & "`nbreg'"=="" & "`zip'"=="" & "`zinb'"=="" {
local pltx "`set'PRMval"
local plty "`set'PRMdif `set'NBRMdif `set'ZIPdif `set'ZINBdif"
local pltsym "Th Sh T S"
local pltleg1 "`set'PRM"
local pltleg2 "`set'NBRM"
local pltleg3 "`set'ZIP"
local pltleg4 "`set'ZINB"
local mdlnmlist "`set'PRM `set'NBRM `set'ZIP `set'ZINB"
local modellist "PRM NBRM ZIP ZINB"
local prm "prm"
local nbreg "nbreg"
local zip "zip"
local zinb "zinb"
* drop? local alphaopt "drop(lnalpha:_cons)"
}
// estimate models
* 2009-07-31
_count_estimate `varlist' `if' `in' [`fweight' `pweight' `iweight'], ///
max(`maxcount') gen(`generate') `replace' inflate(`inflate') ///
`prm' `nbreg' `zip' `zinb' `noconstant' `noisily'
// table of estimates
if "`noestimates'"=="" {
estimates table `mdlnmlist', eform ///
b(%9.3f) t(%7.2f) label varwidth(`vwidth') ///
stats(alpha N ll bic aic)
}
// summary table of mean observed - predicted probabilities
local c1 = 10
local c2 = 25
local c3 = 31
local c4 = 47
if "`nodifferences'"=="" {
di in g "Comparison of Mean Observed and Predicted Count"
di
di in g " " _col(`c1') " Maximum" ///
_col(`c2') " At" ///
_col(`c3') " Mean"
di in g "Model" _col(`c1') " Difference" ///
_col(`c2') "Value" ///
_col(`c3') " |Diff|"
di in g "---------------------------------------------"
}
* loop through models and compute differences
foreach m in `modellist' {
local modelnm "`set'`m'"
* stats on difference
qui sum `modelnm'dif
local toplot "`toplot' `modelnm'dif"
local `m'difsd = r(sd) // sd of obs-pred
local `m'difmin = r(min) // min
local `m'difmax = r(max) // max
* stats on mean absolute difference
capture drop `modelnm'difabs
qui gen `modelnm'absdif = abs(`modelnm'dif)
qui sum `modelnm'absdif
local `m'absdifmax = r(max) // max
scalar absdifsd`m' = r(sd) // sd
scalar absdifmn`m' = r(mean) // mean
* find values for largest difference
tempname difval
qui gen `difval' = (`modelnm'absdif>``m'absdifmax'-.00001)*_n ///
if `modelnm'absdif!=.
qui sum `difval'
local `m'absdifmaxval = r(max) - 1
* sign of deviation
tempname maxdif // 0.8.0
if ``m'absdifmax' == abs(``m'difmin') {
*local maxdif = ``m'difmin' // 0.8.0
scalar `maxdif' = ``m'difmin'
}
if ``m'absdifmax' == abs(``m'difmax') {
*local maxdif = ``m'difmax' // 0.8.0
scalar `maxdif' = ``m'difmax'
}
if "`nodifferences'"=="" {
* print summary of differences from predictions
di in y "`modelnm'" _col(`c1') in y `f83' `maxdif' ///
_col(`c2') `f83' " ``m'absdifmaxval'" ///
_col(`c3') `f83' absdifmn`m'
}
} // loop through models
// TABLES OF OBSERVED AND PREDICTED COUNTS
if "`noprtable'" == "" {
foreach t in `mdlnmlist' {
qui {
sum `t'absdif
local max = r(N) - 1 // largest count
tempname sumde sumpe sumob sumpr // 0.8.0
scalar `sumde' = r(sum) // sum of abs dif
sum `t'pearson
scalar `sumpe' = r(sum) // sum of pearson dif
sum `t'obeq
scalar `sumob' = r(sum) // sum of pr observed
sum `t'preq
scalar `sumpr' = r(sum) // sum of pr predicted
} // qui
local c1 = 7
local c2 = 19
local c3 = 30
local c4 = 40
local c5 = 50
di
di in y "`t'" in g ": Predicted and actual probabilities"
di
di in g "Count" _col(`c1') " Actual" ///
_col(`c2') "Predicted" ///
_col(`c3') " |Diff|" ///
_col(`c4') " Pearson"
local dash ""
if "`nodash'"=="" {
local dash ///
"------------------------------------------------"
}
di in g "`dash'"
foreach c of numlist 0(1)`max' {
local i = `c' + 1
tempname ob pr de pe // 0.8.0
scalar `ob' = `t'obeq[`i']
scalar `pr' = `t'preq[`i']
scalar `de' = abs(`t'dif[`i'])
scalar `pe' = `t'pearson[`i']
di in y "`c'" ///
_col(`c1') `f83' `ob' ///
_col(`c2') `f83' `pr' ///
_col(`c3') `f83' `de' ///
_col(`c4') `f83' `pe'
} // loop through counts
di in g "`dash'"
di in y "Sum" ///
_col(`c1') `f83' `sumob' ///
_col(`c2') `f83' `sumpr' ///
_col(`c3') `f83' `sumde' ///
_col(`c4') `f83' `sumpe'
} // loop through modellist
} // print table of predictions
// PLOT DIFFERENCES
if "`nograph'"=="" {
twoway (connected `plty' `pltx', ///
msymbol(`pltsym') ///
clpat(tight_dot tight_dot tight_dot tight_dot ) ///
ytitle("Observed-Predicted") ///
subtitle("Note: positive deviations show underpredictions.", ///
pos(11) size(small)) ///
ylabel(-.10(.05).10, grid gmax gmin) ///
xlabel(0(1)`maxcount') ///
note(`note') ///
ysize(3.5) xsize(4.5) ///
legend(order(1 "`pltleg1'" 2 "`pltleg2'" ///
3 "`pltleg3'" 4 "`pltleg4'")) ///
)
* export graph
if "`graphexport'" != "" {
qui graph export `graphexport'
}
}
// COMPARE FIT STATISTICS
if "`nofit'"=="" {
local dash ""
if "`nodash'"=="" {
local dash ///
"-------------------------------------------------------------------------"
}
local c1 = 16
local c2 = 32
local c3 = 48
local c4 = 56
local c5 = 62
di _n in g "Tests and Fit Statistics"
di
tempname aicd // 0.8.0
* base PRM
if "`prm'"!="" {
local mdl1 "`set'PRM"
local mdl1type "PRM"
di in y "`mdl1'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl1' ///
_col(`c2') in g "AIC=" in y `f103' aic`mdl1' ///
_col(`c3') in g "Prefer" ///
_col(`c4') in g "Over" ///
_col(`c5') in g "Evidence"
* prm vs nbreg
if "`nbreg'"!="" {
local mdl2 "`set'NBRM"
local mdl2type "NBRM"
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di "`dash'"
* bic
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
* lr test
local lrfav "`mdl1type'"
local lrnofav "`mdl2type'"
if lrnb_prmp < .05 {
local lrfav "`mdl2type'"
local lrnofav "`mdl1type'"
}
di _col(`c1') in g "LRX2=" in y `f93' lrnb_prm ///
_col(`c2') in g "prob=" in y `f93' lrnb_prmp in g ///
_col(`c3') in y "`lrfav'" ///
_col(`c4') in y "`lrnofav'" ///
_col(`c5') in y "p=" `f93l' lrnb_prmp
} // no nbreg vs prm
* prm vs zip
if "`zip'"!="" {
local mdl2 "`set'ZIP"
local mdl2type "ZIP"
* bic
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di in g "`dash'"
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
tempname aicd // 0.8.0
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
* vuong test
local vufav "`mdl1type'"
local vunofav "`mdl2type'"
if vu`mdl2'>0 {
local vufav "`mdl2type'"
local vunofav "`mdl1type'"
}
di _col(`c1') in g "Vuong=" in y `f83' vu`mdl2' ///
_col(`c2') in g "prob=" in y `f93' vu`mdl2'p in g ///
_col(`c3') in y "`vufav'" ///
_col(`c4') in y "`vunofav'" ///
_col(`c5') in y "p=" `f93l' vu`mdl2'p
} // no zip vs prm
* prm vs zinb
if "`zinb'"!="" {
local mdl2 "`set'ZINB"
local mdl2type "ZINB"
* bic
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di in g "`dash'"
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
} // no zinb vs prm
} // if no prm
* base nbreg
if "`nbreg'"!="" {
local mdl1 "`set'NBRM"
local mdl1type "NBRM"
di in g "`dash'"
di in y "`mdl1'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl1' ///
_col(`c2') in g "AIC=" in y `f103' aic`mdl1' ///
_col(`c3') in g "Prefer" ///
_col(`c4') in g "Over" ///
_col(`c5') in g "Evidence"
* nbreg vs zip
if "`zip'"!="" {
local mdl2 "`set'ZIP"
local mdl2type "ZIP"
* bic
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di in g "`dash'"
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
} // no zip vs nbreg
* nbreg vs zinb
if "`zinb'"!="" {
local mdl2 "`set'ZINB"
local mdl2type "ZINB"
* bic
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di in g "`dash'"
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
* vuong test
local vufav "`mdl1type'"
local vunofav "`mdl2type'"
if vu`mdl2'>0 {
local vufav "`mdl2type'"
local vunofav "`mdl1type'"
}
di _col(`c1') in g "Vuong=" in y `f83' vu`mdl2' ///
_col(`c2') in g "prob=" in y `f93' vu`mdl2'p in g ///
_col(`c3') in y "`vufav'" ///
_col(`c4') in y "`vunofav'" ///
_col(`c5') in y "p=" `f93l' vu`mdl2'p
} // no zinb vs nbreg
} // if no nbreg
if "`zip'"!="" {
local mdl1 "`set'ZIP"
local mdl1type "ZIP"
di in g "`dash'"
di in y "`mdl1'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl1' ///
_col(`c2') in g "AIC=" in y `f103' aic`mdl1' ///
_col(`c3') in g "Prefer" ///
_col(`c4') in g "Over" ///
_col(`c5') in g "Evidence"
* zip vs zinb
if "`zinb'"!="" {
local mdl2 "`set'ZINB"
local mdl2type "ZINB"
* bic
global bic1 = bic`mdl1'
global bic2 = bic`mdl2'
_count_bic_dif
local pref = $bicpref
local nopref = $bicnopref
di in g "`dash'"
di in y " " in g " vs " in y "`mdl2'" ///
_col(`c1') in g "BIC=" in y `f103' bic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' $bicdif ///
_col(`c3') in y "`mdl`pref'type'" ///
_col(`c4') in y "`mdl`nopref'type'" ///
_col(`c5') in y "$bicsup"
* aic
scalar `aicd' = aic`mdl1' - aic`mdl2'
local aicfav "`mdl2type'"
local aicnofav "`mdl1type'"
if aic`mdl1' < aic`mdl2' {
local aicfav "`mdl1type'"
local aicnofav "`mdl2type'"
}
di _col(`c1') in g "AIC=" in y `f103' aic`mdl2' ///
_col(`c2') in g "dif=" in y `f103' `aicd' ///
_col(`c3') in y "`aicfav'" ///
_col(`c4') in y "`aicnofav'"
* lr test
local lrfav "`mdl1type'"
local lrnofav "`mdl2type'"
if lrnb_prmp < .05 {
local lrfav "`mdl2type'"
local lrnofav "`mdl1type'"
}
di _col(`c1') in g "LRX2=" in y `f93' lrzip_zinb ///
_col(`c2') in g "prob=" in y `f93' lrzip_zinbp in g ///
_col(`c3') in y "`lrfav'" ///
_col(`c4') in y "`lrnofav'" ///
_col(`c5') in y "p=" `f93l' lrnb_prmp
di in g "`dash'"
} // no zinb vs zip
} // no zip
} // no fit
end
// compute strength of bic difference?
capture program drop _count_bic_dif
program define _count_bic_dif
* compute bin diff from model 1 and model 2
global bicdif = $bic1 - $bic2
tempname bicdabs // 0.8.0
scalar `bicdabs' = abs($bicdif)
* evaluate support based on bic difference
if `bicdabs'~=. {
global bicsup "Very strong"
if `bicdabs'<= .0000000001 {
global bicsup "no"
}
else if `bicdabs' <=2 {
global bicsup "Weak"
}
else if `bicdabs' <=6 {
global bicsup "Positive"
}
else if `bicdabs' <=10 {
global bicsup "Strong"
}
global bicpref = 2
global bicnopref = 1
if $bicdif < 0 {
global bicpref = 1
global bicnopref = 2
}
if `bicdabs'< .0000000001 & `bicdabs'>-.0000000001 {
global bicpref = 0
}
}
end
// ESTIMATE MODELS AND STORE RESULTS
capture program drop _count_estimate
program define _count_estimate, rclass
syntax varlist [if] [in] [, ///
inflate(varlist) ///
MAXcount(integer 9) Generate(string) replace ///
Prm Nbreg ZIP ZINb NOConstant ///
NOIsily ]
// estimate models & create globals with stats
local set "`generate'"
tempname n
local noise ""
if "`noisily'"=="noisily" {
local noise "noisily"
}
// prm
if "`prm'"!="" {
qui {
local modelnm "PRM"
local fullnm "`set'`modelnm'"
`noise' poisson `varlist' `if' `in', `noconstant'
estimates store `fullnm'
scalar ll`fullnm' = e(ll) // log lik
fitstat, bic
scalar bicp`fullnm' = r(bic_p) // bic'
return scalar bicp`fullnm' = r(bic_p) // 0.8.0
scalar aic`fullnm' = r(aic) // aic
scalar x2`fullnm' = r(lrx2) // lrx2 all b=0
scalar x2p`fullnm' = r(lrx2_p)
scalar bic`fullnm' = r(bic) // bic
if "`replace'"=="replace" {
capture drop `fullnm'rate
capture drop `fullnm'prgt
capture drop `fullnm'val
capture drop `fullnm'obeq
capture drop `fullnm'preq
capture drop `fullnm'prle
capture drop `fullnm'oble
capture drop `fullnm'absdif
capture drop `fullnm'dif
capture drop `fullnm'pearson
local i = 0
while `i'<=`maxcount' {
capture drop `fullnm'pr`i'
capture drop `fullnm'cu`i'
local i = `i' + 1
}
}
prcounts `fullnm', plot max(`maxcount') // predicted counts
label var `fullnm'preq "`modelnm' predicted" // predicted Pr(y)
gen `fullnm'dif = `fullnm'obeq - `fullnm'preq // obs - predicted
label var `fullnm'dif "`modelnm' obs - pred"
* 2004-10-29 add CT 5.34
scalar `n' = e(N) // sample size
gen `fullnm'pearson = ///
(`n' * `fullnm'dif * `fullnm'dif) / `fullnm'preq
label var `fullnm'pearson "`modelnm' contribution to Pearson X2"
sum `fullnm'pearson
} // qui
}
// nbreg
if "`nbreg'"!="" {
qui {
local modelnm "NBRM"
local fullnm "`set'`modelnm'"
`noise' nbreg `varlist' `if' `in', `noconstant'
estimates store `fullnm'
scalar ll`fullnm' = e(ll) // log lik
scalar lrnb_prm = e(chi2_c) // lrx2 of nb vs prm
scalar lrnb_prmp = chiprob(1, e(chi2_c))*0.5
fitstat, bic
scalar bicp`fullnm' = r(bic_p) // bic'
scalar aic`fullnm' = r(aic) // aic
scalar x2`fullnm' = r(lrx2) // lrx2 all b=0
scalar x2p`fullnm' = r(lrx2_p)
scalar bic`fullnm' = r(bic) // bic
if "`replace'"=="replace" {
capture drop `fullnm'rate
capture drop `fullnm'prgt
capture drop `fullnm'val
capture drop `fullnm'obeq
capture drop `fullnm'preq
capture drop `fullnm'prle
capture drop `fullnm'oble
capture drop `fullnm'dif
capture drop `fullnm'absdif
capture drop `fullnm'pearson
local i = 0
while `i'<=`maxcount' {
capture drop `fullnm'pr`i'
capture drop `fullnm'cu`i'
local i = `i' + 1
}
}
prcounts `fullnm', plot max(`maxcount') // predicted counts
label var `fullnm'preq "`modelnm' predicted"
gen `fullnm'dif = `fullnm'obeq - `fullnm'preq
label var `fullnm'dif "`modelnm' obs - pred"
* 2004-10-29 add CT 5.34
scalar `n' = e(N) // sample size
gen `fullnm'pearson = ///
(`n' * `fullnm'dif * `fullnm'dif) / `fullnm'preq
label var `fullnm'pearson "`modelnm' contribution to Pearson X2"
sum `fullnm'pearson
} // qui
}
// zip
if "`zip'"!="" {
qui {
local modelnm "ZIP"
local fullnm "`set'`modelnm'"
`noise' zip `varlist' `if' `in', ///
inf(`inflate') vuong `noconstant'
estimates store `fullnm'
scalar vu`fullnm' = e(vuong) // vuong vs prm
scalar vu`fullnm'p = 1-norm(abs(e(vuong)))
scalar ll`fullnm' = e(ll) // log lik
fitstat, bic
scalar bicp`fullnm' = r(bic_p) // bic'
scalar aic`fullnm' = r(aic) // aic
scalar x2`fullnm' = r(lrx2) // lrx2 all b=0
scalar x2p`fullnm' = r(lrx2_p)
scalar bic`fullnm' = r(bic) // bic
if "`replace'"=="replace" {
capture drop `fullnm'rate
capture drop `fullnm'prgt
capture drop `fullnm'val
capture drop `fullnm'obeq
capture drop `fullnm'preq
capture drop `fullnm'prle
capture drop `fullnm'oble
capture drop `fullnm'all0
capture drop `fullnm'dif
capture drop `fullnm'absdif
capture drop `fullnm'pearson
local i = 0
while `i'<=`maxcount' {
capture drop `fullnm'pr`i'
capture drop `fullnm'cu`i'
local i = `i' + 1
}
}
prcounts `fullnm', plot max(`maxcount') // predicted counts
label var `fullnm'preq "`modelnm' predicted"
gen `fullnm'dif = `fullnm'obeq - `fullnm'preq
label var `fullnm'dif "`modelnm' obs - pred"
* 2004-10-29 add CT 5.34
scalar `n' = e(N) // sample size
gen `fullnm'pearson = ///
(`n' * `fullnm'dif * `fullnm'dif) / `fullnm'preq
label var `fullnm'pearson "`modelnm' contribution to Pearson X2"
qui sum `fullnm'pearson
} // qui
}
// zinb
if "`zinb'"!="" {
qui {
local modelnm "ZINB"
local fullnm "`set'`modelnm'"
`noise' zinb `varlist' `if' `in', ///
inf(`inflate') vuong zip `noconstant'
estimates store `fullnm'
scalar vu`fullnm' = e(vuong) // vuong vs nbreg
scalar vu`fullnm'p = 1-norm(abs(e(vuong)))
scalar ll`fullnm' = e(ll) // loglik
scalar lrzip_zinb = e(chi2_cp) // lrx2 zinb vs zip
scalar lrzip_zinbp = chiprob(1, e(chi2_cp))*0.5
fitstat, bic
scalar bicp`fullnm' = r(bic_p) // bic'
scalar aic`fullnm' = r(aic) // aic
scalar x2`fullnm' = r(lrx2) // lrx2 all b=0
scalar x2p`fullnm' = r(lrx2_p)
scalar bic`fullnm' = r(bic) // bic
if "`replace'"=="replace" {
capture drop `fullnm'rate
capture drop `fullnm'prgt
capture drop `fullnm'val
capture drop `fullnm'obeq
capture drop `fullnm'preq
capture drop `fullnm'prle
capture drop `fullnm'oble
capture drop `fullnm'absdif
capture drop `fullnm'dif
capture drop `fullnm'all0
capture drop `fullnm'pearson
local i = 0
while `i'<=`maxcount' {
capture drop `fullnm'pr`i'
capture drop `fullnm'cu`i'
local i = `i' + 1
}
}
prcounts `fullnm', plot max(`maxcount') // predicted counts
label var `fullnm'preq "`modelnm' predicted"
gen `fullnm'dif = `fullnm'obeq - `fullnm'preq
label var `fullnm'dif "`modelnm' obs - pred"
* 2004-10-29 add CT 5.34
scalar `n' = e(N) // sample size
gen `fullnm'pearson = ///
(`n' * `fullnm'dif * `fullnm'dif) / `fullnm'preq
label var `fullnm'pearson "`modelnm' contribution to Pearson X2"
qui sum `fullnm'pearson
} // qui
}
end // _count_estimate
exit
* version 0.8.0 fix pr bug
* version 0.2.1 13Apr2005 add replace; trap weights
* version 0.2.0 27Feb2005 first documented version