2012-01-26 10 views
1

私は時系列に取り組んでおり、遅れている相違点を全て確認したいと思っています(そして本質的には手でテストを行います)が、それは重要ではありません。私はそれをすることができますが、それは本当に機械的であり、これをよりエレガントに行う方法がなければなりません。または少なくともより効率的に。何か案は?Rにおける時系列回帰の効率性:これをより良くするにはどうすればよいですか?

y <- log.real.gdp.ts 

delta.y.t <- diff(y,differences=1) 
lag.y <- lag(y, -1) 
L1Dy <- lag(delta.y.t, k=-1) 
L2Dy <- lag(delta.y.t, k=-2)  
L3Dy <- lag(delta.y.t, k=-3)  
L4Dy <- lag(delta.y.t, k=-4)  
L5Dy <- lag(delta.y.t, k=-5)  
L6Dy <- lag(delta.y.t, k=-6)  
L7Dy <- lag(delta.y.t, k=-7)  
L8Dy <- lag(delta.y.t, k=-8)  
L9Dy <- lag(delta.y.t, k=-9)  
L10Dy <- lag(delta.y.t, k=-10) 
L11Dy <- lag(delta.y.t, k=-11) 
L12Dy <- lag(delta.y.t, k=-12) 

d = ts.union(delta.y.t, lag.y, L1Dy, L2Dy, L3Dy, L4Dy, L5Dy, L6Dy, L7Dy, L8Dy, L9Dy, L10Dy, L11Dy, L12Dy)    ## takes care of NA's 

lm.model.III <- lm(delta.y.t~ lag.y + time(lag.y) + L1Dy + L2Dy + L3Dy + L4Dy + L5Dy + L6Dy + L7Dy + L8Dy + L9Dy + L10Dy + L11Dy + L12Dy, data=d) 

私は本当に私が1を生成することができますループのいくつかの種類たい:nの違いを遅れ、その後、私の線形モデルにすべてのnを挿入するためのいくつかの方法、

lm.model.III <- lm(delta.y.t ~ lag.y + time(lag.y) + lagged.diffs.mts) 

答えて

3

方法について

のような
require(zoo) 

delta.y.t <- diff(y,differences=1) 
lag.y <- lag(y, -1) 
L1Dy <- lag(delta.y.t, -(0:12), na.pad=T) 

#for any regression you can then access the number of lags you want: 
# 0 lag and na.pad=T are crucial 

lm(lag.y ~ L1Dy[,1:5]) 

ホープこれは

-Chrisを助け

+0

ええと、これは 'y < - 1:20'で私にエラーを投げています。 – Charlie

+0

yにバリエーションが必要です。 'set.seed(4)'を試してください。 'y = zoo(cumprod((1 + rnorm(200,0.1,0.3)))); plot(y) ' – Robert

0

R式に時系列演算子の扱いを追加しdynlmパッケージ:1. :

インターフェースとdynlmの内部はlmと非常によく似ていますが、 は現在dynlmlmを直接使用する上で3つの利点を提供しています拡張された数式処理、2.時系列の保存 属性、3.器械変数回帰(二段式最小 の四角形による)。嵌合するモデルの式を指定するため、 便利 (d()L()を介して)ダイナミクスの仕様または線形/循環 パターン(trend()介して、season()、及びharmon())を可能にする利用可能な追加機能があります。新しい式 のすべての関数は、引数が時系列オブジェクト(すなわち、 "ts"または "zoo")であることを必要とします。それはあなたがそのようなy ~ L(y, 1:4)として式オブジェクト内のラグのベクトルを指定することを可能にすること、特に、

library(foreign) 
library(zoo) 
library(dynlm) 

dfKlein = read.dta('http://www.stata-press.com/data/r12/klein.dta') 
summary(dfKlein) 

zooKlein = as.zoo(dfKlein, order.by = dfKlein$year) 
lmKlein = dynlm(consump ~ L(profits, 1) + profits + wagetot, 
       data = zooKlein) 
summary(lmKlein) 

注:ここ

は一例です。

関連する問題