Изолированной Регрессии


Итак, я новичок в R, но я запускаю некоторый код, который имитирует 100 наблюдений переменной y, которая следует формуле y_t=1+.5 * y (t-1)+u. затем я хочу запустить регрессию y на y(t-1) и y_(t-2) и константу. Когда я запускаю регрессию с помощью пакета dyn, он показывает коэффициент на y_ (t-2) как NA. У кого какие мысли по этому поводу?

Вот мой код:

y<-numeric(100)
for (i in 2:100){
u <- rnorm(1, mean= 0, sd = 1)
y[1]<-2
y[i]<-1+.5*y[i-1]+u
}

model<-dyn$lm(y ~ lag(y, -1)+lag(y,-2))

Вот результат:

Call:
lm(formula = dyn(y ~ lag(y, -1) + lag(y, -2)))


**Coefficients: (1 not defined because of singularities)**


Residual standard error: 2.147e-16 on 98 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1 
F-statistic: 2.344e+33 on 1 and 98 DF,  p-value: < 2.2e-16
1 3

1 ответ:

Dyn работает с объектами временных рядов-обычно 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))

Дача:

> 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  

Это также будет работать:

model <- dyn$lm(z ~ lag(z, -1:-2))