Dear Statalist, I am trying to address the perpetual method in order to build a stock variable. Basically, first it generates a initial stock (first year), and then it sum up on the following values accounting for a depreciation rate. However, the problem is when the average growth rate is negative (and higher than the depreciation rate which I set to be 0.05) ending in a negative stock variable. It is advised to use geometric mean instead of arithmetic one. However, I am not sure if I am calculating right the growth rate as it is, or if I should I multiply it by 100 (in the first line of the first loop). When multiplying by 100, the stock is positive, but the geometric average is higher than the arithmetic one (which should not be).
Have anybody any advice?
Have anybody any advice?
Code:
foreach x in new_sumx1 { bys sic (year): gen g_`x' = (( `x' - L.`x')/L.`x') egen ameang_`x' = mean( g_`x' ), by(sic) egen gmeang_`x' = mean(log(1 + g_`x')), by(sic) replace gmeang_`x' = exp(gmeang_`x') - 1 gen stock_`x'g = ( `x' /(0.05 + gmeang_`x' )) if year==2004 gen stock_`x'a = ( `x' /(0.05 + ameang_`x' )) if year==2004 } sort sic year brow sic year new_sumx1 g_new_sumx1 gmeang_new_sumx1 stock_new_sumx1g ameang_new_sumx1 stock_new_sumx1a foreach x in new_sumx1 { forvalues i = 2005/2016 { bys sic: replace stock_`x'a = (1-0.05)*L.stock_`x'a + `x' if year==`i' bys sic: replace stock_`x'g = (1-0.05)*L.stock_`x'g + `x' if year==`i' } }
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input byte sic int year float new_sumx1 5 2004 2001276 5 2005 43234.54 5 2006 76543.516 5 2007 144225.97 5 2008 374271.3 5 2009 518562.8 5 2010 657756.1 5 2011 28355.887 5 2012 113218.86 5 2013 3358.796 5 2014 . 5 2015 . 5 2016 1659679.3 10 2004 27806592 10 2005 20727666 10 2006 23789176 10 2007 18034548 10 2008 25033572 10 2009 28634690 10 2010 28286054 10 2011 19459068 10 2012 17952214 10 2013 18554806 10 2014 9926886 10 2015 11262449 10 2016 10461789 end