2016-04-03 25 views
1

假設我們有一個如下季度GDP變化數據:表格從一季報系列月度序列

  Country 
1999Q3 0.01 
1999Q4 0.01 
2000Q1 0.02 
2000Q2 0.00 
2000Q3 -0.01 

現在,我想這變成基於例如每月系列作爲代表經濟狀況的一項措施,前兩個季度的平均值。即與上述數據,我想產生以下內容:

  Country 
2000-01 0.01 
2000-02 0.01 
2000-03 0.01 
2000-04 0.015 
2000-05 0.015 
2000-06 0.015 
2000-07 0.01 
2000-08 0.01 
2000-09 0.01 
2000-10 -0.005 
2000-11 -0.005 
2000-12 -0.005 

這是這樣,我可以與其他每月系列運行迴歸。從更頻繁到不頻繁的數據彙總很容易,但我該如何做到相反的方向?

編輯。 看來,使用spline將是正確的做法。那麼問題是,在國家系列開始時如何處理不同數量的NA,在splineapply之間進行。像往常一樣,數據框中有多個國家作爲列,並且在系列開始時它們的NA數量是不同的。

+0

您是否嘗試過approx() - 將插入數據 –

+0

謝謝,這導致尋找'splinefun',似乎三次樣條插值是在經濟學中這樣做的標準方法。雖然這會導致串行關聯,但是我只需要使用Newey-West。 – Roope

回答

3

假設值在季末,轉換爲動物園"yearmon"班級指數。然後執行滾動意味着給予z.mu。現在將其與包含所有月份的零寬度動物園對象合併,並使用na.spline來填充缺失值(或使用na.locfna.approx進行不同形式的插值)。可以選擇使用fortify.zoo將其轉換回data.frame。

library(zoo) 

z <- zoo(coredata(DF), as.yearmon(as.yearqtr(rownames(DF)), frac = 1)) 
z.mu <- rollmeanr(z, 2, partial = TRUE) 
ym <- seq(floor(start(z.mu)), floor(end(z.mu)) + 11/12, 1/12) 
z.ym <- na.spline(merge(z.mu, zoo(, ym))) 

fortify.zoo(z.ym) 

,並提供:

 Index  Country 
1 Jan 1999 -0.065000000 
2 Feb 1999 -0.052222222 
3 Mar 1999 -0.040555556 
4 Apr 1999 -0.030000000 
5 May 1999 -0.020555556 
6 Jun 1999 -0.012222222 
7 Jul 1999 -0.005000000 
8 Aug 1999 0.001111111 
9 Sep 1999 0.006111111 
10 Oct 1999 0.010000000 
11 Nov 1999 0.012777778 
12 Dec 1999 0.014444444 
13 Jan 2000 0.015000000 
14 Feb 2000 0.014444444 
15 Mar 2000 0.012777778 
16 Apr 2000 0.010000000 
17 May 2000 0.006111111 
18 Jun 2000 0.001111111 
19 Jul 2000 -0.005000000 
20 Aug 2000 -0.012222222 
21 Sep 2000 -0.020555556 
22 Oct 2000 -0.030000000 
23 Nov 2000 -0.040555556 
24 Dec 2000 -0.052222222 

注:用於重現的形式輸入DF是:

Lines <- "   Country 
1999Q3 0.01 
1999Q4 0.01 
2000Q1 0.02 
2000Q2 0.00 
2000Q3 -0.01" 

DF <- read.table(text = Lines) 

更新:本來問問題向前邁進最後的價值,但爲更改爲要求樣條插補,因此答案已相應更改。也改爲在1月份開始,並在12月結束,現在假設數據爲季末。

相關問題