*! version 3.0.0 *! growth -- calculate growth rate *! Sean Becketti, April 1991. program define growth version 3.0 capture confirm integer number `1' local varlist "req ex min(1) max(1)" local options "noAnnual Log Ma(int 1) Percent PERIod(str) Suffix(str)" parse "`*'" if `ma'<1 { di in red "ma() must be positive" exit 198 } _ts_peri `period' /* obtain # of periods per "year" */ local period=cond("`annual'"!="",1,$S_1) local f100=cond("`percent'"!="",100,1) local pwr=`period'/`ma' if ("`suffix'"=="") { local suffix "`varlist'" } local addper = index("`suffix'",".")==0 local prefix "G" if (`addper') { local prefix "`prefix'." } local name = substr("`prefix'`suffix'",1,8) local v `varlist' local lbl "`prefix'`v'" if `ma'!=1 { local lbl "`lbl' ma(`ma')" } if `period'!=1 { local lbl "`lbl' p(`period')" } if "`log'"!="" { local lbl "`lbl' log" } if "`percent'"!="" { local lbl "%`lbl'" } tempvar res quietly { if ("`log'"!="") { gen float `res'=`f100'*`pwr'* /* */ (ln(`v')-ln(`v'[_n-`ma'])) } else { gen float `res' = `f100'*((`v'/`v'[_n-`ma'])^`pwr'-1) } } label var `res' "`lbl'" capture confirm var `name' if _rc==0 { di in blu "(`name' replaced)" drop `name' } rename `res' `name' end