Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: Running Product Function

 From Nick Cox 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 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
>>>>>>>>>> South Australia
>>>>>>>>
>>>>>>>>
>>>>>>>> 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
>>>>> 4 Shaar Palmer Street,
>>>>> Haifa 33031, Israel
>>>>> e-mail1: yuval.arbel@carmel.ac.il
>>>>> e-mail2: yuval.arbel@gmail.com
>>>>
>>>>
>>>>
>>>> --
>>>> Dr. Yuval Arbel
>>>> 4 Shaar Palmer Street,
>>>> Haifa 33031, Israel
>>>> e-mail1: yuval.arbel@carmel.ac.il
>>>> e-mail2: yuval.arbel@gmail.com
>>>
>>>
>>>
>>> --
>>> Dr. Yuval Arbel
>>> 4 Shaar Palmer Street,
>>> Haifa 33031, Israel
>>> e-mail1: yuval.arbel@carmel.ac.il
>>> e-mail2: yuval.arbel@gmail.com
>>
>>
>>
>> --
>> Dr. Yuval Arbel
>> 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/
```