|  | 
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: Customizing display of response variable's name in -ml display-
| From | "Joseph Coveney" <[email protected]> | 
| To | "Statalist" <[email protected]> | 
| Subject | st: Customizing display of response variable's name in -ml display- | 
| Date | Wed, 7 May 2008 09:36:29 +0900 | 
Is there a way to provide an informative variable name in -ml display- when
the ado-file has to make use of a temporary variable for the actual
estimation?
For example, after convergence using the ado-file pair below,
-ml display- shows the response variable as __000000 in the regression
table.  I examined the documentation for -ml- and looked through W. Gould,
J. Pitblado & W. Sribney, _Maximum Likelihood Estimation with Stata_ Third
Edition. (College Station, Texas: Stata Press, 2006), but couldn't find any
way to change the display to show the original dependent variable's name.
Joseph Coveney
---------------Main ado-file (-firthlogit.ado-)-------------
*! firthlogit.ado Version 0.05 JRC 2008-02-11
program define firthlogit, eclass
   version 10
   syntax varlist(numeric) [if] [in] [fweight] [, nolog]
   tempvar tmpvar0
   tempname tmpnam0
   marksample touse
// Initial values
   gettoken response predictors : varlist
   generate byte `tmpvar0' = (`response' != 0) if `touse'
   summarize `tmpvar0' `weight' `exp', meanonly
   if inlist(r(mean), 0, 1) {
       display in smcl as text "outcome does not vary; remember:"
       display in smcl as text ///
"                                  0 = negative outcome,"
       display in smcl as text ///
"        all other nonmissing values = positive outcome"
       error 99
   }
   scalar define `tmpnam0' = logit(r(mean))
   local k : word count `predictors'
   if (`k') matrix define `tmpnam0' = (J(1, `k', 0), `tmpnam0')
   else matrix define `tmpnam0' = (`tmpnam0')
   global firthlogitpredictors `predictors'
   ml model d0 _firthlogit ///
(xb: `tmpvar0' = `predictors') if `touse' `weight' `exp', ///
     missing init(`tmpnam0', copy) maximize ///
crittype("penalized log likelihood") `log'
end
------------------------------------------------------------
--------estimation ado-file (-_firthlogit.ado-)-------------
program define _firthlogit
   version 10
   args todo b lnL
   tempvar xb mu se
   tempname I
   assert !`todo'
   mleval `xb' = `b', eq(1)
   quietly {
       generate double `mu' = invlogit( `xb') if $ML_y1 == 1
       replace         `mu' = invlogit(-`xb') if $ML_y1 == 0
       mlsum `lnL' = ln(`mu')
       generate double `se' = sqrt(`mu' * (1 - `mu'))
       local mataccumlist
       foreach var of global firthlogitpredictors {
           tempvar `var'
           generate double ``var'' = `var' * `se'
           local mataccumlist `mataccumlist' ``var''
       }
       matrix accum `I' = `mataccumlist' `se', noconstant
       scalar define `lnL' = `lnL' + ln(det(`I')) / 2
   }
end
------------------------------------------------------------ 
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/