微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将面板数据中的年度数据扩展为半年度数据

我有一个面板数据集,其中包含 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 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。