[英]Regression with lagged time time series data in R
我有两个时间序列数据A和B。我想在R中执行以下线性回归
A ~ 滞后(A, 1:2) + 滞后(B, 1:2)
你能帮我 R 代码吗?
使用 dyn 和内置的 BOD 数据框(包含两列,时间和需求),我们可以指定指示的滞后。
请注意 dplyr package clobbers 滞后所以以防万一它被加载我们恢复基本滞后。 注意滞后所需的标志。
使用 dyn$lm 和 zoo(BOD) 将导致自动 alignment。
如果 BOD 不只包含数字数据,则有必要删除所有未首先使用的列; 但是,这里的 BOD 完全是数字。
library(dyn) # also loads zoo
lag <- stats::lag
fm <- dyn$lm(demand ~ lag(demand, -(1:2)) + lag(Time, -(1:2)), zoo(BOD))
fm
给予:
Call:
lm(formula = dyn(demand ~ lag(demand, -(1:2)) + lag(Time, -(1:2))),
data = zoo(BOD))
Coefficients:
(Intercept) lag(demand, -(1:2))1 lag(demand, -(1:2))2
23.5410 -0.5126 -0.5071
lag(Time, -(1:2))1 lag(Time, -(1:2))2
2.4737 NA
这显示 BOD 和使用的 model.frame 和 model.matrix。
> BOD
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
> model.frame(fm)
demand lag(demand, -(1:2)).1 lag(demand, -(1:2)).2 lag(Time, -(1:2)).1 lag(Time, -(1:2)).2
3 19.0 10.3 8.3 2 1
4 16.0 19.0 10.3 3 2
5 15.6 16.0 19.0 4 3
6 19.8 15.6 16.0 5 4
> model.matrix(fm)
(Intercept) lag(demand, -(1:2))1 lag(demand, -(1:2))2 lag(Time, -(1:2))1 lag(Time, -(1:2))2
3 1 10.3 8.3 2 1
4 1 19.0 10.3 3 2
5 1 16.0 19.0 4 3
6 1 15.6 16.0 5 4
attr(,"assign")
[1] 0 1 1 2 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.