capture program drop fracreg program define fracreg , eclass *! v1.2 gmh 2.19.03 syntax [varlist(default=none)] [if] [in] if `"`varlist'"'=="" { if e(cmd)=="glm" & e(subcmd)=="fracreg" { glm ** results di " " di in gr "Table of Results" di _dup(17) "-" di in gr "SSR " _col(10) "| " %5.4f in ye `e(ssr)' di in gr "SER " _col(10) "| " %5.4f in ye `e(ser)' di in gr "R-square" _col(10) "| " %5.4f in ye `e(r2)' di in gr "RESET" _col(10) "| " %5.4f in ye `e(reset)' di in gr "(p-value)" _col(10) "| " %5.4f in ye `e(reset_p)' exit } else { di "glm not last model" } } gettoken depvar xvar: varlist tempvar touse mark `touse' markout `touse' `varlist' `if' `in' glm `depvar' `xvar' if `touse' [`weight'`exp'], link(logit) family(binomial) robust tempvar r r2 pearson pearson2 Ghat index ghat dbmtilde dgmhat2 dgmhat3 tempname k ssr ser r2 reset scalar `k' = e(k) predict `r' , response qui gen `r2' = `r'^2 if `touse' sum `r2'[`weight'`exp'], meanonly scalar `ssr' = r(sum) predict `pearson', pearson gen `pearson2'=`pearson'^2 sum `pearson2' if `touse' [`weight'`exp'], mean scalar `ser' = sqrt(r(mean)) qui sum `depvar' if `touse' [`weight'`exp'] scalar `r2' = 1 - scalar(`ssr') / ((r(N)-scalar(`k'))*r(Var)*r(N)/(r(N)-1)) qui predict `Ghat' qui predict `index' gen `ghat' = `Ghat' * (1-`Ghat') gen `dbmtilde' = `ghat' /sqrt(`Ghat'*(1-`Ghat')) local dbms " " foreach v in `xvar'{ tempvar dbmtilde_`v' qui gen `dbmtilde_`v'' = `dbmtilde' *`v' if `touse' local dbms "`dbms' `dbmtilde_`v''" } tempvar dbmtilde_one dgmtilde2 dgmtilde3 qui gen `dbmtilde_one'= `dbmtilde' if `touse' gen `dgmhat2' = `ghat' * `index'^2 gen `dgmhat3' = `ghat' * `index'^3 qui gen `dgmtilde2' = `dgmhat2' / sqrt(`Ghat'*(1-`Ghat')) qui gen `dgmtilde3' = `dgmhat3' / sqrt(`Ghat'*(1-`Ghat')) estimates hold glm qui reg `pearson' `dbms' `dgmtilde2' `dgmtilde3' scalar `reset' = e(r2)*e(N) di" " di in gr "Table of Results" di _dup(17) "-" di in gr "SSR " _col(10) "| " %5.4f in ye scalar(`ssr') di in gr "SER " _col(10) "| " %5.4f in ye scalar(`ser') di in gr "R-square" _col(10) "| " %5.4f in ye scalar(`r2') di in gr "RESET" _col(10) "| " %5.4f in ye scalar(`reset') di in gr "(p-value)" _col(10) "| " %5.4f in ye chi2tail(2,`reset') estimates unhold glm estimates scalar ssr = `ssr' estimates scalar ser = `ser' estimates scalar r2= `r2' estimates scalar reset= `reset' estimates scalar reset_p= chi2tail(2,`reset') estimates local subcmd "fracreg" end