[英]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.