创建周的自定义定义

Create Custom Definition of Week

我有每日数据,想将它们转换为每周数据,使用以下定义。每周一表示第i周的开始,周日表示第i周的结束

我的日期变量名为 day,并且已经具有 %td 格式。我有一种感觉,我应该使用 dow() 函数,结合 egen, group() 但我很难让它完全正确。

如果您的数据是每周一次,并且只有星期一的数据,那么您的日期变量就可以了,如果您使用 tsset 或 [=,您需要做的就是声明 delta(7) 13=]。

如果您的数据是一周两天或更多天,并且您希望 collapsecontract 为每周数据,那么您可以像这样转换为合适的时间基准:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float date
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
end
format %td date


gen wdate = cond(dow(date) == 1, date, cond(dow(date) == 0, date - 6, date - dow(date) + 1))

format wdate %td
gen dow = dow(date) 
list, sepby(wdate)

     +-----------------------------+
     |      date   dow       wdate |
     |-----------------------------|
  1. | 01jun2020     1   01jun2020 |
  2. | 02jun2020     2   01jun2020 |
  3. | 03jun2020     3   01jun2020 |
  4. | 04jun2020     4   01jun2020 |
  5. | 05jun2020     5   01jun2020 |
  6. | 06jun2020     6   01jun2020 |
  7. | 07jun2020     0   01jun2020 |
     |-----------------------------|
  8. | 08jun2020     1   08jun2020 |
  9. | 09jun2020     2   08jun2020 |
 10. | 10jun2020     3   08jun2020 |
 11. | 11jun2020     4   08jun2020 |
 12. | 12jun2020     5   08jun2020 |
 13. | 13jun2020     6   08jun2020 |
 14. | 14jun2020     0   08jun2020 |
     +-----------------------------+

简而言之,按开始的星期一索引周。现在 collapsecontract 您的数据集。当然,如果您有面板数据或纵向数据,也可能涉及一些标识符。 delta(7) 对于任何依赖于 tssetxtset 的东西来说仍然是必不可少的。

使用 egen 映射到连续的整数没有坏处,但也没有任何优势。

这背后的一个主题是 Stata 自己的周是特殊的,总是从 1 月 1 日开始第 1 周,第 52 周总是有 8 或 9 天。有关 Stata 周的更多信息,请参阅论文 here and here ,其中包括此答案中给出的建议等等。