Как я могу установить переменную времени, которая занимает 2 месяца (раз в два месяца)? - PullRequest
1 голос
/ 28 марта 2019

Я не могу найти способ определения временной переменной в Stata, которая занимает два месяца. На других форумах я нашел способ определить интервалы в 3 месяца (кварталы) или определить его как семестр, но это не то, что я ищу.

У меня есть такой набор данных

year month observation
2000   1        40
2000   2        10
2000   3        50
2000   4        10

Я создал переменную bi_month как

year month bi_month observation
2000   1       1        40
2000   2       1        10
2000   3       2        50
2000   4       2        10

но здесь я не могу использовать ни следующий код, ни команду tsset (поскольку в ней нет команды определения данных раз в два месяца)

 gen mdate = ym(year, bi_month)
 format mdate %tm

потому что Stata читает bi_month как указание месяцев с 1 по 12.

1 Ответ

2 голосов
/ 28 марта 2019

Раз в два месяца (или раз в два месяца) мне не кажется особенно прозрачным термин.Я рекомендую два раза в месяц и два месяца для двух интерпретаций.

Основная проблема здесь, кажется, заключается в желании работать с агрегацией ежемесячных данных в двухмесячные данные, особенно интервалы январь-февраль, ..., ноябрь-декабрь.С этой целью я предлагаю представлять двухмесячные периоды к первому месяцу каждого.

clear 
input year month whatever 
2000   1        40
2000   2        10
2000   3        50
2000   4        10
end 

gen mdate = ym(year, month) 

gen m2date = 2 * floor(mdate/2) 

format m*date %tm 

list


     +-------------------------------------------+
     | year   month   whatever    mdate   m2date |
     |-------------------------------------------|
  1. | 2000       1         40   2000m1   2000m1 |
  2. | 2000       2         10   2000m2   2000m1 |
  3. | 2000       3         50   2000m3   2000m3 |
  4. | 2000       4         10   2000m4   2000m3 |
     +-------------------------------------------+

Теперь такие данные не могут быть tsset или xtset с использованием новой двухмесячной даты, поскольку каждая такая дата не встречается уникально в наборе данных.

Но предположим, что вы уменьшаете свой набор данных так, что каждая двухмесячная дата встречается только один раз (или, максимально, один раз на панель).Теперь tsset или xtset находятся в пределах досягаемости, а необходимый поворот - просто установить delta(2).

    collapse whatever, by(year m2date) 

    tsset m2date, delta(2) 

    list 

    +--------------------------+
     | year   m2date   whatever |
     |--------------------------|
  1. | 2000   2000m1         25 |
  2. | 2000   2000m3         30 |
     +--------------------------+

Представление каждого двухмесячного периода вторым месяцем каждого является одинаково систематическим.Просто добавьте 1 к рецепту для m2date выше.

Примечание. Строго говоря, xtset требует только идентификатора панели и не настаивает на том, чтобы время происходило не более одного раза для каждой панели.Я не уверен, что это широко полезно, но это другая история.

...