首页 > 解决方案 > 面板数据中的不活动持续时间变量(Stata)

问题描述

我有一个过去 30 年美国制造业工人的数据集,我对以下变量特别感兴趣:

  1. 第一个制造工作的月份和年份,分别记录并命名为“start_month_job_1”和“start_yr_job_1”。
  2. 离开第一个制造工作的月份和年份,分别记录并命名为“end_month_job_1”和“end_yr_job_1”。
  3. 离职原因(如退休、解雇、工厂停工等),命名为“leaving_reason”
  4. 第二个制造工作的月份和年份,分别记录并命名为“start_month_job_2”和“start_yr_job_2”。
  5. 离开第二个制造工作的月份和年份,分别记录并命名为“end_month_job_2”和“end_yr_job_2”。

我正在尝试创建一个变量来衡量经济不活动/闲置的持续时间。我将“经济不活动的持续时间”定义为离开第一份工作和开始另一份工作之间的时间差。我创建了一个变量,它可以通过以下年份实现这一目标:

gen econ_inactivity_duration_1 = start_yr_job_2 - end_yr_job_1 
replace econ_inactivity_1 = 2018 - end_yr_job_1 if missing(start_yr_job_2 ) /// In cases where a worker never starts a second job until 2018, which is the latest year measured in the survey.

但是,我想实际创建一个economic_inactivity_duration 变量,该变量考虑到月份和年份的差异,分别用于开始和离开工作。例如,第 1 行中的工人的持续时间是 2 个月,介于 1993 年 5 月和 1993 年 7 月之间,而不是我上面的代码计算的零。

dataex start_month_job_1 byte start_yr_job_1 byte end_month_job_1 byte end_yr_job_1 byte start_month_job_2 byte start_yr_job_2 byte end_month_job_2 byte end_yr_job_2 byte leaving_reason

 3 1990  5 1993  7 1993  4 1994 "Firm shutdown"
 1 2003  7 2015  .    .  .    . "job automation"
98 1979 98 2004  .    .  .    . "Firm shutdown"
98 1975 98 2010 98 2010 98 2015 "job automation"
 1 1983 12 1985  1 1986  .    . "Firm shutdown"
98 1996 98 1998  .    .  .    . "Firm shutdown"

标签: statapanel-data

解决方案


可能有更好的方法,但这里有一个粗略的方法。

* Data example
input end_month_job_1 end_yr_job_1 start_month_job_2 start_yr_job_2
5 1993 7 1993
end

* Calculate months since 1960
gen j1_end = (end_yr_job_1 - 1960) * 12 + end_month_job_1
gen j2_start = (start_yr_job_2 - 1960) * 12 + start_month_job_2

* Calculate difference
gen wanted = j2_start - j1_end

* Check difference is positive
assert wanted > 0

list

     +------------------------------------------------------------------------+
     | end_mo~1   end_yr~1   s~mont~2   s~yr_j~2   j1_end   j2_start   wanted |
     |------------------------------------------------------------------------|
  1. |        5       1993          7       1993      401        403        2 |
     +------------------------------------------------------------------------+

推荐阅读