Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Assign fiscal year-end values to a specific event in time
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Assign fiscal year-end values to a specific event in time
Date
Tue, 28 Jan 2014 17:30:02 +0000
I call that an interpolation problem. Why I do so follows from the
definition in the post I cited.
-nnipolate- (SSC) interpolates the nearest non-missing value,
optionally within panels. You can make this conditional on the
distance (time) to the nearest non-missing value being less than some
critical value.
_When_ was the previous non-missing value? This is just an extension of
http://www.stata.com/support/faqs/data-management/replacing-missing-values/
Assume -value-, -id-, -time-.
gen previous_time = time if !missing(value)
bysort id (time) : replace previous_time = previous_time[_n-1] if missing(value)
gen next_time = time if !missing(value)
gen negtime = -time
bysort id (negtime) : replace next_time = next_time[_n-1] if missing(value)
gen distance = min(time - previous_time, next_time - time)
Then any use of -nnipolate- can be conditionally on -distance-.
Nick
[email protected]
On 28 January 2014 14:47, Torsten Häberle <[email protected]> wrote:
> Hi Nick,
>
> thanks for your answer. It's not an interpolation problem. I just want
> to assign either the last available fiscal year-end value (before the
> event) or the first available fiscal year-end value (after the event)
> to the event date.
>
> But as you said, Stata keeps on going until it reaches the next
> non-missing. But this is wrong in my case. Values are only valid in
> this time window:
> - Either 12 months before the event (as in dataset 1) or
> - 12 months after the event (as in dataset 2)
>
> But Stata should not copy a value further in the future if let's say
> the next fiscal year-end value is missing.
>
> I just need an approximate value on event date. For dataset 1, this is
> a value from the previous 12 months. For dataset 2, it is one from the
> following 12 months.
>
> Do you know what I mean?
>
> Thanks for helping
>
>
> 2014-01-28 Nick Cox <[email protected]>:
>> Yes; if you copy previous values to replace missing values, Stata
>> keeps on going until it reaches the next non-missing.
>>
>> But what are you trying to do here? Like many others, your problem
>> seems more of an interpolation problem, and copying the last known
>> value is not necessarily the best way forward. See
>>
>> http://www.stata.com/statalist/archive/2014-01/msg00315.html
>>
>> for some general comments and mentions of Stata commands for interpolation.
>>
>> Nick
>> [email protected]
>>
>> On 27 January 2014 21:36, miriam geringer <[email protected]> wrote:
>>
>>> In terms of my example:
>>>
>>> Company Date Year Price Event Month*
>>> A 31Okt 1988 334
>>> A 29Nov 1988 10 335
>>> A 31Dez 1988 336
>>> A 31Jan 1989 337
>>> A 14Feb 1989 EventX 338
>>> A 28Feb 1989 339
>>> A 31Mar 1989 340
>>> B
>>> B
>>> ....
>>>
>>> *Month = Numerical date variable, monthly frequency. Stata command = mofd(Date)
>>>
>>> This is my command: bysort Company (Month): replace Price =
>>> Price[_n-1] if missing(Price)
>>>
>>>>>> then 10 is spread forward until the next fiscal year-end value is available
>>>>>> Basically, the price indicates that the fiscal year ends. In our case, on 29Nov 1988, there is a price available. This means the fiscal year ends here. And this price shall now be spread forward until the next fiscal year-end arrives.
>>>>>> What I wonder now: What happens if the next fiscal year-end value (in our example 1989) is now missing?
>>>
>>> Example:
>>>
>>> Company Date Year Price Event Month*
>>> A 31Okt 1988 334
>>> A 29Nov 1988 10 335
>>> A 31Dez 1988 10 336
>>> A 31Jan 1989 10 337
>>> A 14Feb 1989 10 EventX 338
>>> A 28Feb 1989 10 339
>>> A 31Mar 1989 10 340
>>> A 30Apr 1989 10
>>> A 31May 1989 10
>>> A 30Jun 1989 10
>>> A 31Jul 1989 10
>>> A 31Aug 1989 10
>>> A 30Sep 1989 10
>>> A 31Okt 1989 .
>>>
>>> If the price on 31 Okt 1989 (the fiscal year-end) is missing, Stata
>>> should NOT replace the missing value with the price (10) from the
>>> previous fiscal year 1988. Instead, it should remain missing. But I
>>> think my command doesn't consider this?
>>
>> 2014-01-26 Nick Cox <[email protected]>:
>>
>>>> That does not help me in terms of your example or explanation.
>>>>
>>>> A strategy is to "spread" values to other observations for the same
>>>> firm and then look for intersections. My Stata Journal article just
>>>> cited gives examples.
>>
>> On 26 January 2014 11:51, miriam geringer <[email protected]> wrote:
>>
>>>>> I have two variables, which tell me when the fiscal year ends.
>>>>> An exact variable, e.g. 31Jul 1994 and a year variable, e.g. 1994.
>>
>> 2014-01-26 Nick Cox <[email protected]>:
>>
>>>>>> How can you tell Stata in terms of these data when fiscal years end?
>>>>>>
>>>>>> What kind of variable is -Date- (numeric or string)? Are you using
>>>>>> Stata dates (see -help dates and times-)?
>>>>>>
>>>>>> There is much discussion of technique in
>>>>>> http://www.stata-journal.com/article.html?article=dm0055
>>
>> On 25 January 2014 19:19, miriam geringer <[email protected]> wrote:
>>
>>>>>>> I have the following two datasets:
>>>>>>>
>>>>>>> 1)
>>>>>>>
>>>>>>> Company Date Year Price Event
>>>>>>> A 31Okt 1988
>>>>>>> A 29Nov 1988 10
>>>>>>> A 31Dez 1988
>>>>>>> A 31Jan 1989
>>>>>>> A 14Feb 1989 EventX
>>>>>>> A 28Feb 1989
>>>>>>> A 31Mar 1989
>>>>>>> B
>>>>>>> B
>>>>>>> ....
>>>>>>>
>>>>>>> Basically, there is some event going on in 1989. This event can happen
>>>>>>> in every month, on every day. I want to assign a specific value from
>>>>>>> the previous fiscal-year to the event in 1989. To be more precise, I
>>>>>>> want to assign the fiscal year-end price from fiscal year 1988 to the
>>>>>>> event which happens - in our example - on 14Feb 1989. In the end, I
>>>>>>> only need to know in what year the event happened and the
>>>>>>> corresponding price from the previous fiscal year-end. Sometimes,
>>>>>>> there is no price available in the previous fiscal year, then it
>>>>>>> should be just marked as missing value.
>>>>>>>
>>>>>>> ---- Fiscal Year-End 1988 ------- Event -------- Fiscal Year-End 1889
>>>>>>>>>>>> Assign Fiscal Year-End 1988 to Event
>>>>>>>
>>>>>>> The fiscal year can end in every month and it is possible that, for
>>>>>>> example, the fiscal year ends on 31Jan 1989 and the event occurs on
>>>>>>> 14Feb 1989. Then the 31Jan 1989 value shall be assigned.
>>>>>>>
>>>>>>> It should be something like:
>>>>>>> If Stata finds an EventX in fiscal year 1989 of Company A, go to
>>>>>>> fiscal year 1988 and take the 1988 fiscal year-end price of Company A
>>>>>>> and assign it to the EventX in 1989.
>>>>>>>
>>>>>>> 2) The second dataset is identical. However, this time I want to
>>>>>>> assign the first available fiscal year-end value.
>>>>>>>
>>>>>>> Company Date Year Price Event
>>>>>>> A 31Okt 1988
>>>>>>> A 29Nov 1988
>>>>>>> A 31Dez 1988
>>>>>>> A 31Jan 1989
>>>>>>> A 14Feb 1989 EventY
>>>>>>> A 28Feb 1989
>>>>>>> A 31Mar 1989 10
>>>>>>> B
>>>>>>> B
>>>>>>> ....
>>>>>>>
>>>>>>> In this example, let's assume the year ends on 31Mar 1989 and on that
>>>>>>> date, the price is 10 (the fiscal year-end price). I want to assign
>>>>>>> this price to the row with the EventY and 14Feb. The same as in
>>>>>>> dataset 1, just the other way around.
>>>>>>>
>>>>>>> It should be something like:
>>>>>>> If Stata finds an EventY in year 1989 of Company A, take the first
>>>>>>> available fiscal year-end value (first one available after the event
>>>>>>> occured). The event can occur in February and the fiscal year can
>>>>>>> could end shortly after. Just take the next available value, no matter
>>>>>>> whether there is a calendar year shift in between or not.
>> *
>> * 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/
*
* 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/