Как ограничить максимальный пропущенный разрыв интерполированных значений - PullRequest
0 голосов
/ 28 мая 2018

При интерполяции или экстраполяции (используя ipolate с или без epolate) пропущенных значений, возможно ли либо заранее ограничить размер пропущенного промежутка, который необходимо интерполировать (или экстраполировать), либо измерить размер промежутка задним числом?

На самом деле я хочу ограничить максимальное количество последовательных интерполяций (мои данные годовые) тремя годами.

1 Ответ

0 голосов
/ 28 мая 2018

Вы всегда можете рассчитать длину заклинаний, а затем использовать ipolate только условно.Здесь я использую tsspell из SSC, чтобы вычислить такие длины, введенные искусственно:

webuse grunfeld, clear 
set seed 2803 
replace invest = . if runiform() < 0.2 
tsset company year 
* need previous -ssc install tsspell- to run this 
tsspell , cond(missing(invest)) 
egen length = max(_seq), by(company _spell) 
tab length 
list company year invest if length >= 3, sepby(company _spell)

     +-------------------------+
     | company   year   invest |
     |-------------------------|
 13. |       1   1947        . |
 14. |       1   1948        . |
 15. |       1   1949        . |
     |-------------------------|
 41. |       3   1935        . |
 42. |       3   1936        . |
 43. |       3   1937        . |
     +-------------------------+

ipolate invest year if length <= 2, by(company) epolate
...