获取年度数据,每月制作数据并进行插值

时间:2017-05-30 14:58:23

标签: interpolation stata

我的团队和我正在尝试在我们拥有的年度数据集上使用Stata。我们需要每月制作这些数据并填补空白。

  data1 data2 data3 data4
  year1 year1 year1 year1
  year2 year2 year2 year2

等等

我知道有类似的问题,但是我无法找到每年到每月处理的内容。

1 个答案:

答案 0 :(得分:0)

正如已经评论的那样,这个问题在几个关键细节和论坛标准之下是模糊的,没有提供可以使用或显示任何代码尝试的数据示例!

以下示例指出了一些需要做出的决定,而不是(不能)是一个完整的教程。

作为沙盒,我们使用Grunfeld数据并仅保留第一个面板。这给了我们20年的观察。将此方法扩展到多个面板数据并不困难。

webuse grunfeld, clear
keep if company == 1

我们将把年度值分配到7月份。其他选择显然是可能的。因此,我们需要插入其他11个月的值。获取月度数据的一种方法是添加11个观察值,填充具有1到6个月和8到12个月值的值。

gen month = 7
set obs 31
replace month = _n - 20 in 21/26
replace month = _n - 19 in 27/31

我们可以使用fillin获得所有(月,年)组合,除了比我们想要的更多。在某些观察中,set obs命令的副作用在year上缺少值。

fillin month year
drop if missing(year)

现在我们需要一个月度日期变量。

gen mdate = ym(year, month)
format mdate %tm 

现在进行插值,有几种方法可以做到。一个具有各种方法的命令是mipolate,必须先从SSC安装才能使用它。我们任意选择pchip。此处未显示图表,但应将其视为必不可少的检查,以确保您获得了明智的结果。一个小但可能有用的细节是用开放符号绘制插值,用加号实际绘制使得明显哪个是哪个。

* the command below need only be issued once 
ssc inst mipolate 
mipolate mvalue mdate, gen(mvalue2) pchip
scatter mvalue2 mvalue mdate, ms(Oh +)

在其他问题(可能是大多数)中,每月数据集和年度数据集在插值之前merge。在月度日期变量上插值仍然至关重要。如果你想要一个获取值的命令,查看年度日期变量,然后在月度日期变量上进行插值,你可以拥有它,但你需要自己编写它!

每个感兴趣的结果都需要单独插值。

虽然这应该是显而易见的,但请注意,这里没有任何内容可以推动季节性周期,无论是平均周期还是个别年份。似乎最想要这种情况的经济学家通常不会介意或期望,但要小心。

类似地,插值通常最好这样做:变换(例如对数) - 插值 - 反变换。因此,例如,当变化基本上是乘法而不是加法时,这将是一个好主意。

(统计上,当使用确定性规则合成某些变量的11/12数据时,许多人可能对样本大小或自由度感到不安。)

这是所有面板的扩展:

webuse grunfeld, clear
gen month = 7
* general recipe: add 11 observations 
set obs 211 
replace month = _n - 200 in 201/206
replace month = _n - 199 in 207/211
fillin company month year
drop if missing(company, year)
gen mdate = ym(year, month)
format mdate %tm 
mipolate mvalue mdate, gen(mvalue2) pchip by(company) 
scatter mvalue2 mvalue mdate, ms(Oh +) by(company)