R中的哪些包允许时间序列分析的滞后变量?

R中的哪些包允许时间序列分析的滞后变量?,r,R,我想在回归中包含外生变量的多重滞后。假设我有以下数据: X = c(1, 4, 8, 9, 3, 5...) X2 = c(4, 6, 7, 9, 7, 8...) 我想使用X2的滞后来预测X。有人知道为什么软件包允许我这么做吗?我试过使用stats中的dynlm和lag() 谢谢图书馆(动物园) library(zoo) set.seed(1111) x <- as.zoo(rnorm(10, 0, 0.02)) y <- lag(x, 2, na.pad = TRUE) cbi

我想在回归中包含外生变量的多重滞后。假设我有以下数据:

X = c(1, 4, 8, 9, 3, 5...)
X2 = c(4, 6, 7, 9, 7, 8...)
我想使用
X2
的滞后来预测
X
。有人知道为什么软件包允许我这么做吗?我试过使用stats中的
dynlm
lag()

谢谢

图书馆(动物园)
library(zoo)
set.seed(1111)
x <- as.zoo(rnorm(10, 0, 0.02))
y <- lag(x, 2, na.pad = TRUE)
cbind(x, y)
种子集(1111)
x这将在X2的前两个滞后上执行x的普通线性回归,该滞后上有一个截距(fit2),第一个滞后上有一个截距(fit1),并且仅在一个截距(fit0)上执行x的普通线性回归。注意,在R中,通常使用负数表示滞后,因此为了方便起见,我们定义了一个
lag
函数,该函数使用正数表示滞后。lag.zoo允许向量滞后,因此lag(z2,1:2)有两列,每列对应两个滞后

library(dyn)

X = c(1, 4, 8, 9, 3, 5)
X2 = c(4, 6, 7, 9, 7, 8)

z <- zoo(X)
z2 <- zoo(X2)

Lag <- function(x, k = 1) lag(x, k = -k)
fit2 <- dyn$lm(z ~ Lag(z2, 1:2))
fit1 <- dyn$lm(z ~ Lag(z2))
fit0 <- dyn$lm(z ~ 1)
这是三种拟合的比较,表明一种和两种滞后拟合并不比仅使用截距好多少;但是,通过将第一个滞后添加到仅截距模型,剩余平方和会有相当大的下降,因此您可能希望忽略统计显著性,而使用第一个滞后

> anova(fit0, fit1, fit12)
Analysis of Variance Table

Model 1: z ~ 1
Model 2: z ~ Lag(z2)
Model 3: z ~ Lag(z2, 1:2)
  Res.Df     RSS Df Sum of Sq      F Pr(>F)
1      3 22.7500                           
2      2  8.4211  1   14.3289 2.1891 0.3784
3      1  6.5455  1    1.8756 0.2865 0.6871
也可以使用ts类代替动物园类;但是,lag.ts不支持向量滞后,因此,对于ts,每个项都必须单独写出<代码>滞后
来自上方

tt <- ts(X)
tt2 <- ts(X2)

fits12_ts <- dyn$lm(tt ~ Lag(tt2) + Lag(tt2, 2))

tt我想说,不需要外部R库

X2 = c(4, 6, 7, 9, 7, 8)

lag = 2
lagged_data <- function(x) c(tail(X2, -x), rep(NA, x))
lagged_data(lag)
# [1]  7  9  7  8 NA NA
X2=c(4,6,7,9,7,8)
滞后=2
滞后数据
X2 = c(4, 6, 7, 9, 7, 8)

lag = 2
lagged_data <- function(x) c(tail(X2, -x), rep(NA, x))
lagged_data(lag)
# [1]  7  9  7  8 NA NA