2016-04-03 29 views
1

から毎月のシリーズフォーム:我々は次のように四半期ごとのGDPの変化データを持っていると仮定し、四半期シリーズ

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

、私は例えばに基づいて毎月のシリーズにこれを有効にしたいと思います経済状況を表す一つの尺度として、過去2四半期の平均。私。上記のデータで、私は次を生成したいと思います:

  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を使用すると、これを行う正しい方法になると思われます。問題は、splineapplyとすると、国の初めにさまざまな量のNAをどのように処理するのかということです。データフレームには、いつものように複数の国が列としてあり、シリーズの初めにNAの量がさまざまです。

+0

あなたはapprox()を試してみましたか?データを補間します –

+0

これは、 'splinefun'を見つけることにつながりました。キュービックスプライン補間が経済学でこれを行う標準的な方法です。それは連続的な相関関係につながりますが、私はNewey-Westを使用するだけです。 – Roope

答えて

3

"yearmon"クラスインデックスを使用して動物園に変換する値が四半期の終わりにあると仮定します。次に、ローリング平均を実行してz.muを与えます。今度はすべての月を含むゼロ幅の動物園オブジェクトとマージし、欠損値を埋めるためにna.splineを使用してください(補間の形式によってはna.locfまたはna.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月に終了するように変更され、データは四半期終了のためのものとみなされます。

関連する問題