*! version 1.0 13/09/98 (STB-53: sg128) program define bhatgauc version 5.0 *Author: Isaias H. Salgado Ugarte *First written (version 5.0) 13/09/98 *Last review: 13/09/98 local varlist "req ex min(2) max(2)" local if "opt" local in "opt" #delimit ; local options "Gen(string) noGraph T1title(string) Symbol(string) Connect(string) *"; #delimit cr parse "`*'" parse "`varlist'", parse(" ") quietly { tempvar logfreq laglog diflog gen `logfreq'=log(`1') gen `laglog'=`logfreq'[_n+1] gen `diflog'=`laglog'-`logfreq' tempvar touse gen byte `touse'=0 replace `touse'=1 `in' regress `diflog' `2' if `touse' tempvar width mean sd b gauprob sumgaup sumsmfr en gaucom gen `width'=`2'[2]-`2'[1] gen `mean'=-1*_b[_cons]/_b[`2']+`width'/2 gen `sd'=sqrt(`width'/(-1*_b[`2'])) } gen `b'=_b[`2'] if `b'>0 { di "The slope of selected points is >0" exit} else di "R-squared = " %5.4f _result(7) _skip(10) "Adj R-squared = " %5.4f _result(8) di "Mean = " %5.4f `mean' di "s.d. = " %5.4f `sd' quietly { gen `gauprob'=`width'*(1/(`sd'*sqrt(2*_pi)))*exp(-.5*((`2'-`mean')/`sd')^2) egen `sumgaup'=sum(`gauprob') if `touse' egen `sumsmfr'=sum(`1') if `touse' gen `en'=`sumsmfr'[2]/`sumgaup'[2] replace `en'=round(`en',1) noisily di "component size = " `en' gen `gaucom'=`en'*`gauprob' sort `2' } if "`graph'" ~= "nograph" { if "`t1title'" ==""{ local t1title "Gaussian component" } if "`symbol'"=="" { local symbol "op" } if "`connect'"=="" { local connect "ls" } graph `1' `gaucom' `2', `options' /* */ t1("`t1title'") /* */ s(`symbol') c(`connect') } if "`gen'"~="" { rename `gaucom' `gen' } end