如何设置需要两个月(两个月一次的数据)的时间变量?

时间:2019-03-28 13:11:13

标签: datetime time time-series stata

我找不到在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 个答案:

答案 0 :(得分:2)

在我看来,每两个月(或每两个月一次)这个术语似乎并不透明。我建议每月两次和每月两次进行两种解释。

看来,这里的主要问题是希望将月度数据汇总为两个月数据,特别是间隔时间为1月2月,...,11月至12月。为此,我建议在每个月的第一个月代表两个月的期间。

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 |
     +-------------------------------------------+

现在使用新的两个月日期不能再tssetxtset使用此类数据,因为每个这样的日期在数据集中都不是唯一的。

但是假设您减少了数据集,以使每个两个月的日期仅出现一次(或者每个面板最多一次)。现在tssetxtset触手可及,而所需的扭曲只是设置delta(2)

    collapse whatever, by(year m2date) 

    tsset m2date, delta(2) 

    list 

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

用每个月的第二个月来表示每个两个月的周期是同样系统的。只需在上面m2date的配方中添加1。

注意:严格xtset仅需要一个面板标识符,而不是每个面板最多坚持一次。我不确定这是否有用,但这是另一回事了。