2016-05-02 13 views
0

年次データがあります。データを分割し、各サブセットごとに個別の回帰を実行する必要があります。時系列回帰のデータを分割する

私の場合、Gov支出、経済成長と景気後退のダミー(膨張の場合は1、後退の場合は0)という変数があります。

私のデータの一部を以下に示します。

出力= L1(出力)+ GOV + L1(GOV)


obs output  gov  recession <br/> 
1 0.00882917 0.039961003 0 <br/> 
2 0.015555371 0.229567089 1 <br/> 
3 0.023108089 -0.032468535 1 <br/> 
4 0.083470801 0.282564584 0 <br/> 
5 0.181719693 1.523028403 1 <br/> 
6 0.171951664 1.44379044 0 <br/> 
7 0.124292839 -0.55404903 0 <br/> 
8 0.138767158 -1.446050184 1 <br/> 
9 -0.137507301 -0.276697354 1 <br/> 
10 -0.07396658 -0.5196439 1 <br/> 
11 0.026799992 -0.13379183 0 <br/> 
12 0.000107547 -0.053192635 0 <br/> 
13 0.017405451 -0.027499262 1 <br/> 
14 0.004882142 -0.0077849 0 <br/> 
15 -0.017568837 0.030565404 1 <br/> 

は、私は、次のモデルを実行する必要があります

この回帰を2回実行する必要があります.recession = 1と1回、recession = 0となると1回実行します。問題は遅れです。私はサブセットrecession = 0のためのモデルを実行すると、2000年recession = 1にし、2001年recession = 0で、私は遅れが必要な場合は、2000年

として取られるので、私は `dynlm」パッケージを使用しようとしました。このパッケージによれば、遅延は以下のように書かれる:

"d(x、k)がdiff(x、lag = k)であり、L (x、k)はlag(x、lag = -k)であり、符号の違いに注意する。kのデフォルトはどちらの場合も1である.L()の場合、ベクトル値、 (Y、1:4)」

私はデータフレームに私の変数を入れて、次のコードを実行してみました:

df <- data.frame(ts(output), ts(gov), recession) 

model <- dynlm(output ~ lag(output,-1) + gov + lag(gov,-1), data=df, subset = df$recession==1) 
summary(model) 

をしかし、それは

を言って私にエラーを与えますマッチ(X、テーブル、NOMATCH = NOMATCH、...)で

エラー: '試合は' 問題は、私はデータのサブセットとどうなるのベクトル引数

が必要です。データサブセットの最後のオプションを追加しないと、コードが実行され、正しい答えが返されます。 これを行うにはどうすればよいですか?

+0

データのNA値を省略しようとしましたか? 'df < - na.omit(df)' – user5249203

+0

私は欠損値がありません...欠損値は遅れが取られた場合にのみ生成されます! –

+0

Rへの質問は再現可能でなければなりません。質問する方法の詳細については、[mcve]を参照してください。 –

答えて

0

あなたが求めているかを正確に行うには原油と非効率的な方法:

library(zoo) 
    output <- read.csv("rectest.csv") 
    outTS <- zoo(output, output$obs) 
    lagOutTS <- lag(outTS, -1) 
    lts <- merge(outTS, lagOutTS) 
    model <- lm(output.outTS ~ output.lagOutTS + gov.outTS + gov.lagOutTS, data=lts, subset=recession.outTS==1) 

結果:

lm(formula = output.outTS ~ output.lagOutTS + gov.outTS + gov.lagOutTS, 
    data = lts, subset = recession.outTS == 1) 

    Coefficients: 
    (Intercept) output.lagOutTS  gov.outTS  gov.lagOutTS 

    0.03201   0.88965   -0.03083   0.18854 

しかし、私はそれを行うために自己回帰モデルを使用することになり...