Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
Subject | Re: st: Re: Fill Missing values at the End |
Date | Wed, 8 Jan 2014 15:44:56 +0000 |
Sorry, I missed one complication. You need to take logarithms before you extrapolate and exponentiate afterwards. That isn't much more complicated. gen y2 = log(y) gen ismissing = missing(y) bysort ismissing name (year) : replace y2 = . if inlist(_n, 2, 3, 4, _N-3, _N-2, _N-1) drop ismissing bysort name (year): ipolate y2 year, gen(y3) epolate You want to use gen y_new = cond(missing(y), exp(y3), y) Nick njcoxstata@gmail.com On 8 January 2014 15:37, Nick Cox <njcoxstata@gmail.com> wrote: > This appears to be the third posting of this question. (In fact, as I > wrote this, yet another posting appeared.) > > Please see the Statalist FAQ at > > http://www.stata.com/support/faqs/resources/statalist-faq/#noanswer > > to see that is one more than allowed. > > You also sent me personal mail. > > Again, not to do that is explained in the FAQ > > http://www.stata.com/support/faqs/resources/statalist-faq/#private > > Repeating a question (or minor variants of it) again and again is > _not_ likely to get more attention for your question than you would > otherwise get. In fact, it draws attention to yourself as someone who > (apparently) didn't read the FAQ carefully and/or doesn't respect the > list. No one is obliged to answer anything on Statalist. If you want a > tame consultant, hire one and pay accordingly. > > In this case David Ashcraft posted a suggestion > > http://www.stata.com/statalist/archive/2014-01/msg00206.html > > to which you replied > > http://www.stata.com/statalist/archive/2014-01/msg00207.html > > I don't understand the reply, but I don't think it explained why > David's suggestion didn't work. > > In any case, your recipe is to use the last known value and the value > 4 years before that and extrapolate forward, or to use the first known > value and the value 4 years after that and extrapolate backward. You > don't need new code to do that. It is an application of -ipolate-. > > 1. Clone your variable. > > 2. Replace the 4th, 3rd, 2nd last known values with missing. > > 3. Replace the 2nd, 3rd, 4th known values with missing. > > 4. Use -ipolate-. > > gen y2 = y > gen ismissing = missing(y) > bysort ismissing name (year) : replace y2 = . if inlist(_n, 2, 3, 4, > _N-3, _N-2, _N-1) > drop ismissing > bysort name (year): ipolate y2 year, gen(y3) epolate > > You want to use > > gen y_new = cond(missing(y), y3, y) > > I addressed the restriction only to apply when there are 5 or fewer > values missing in an earlier reply, so I won't repeat that here. > > http://www.stata.com/statalist/archive/2014-01/msg00187.html > > Nick > njcoxstata@gmail.com > > > On 8 January 2014 15:05, Sadia Khalid <sadiakhalid234@gmail.com> wrote: > >> I have working on Panel data. For some of the individuals end values >> are missing. I have to fill these values by first calculating the >> growth of the known five values. >> >> Like for the individual Aqueela values for the year 1996 – 2000 are >> missing. I will first calculate the growth rate of values from >> 1991-1995. the formula for calculating the growth rate is >> =((41.6/39.9)^(1/(5-1))-1). The growth rate is 1.05%. >> now the value in 1996 = value in 1995*(1+growth rate). >> >> And value in 1997= value in 1996 * (1+growth rate). >> >> And so on. >> >> For the second individual starting values are missing from 1996-2000 >> First I will have to find the r=growth rate of values from 1991-1995. >> Than the value in 1996 =value in 1995*(1+ growth rate) and >> value in 1997 =value in 1996/(1+ growth rate) and so on. >> >> >> for the last indiviual values are missing from 1995-2000 >> if for any indiviual more than 5 values are missing do not fill that. >> any code for this >> >> what i have >> >> what i have >> year name y >> 1990 Aqueela 50.1 >> 1991 Aqueela 39.9 >> 1992 Aqueela 93.4 >> 1993 Aqueela 53.4 >> 1994 Aqueela 5.9 >> 1995 Aqueela 41.6 >> 1996 Aqueela >> 1997 Aqueela >> 1998 Aqueela >> 1999 Aqueela >> 2000 Aqueela >> 1990 Abida 57.0 >> 1991 Abida 44.3 >> 1992 Abida 41.3 >> 1993 Abida 92.3 >> 1994 Abida 42.2 >> 1995 Abida 56.0 >> 1996 Abida >> 1997 Abida >> 1998 Abida >> 1999 Abida >> 2000 Abida >> 1990 Zubaida 68.5 >> 1991 Zubaida 51.0 >> 1992 Zubaida 41.7 >> 1993 Zubaida 91.5 >> 1994 Zubaida 40.7 >> 1995 Zubaida >> 1996 Zubaida >> 1997 Zubaida >> 1998 Zubaida >> 1999 Zubaida >> 2000 Zubaida >> >> and what i want >> >> year name y >> 1990 Aqueela 50.1 >> 1991 Aqueela 39.9 >> 1992 Aqueela 93.4 >> 1993 Aqueela 53.4 >> 1994 Aqueela 5.9 >> 1995 Aqueela 41.6 >> 1996 Aqueela 96.6 >> 1997 Aqueela 113.0 >> 1998 Aqueela 132.0 >> 1999 Aqueela 154.4 >> 2000 Aqueela 180.4 >> 1990 Abida 57.0 >> 1991 Abida 44.3 >> 1992 Abida 41.3 >> 1993 Abida 92.3 >> 1994 Abida 42.2 >> 1995 Abida 82.7 >> 1996 Abida 96.6 >> 1997 Abida 113.0 >> 1998 Abida 132.0 >> 1999 Abida 154.4 >> 2000 Abida 180.4 >> 1990 Zubaida 68.5 >> 1991 Zubaida 51.0 >> 1992 Zubaida 41.7 >> 1993 Zubaida 91.5 >> 1994 Zubaida 40.7 >> 1995 Zubaida >> 1996 Zubaida >> 1997 Zubaida >> 1998 Zubaida >> 1999 Zubaida >> 2000 Zubaida >> > > * > * 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/