Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: Running Product Function |
Date | Sun, 9 Dec 2012 22:57:12 +0000 |
I mean I disagree with the idea of using a harmonic mean here. On Sun, Dec 9, 2012 at 10:54 PM, Nick Cox <njcoxstata@gmail.com> wrote: > I disagree. The geometric mean fits with the idea that log scale is a > natural scale for analysis, which is true of compound growth > processes. The harmonic mean doesn't and it is not defined either for > zeros. > > Nick > > On Sun, Dec 9, 2012 at 10:41 PM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >> So maybe I could try the harmonic mean as well. >> >> P.S. The geometric mean is excellent for my objectives: >> psychologically if there is a positive momentum it is plausible that >> more weight is given to the latter periods, while if there is a >> negative momentum more weight is given to earlier periods (where the >> market was high) >> >> On Mon, Dec 10, 2012 at 12:25 AM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>> Thanks Nick. That was very helpful. >>> >>> On Mon, Dec 10, 2012 at 12:14 AM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>> Note also that the geometric mean of this series is 25. This implies >>>> that while the arithmetic mean gives more weight to earlier periods, >>>> the geometric mean gives more weight to latter periods.: >>>> >>>> ameans(reduct_per)if appt==2862 >>>> >>>> Variable | Type Obs Mean [95% Conf. Interval] >>>> -------------+---------------------------------------------------------- >>>> reduct_per | Arithmetic 37 8.108108 4.152295 12.06392 >>>> | Geometric 12 25 25 25 >>>> | Harmonic 12 25 25 25 >>>> ------------------------------------------------------------------------ >>>> >>>> >>>> >>>> On Mon, Dec 10, 2012 at 12:06 AM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>>> Eventually, I improved the system and put:the following commands: >>>>> >>>>> by appt: replace reduct_per=1 if reduct_per==0 >>>>> by appt: gen y1=exp(sum(ln(reduct_per))) >>>>> >>>>> I got the following table, which is exactly what I need (I don't want >>>>> the geometric mean to be set to zero): >>>>> >>>>> . list reduct_per y3 if appt==2862 >>>>> >>>>> +---------------------+ >>>>> | reduct~r y3 | >>>>> |---------------------| >>>>> 30. | 1 1 | >>>>> 31. | 1 1 | >>>>> 32. | 1 1 | >>>>> 33. | 1 1 | >>>>> 34. | 1 1 | >>>>> |---------------------| >>>>> 35. | 1 1 | >>>>> 36. | 1 1 | >>>>> 37. | 1 1 | >>>>> 38. | 1 1 | >>>>> 39. | 1 1 | >>>>> |---------------------| >>>>> 40. | 1 1 | >>>>> 41. | 1 1 | >>>>> 42. | 1 1 | >>>>> 43. | 1 1 | >>>>> 44. | 1 1 | >>>>> |---------------------| >>>>> 45. | 1 1 | >>>>> 46. | 1 1 | >>>>> 47. | 1 1 | >>>>> 48. | 1 1 | >>>>> 49. | 1 1 | >>>>> |---------------------| >>>>> 50. | 1 1 | >>>>> 51. | 1 1 | >>>>> 52. | 1 1 | >>>>> 53. | 1 1 | >>>>> 54. | 1 1 | >>>>> |---------------------| >>>>> 55. | 25 25 | >>>>> 56. | 25 625 | >>>>> 57. | 25 15625 | >>>>> 58. | 25 390625 | >>>>> 59. | 25 9765625 | >>>>> |---------------------| >>>>> 60. | 25 2.44e+08 | >>>>> 61. | 25 6.10e+09 | >>>>> 62. | 25 1.53e+11 | >>>>> 63. | 25 3.81e+12 | >>>>> 64. | 25 9.54e+13 | >>>>> |---------------------| >>>>> 65. | 25 2.38e+15 | >>>>> 66. | 25 5.96e+16 | >>>>> +---------------------+ >>>>> >>>>> >>>>> On Sun, Dec 9, 2012 at 11:56 PM, Nick Cox <njcoxstata@gmail.com> wrote: >>>>>> That is reasonable if and only if zero is in effect a code for missing >>>>>> in your situation. >>>>>> >>>>>> (In terms of your earlier reference, -prod()- is a user-written -egen- >>>>>> function which must be installed from >>>>>> >>>>>> STB-51 dm71 . . . . . . . . . . . . Calculating the product of observations >>>>>> (help prod if installed) . . . . . . . . . . . . . . . . . . P. Ryan >>>>>> 9/99 pp.3--4; STB Reprints Vol 9, pp.45--48 >>>>>> extension to egen for producing the product of observations >>>>>> >>>>>> Please remember to explain _where_ you obtained user-written code.) >>>>>> >>>>>> Nick >>>>>> >>>>>> On Sun, Dec 9, 2012 at 9:40 PM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>>>>> I don't have negative values, but I have zeros, in which case I can >>>>>>> replace them by one and then take the -ln()- >>>>>>> >>>>>>> On Sun, Dec 9, 2012 at 11:31 PM, Nick Cox <njcoxstata@gmail.com> wrote: >>>>>>>> Oddly enough I was thinking earlier today about how you would >>>>>>>> generalise this if any values were not positive. >>>>>>>> >>>>>>>> If any value is zero, then the product becomes zero; otherwise one >>>>>>>> would need to separate out products of -abs()- and -sign()-. >>>>>>>> >>>>>>>> Nick >>>>>>>> >>>>>>>> On Sun, Dec 9, 2012 at 9:19 PM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>>>>>> >>>>>>>>> Please ignore my previous e-mails regarding this question >>>>>>>>> >>>>>>>>> After a short additional search, I found a very nice (and well known) >>>>>>>>> trick proposed by Nick Cox to address the problem (which, from some >>>>>>>>> reason did not come to my mind): >>>>>>>>> >>>>>>>>> bysort group : gen prod = sum(ln(x)) >>>>>>>>> by group : replace prod = exp(prod[_N]) >>>>>>>>> >>>>>>>>> On Sun, Dec 9, 2012 at 11:05 PM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>>>>>>>> P.S. According to stata's help, the details of the author of the >>>>>>>>>> -prod()- function is: >>>>>>>>>> >>>>>>>>>> Philip Ryan >>>>>>>>>> Department of Public Health >>>>>>>>>> University of Adelaide >>>>>>>>>> South Australia >>>>>>>>>> pryan@medicine.adelaide.edu.au >>>>>>>> >>>>>>>> >>>>>>>> On Sun, Dec 9, 2012 at 10:53 PM, Yuval Arbel <yuval.arbel@gmail.com> wrote: >>>>>>>> >>>>>>>>>>> I appreciate very much your assistance in the following question:, >>>>>>>>>>> >>>>>>>>>>> I'm looking for an equivalent function for -gen y1=sum()- which will >>>>>>>>>>> calculate running product for each point in time >>>>>>>>>>> >>>>>>>>>>> In fact, what I would like to calculate is a running geometric mean >>>>>>>>>>> >>>>>>>>>>> Note also that -gen y2=prod()- does not work (i.e., stata does not >>>>>>>>>>> identify the function). Only -egen y2=prod()- works, but it generates >>>>>>>>>>> only one product for each panel, and this is not what I need. >>>>>>>>>>> >>>>>>>>>>> Finally, I tried the -amean- command,, but it simply gives summary >>>>>>>>>>> statistics of different means, and it is not a function.. >>>>>> * >>>>>> * For searches and help try: >>>>>> * http://www.stata.com/help.cgi?search >>>>>> * http://www.stata.com/support/faqs/resources/statalist-faq/ >>>>>> * http://www.ats.ucla.edu/stat/stata/ >>>>> >>>>> >>>>> >>>>> -- >>>>> Dr. Yuval Arbel >>>>> School of Business >>>>> Carmel Academic Center >>>>> 4 Shaar Palmer Street, >>>>> Haifa 33031, Israel >>>>> e-mail1: yuval.arbel@carmel.ac.il >>>>> e-mail2: yuval.arbel@gmail.com >>>> >>>> >>>> >>>> -- >>>> Dr. Yuval Arbel >>>> School of Business >>>> Carmel Academic Center >>>> 4 Shaar Palmer Street, >>>> Haifa 33031, Israel >>>> e-mail1: yuval.arbel@carmel.ac.il >>>> e-mail2: yuval.arbel@gmail.com >>> >>> >>> >>> -- >>> Dr. Yuval Arbel >>> School of Business >>> Carmel Academic Center >>> 4 Shaar Palmer Street, >>> Haifa 33031, Israel >>> e-mail1: yuval.arbel@carmel.ac.il >>> e-mail2: yuval.arbel@gmail.com >> >> >> >> -- >> Dr. Yuval Arbel >> School of Business >> Carmel Academic Center >> 4 Shaar Palmer Street, >> Haifa 33031, Israel >> e-mail1: yuval.arbel@carmel.ac.il >> e-mail2: yuval.arbel@gmail.com >> * >> * For searches and help try: >> * http://www.stata.com/help.cgi?search >> * http://www.stata.com/support/faqs/resources/statalist-faq/ >> * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/