R中具有xts的回归
是否有使用以下类型的xts对象运行回归的实用程序:R中具有xts的回归,r,time-series,xts,zoo,lm,R,Time Series,Xts,Zoo,Lm,是否有使用以下类型的xts对象运行回归的实用程序: lm(y ~ lab(x, 1) + lag(x, 2) + lag(x,3), data=as.data.frame(coredata(my_xts))) 其中my_xts是一个xts对象,它包含一个x和一个y。问题的关键是,有没有一种方法可以避免进行大量的延迟和合并,从而生成一个包含所有延迟的data.frame?我认为包dyn适用于zoo对象,因此我希望它与xts的工作方式相同,但可能会有一些更新。因为您已经从xts环境中删除了数据,所
lm(y ~ lab(x, 1) + lag(x, 2) + lag(x,3), data=as.data.frame(coredata(my_xts)))
其中
my_xts
是一个xts
对象,它包含一个x
和一个y
。问题的关键是,有没有一种方法可以避免进行大量的延迟和合并,从而生成一个包含所有延迟的data.frame
?我认为包dyn
适用于zoo
对象,因此我希望它与xts
的工作方式相同,但可能会有一些更新。因为您已经从xts环境中删除了数据,所以我这里没有使用任何xts功能。有一个embed
函数,它将构造一个任意程度的“滞后”矩阵。(我从未理解时间序列lag
函数。)(嵌入滞后变量的顺序与我预期的相反。)
dyn和dynlm包可以对zoo对象执行此操作。对于dyn,只需编写
dyn$lm
而不是lm
,并向其传递zoo对象而不是数据帧
注意,xts中的滞后与通常的R约定相反,因此,如果x属于xts类,则滞后(x,1)与滞后(x,-1)相同,如果x属于zoo或ts类
> 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
>库(xts)
>图书馆(dyn)
>x dyn$lm(y1~lag(x1,-(1:3)),as.zoo(x))
电话:
lm(公式=dyn(y1~lag(x1,-(1:3)),数据=as.zoo(x))
系数:
(截距)滞后(x1,-(1:3))1滞后(x1,-(1:3))2滞后(x1,-(1:3))3
3.80530 0.04995 -0.12042 0.46631
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
> 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