3

次のタイプの xts オブジェクトを使用して回帰を実行するユーティリティはありますか:

lm(y ~ lab(x, 1) + lag(x, 2) + lag(x,3), data=as.data.frame(coredata(my_xts)))

wheremy_xtsは とをxts含むオブジェクトです。質問のポイントは、すべてのラグを処理するために、一連のラグとマージを回避する方法があるということです。パッケージはオブジェクトに対して機能すると思うので、同じように機能すると予想されますが、何かが更新される可能性があります。xydata.framedynzooxts

4

2 に答える 2

6

dyn および dynlm パッケージは、zoo オブジェクトでそれを行うことができます。dyn の場合は、代わりにデータ フレームの代わりに Zoo オブジェクトを記述dyn$lmlmて渡します。

xts のラグは、通常の R 規則とは逆に機能することに注意してください。したがって、x が xts クラスの場合、lag(x, 1) は、x がzoo または ts クラスの場合、lag(x, -1) と同じです。

> library(xts)
> library(dyn)
> x <- xts(anscombe[c("y1", "x1")], as.Date(1:11)) # test data
> dyn$lm(y1 ~ lag(x1, -(1:3)), as.zoo(x))

Call:
lm(formula = dyn(y1 ~ lag(x1, -(1:3))), data = as.zoo(x))

Coefficients:
     (Intercept)  lag(x1, -(1:3))1  lag(x1, -(1:3))2  lag(x1, -(1:3))3  
         3.80530           0.04995          -0.12042           0.46631  
于 2012-08-10T00:37:15.320 に答える
2

既に xts 環境からデータを削除しているため、ここでは xts 機能を使用していません。embed「ラグ」マトリックスを任意の程度に構築する関数があります。(時系列lag関数を理解していませんでした。) (埋め込みラグ変数の順序は、私が予想していたものとは逆です。)

 embed(1:6, 3)
#--------
     [,1] [,2] [,3]
[1,]    3    2    1
[2,]    4    3    2
[3,]    5    4    3
[4,]    6    5    4
#Worked example   ... need to shorten the y variable
y <- rnorm(20)
x <- rnorm(20)
lm( tail(y, 18) ~ embed(x, 3) )
#-------------------
Call:
lm(formula = tail(y, 18) ~ embed(x, 3))

Coefficients:
 (Intercept)  embed(x, 3)1  embed(x, 3)2  embed(x, 3)3  
    -0.12452      -0.34919       0.01571       0.01715  

@GGrothendieck で使用されているものと一致するようにラグを変更した後、同じ結果が得られることに注意してください。

 lm( tail(xx[,"y1"], NROW(xx)-3) ~ embed(xx[,"x1"], 4)[,2:4] )

Call:
lm(formula = tail(xx[, "y1"], NROW(xx) - 3) ~ embed(xx[, "x1"], 
    4)[, 2:4])

Coefficients:
                 (Intercept)  embed(xx[, "x1"], 4)[, 2:4]1  embed(xx[, "x1"], 4)[, 2:4]2  
                     3.80530                       0.04995                      -0.12042  
embed(xx[, "x1"], 4)[, 2:4]3  
                     0.46631  
于 2012-08-10T00:09:15.800 に答える