dyn works with time series objects -- usually zoo:
library(dyn)
set.seed(123)
y <- numeric(100)
y[1] <- 2
for (i in 2:100) {
u <- rnorm(1, mean = 0, sd = 1)
y[i] <- 1 + 0.5 * y[i-1] + u
}
z <- zoo(y)
model <- dyn$lm(z ~ lag(z, -1) + lag(z, -2))
giving:
> model
Call:
lm(formula = dyn(z ~ lag(z, -1) + lag(z, -2)))
Coefficients:
(Intercept) lag(z, -1) lag(z, -2)
1.20011 0.46826 -0.01038
This would also work:
model <- dyn$lm(z ~ lag(z, -1:-2))