将面板数据中的年度数据扩展到半年度数据

Expanding annual to semiannual data in panel data

我有一个面板数据集,其中包含 1960 年至 2050 年间 30 个经合组织国家/地区年轻人的比例(变量名为值)。

数据仅以每年一次的频率提供,但我希望以每半年一次的频率提供,因此我想扩展和插入数据。目标是每半年获得每个国家/地区的价值。

我扩展了数据集并分配了重复项 dupe=1 以进行跟踪。然后我生成了一个名为 year_half 的变量,原始值(上半年)为 1,重复值(下半年)为 2。然后我插值。代码是:

expand 2, gen(dupe)

gen year_half = 1 if dupe==0
replace year_half = 2 if dupe==1

bysort year : gen hdate = yh(year, year_half)
by year : replace value = . if dupe==1

ipolate value hdate, gen(linear) epolate

我没有收到任何错误代码,但我也没有得到正确的结果。变量 linear 只有一些观察值的插值(其余缺失),它似乎不对应于 year_half、hdate 或 dupe。有谁知道如何解决这个问题?

这似乎是你所做的事情的本质,除了面板结构需要重复by country:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(year value)
2010 2
2011 4
2012 6
end

expand 2
bysort year : replace value = . if _n == 2
by year : gen halfyear = yh(year, _n)

ipolate value halfyear , gen(value2) epolate

list, sep(0)

     +----------------------------------+
     | year   value   halfyear   value2 |
     |----------------------------------|
  1. | 2010       2        100        2 |
  2. | 2010       .        101        3 |
  3. | 2011       4        102        4 |
  4. | 2011       .        103        5 |
  5. | 2012       6        104        6 |
  6. | 2012       .        105        7 |
     +----------------------------------+

但是,你的方法很武断。你把年值当成上半年应用,如果你把它应用到下半年,会得到不同的答案。

这是一个更对称的过程:

 clear
 input float(year value)
 2010 2
 2011 4
 2012 6
 end
    
 expand 2 
    
 sort year 
 gen VALUE = (value[_n-1] + 2 * value + value[_n+1])/4 
 by year : gen halfyear = yh(year, _n)
 ipolate VALUE halfyear, gen(value2) epolate 
    
 list, sep(0) 
 
      +------------------------------------------+
     | year   value   VALUE   halfyear   value2 |
     |------------------------------------------|
  1. | 2010       2       .        100      1.5 |
  2. | 2010       2     2.5        101      2.5 |
  3. | 2011       4     3.5        102      3.5 |
  4. | 2011       4     4.5        103      4.5 |
  5. | 2012       6     5.5        104      5.5 |
  6. | 2012       6       .        105      6.5 |
     +------------------------------------------+

编辑对面板数据的初步概括(未测试)

  expand 2 
  sort country year 
  by country: gen VALUE = (value[_n-1] + 2 * value + value[_n+1])/4 
  by country year : gen halfyear = yh(year, _n)
  by country: ipolate VALUE halfyear, gen(value2) epolate