On Wed, 15 Oct 2008, Werner Wernersen wrote:
Hi,
I was wondering why the results from lm and dynlm are not the same for
what I think is the same model.
...because it's not the same model :-)
I haven't looked at this in detail, but:
set.seed(123456)
e1 <- rnorm(100)
e2 <- rnorm(100)
y1 <- ts(cumsum(e1))
y2 <- ts(0.6*y1 + e2)
lr.reg <- lm(y2 ~ y1)
error <- ts(residuals(lr.reg))
error.lagged <- error[-c(99, 100)]
This corresponds to a lag of two, hence you need
dy1 <- diff(y1)
dy2 <- diff(y2)
diff.dat <- data.frame(embed(cbind(dy1, dy2), 2))
colnames(diff.dat) <- c('dy1', 'dy2', 'dy1.1', 'dy2.1')
ecm.reg <- lm(dy2 ~ error.lagged + dy1.1 + dy2.1,
data=diff.dat)
ecm.dynreg <- dynlm(d(y2) ~ L(error) + L(d(y1),1) + L(d(y2),1))
^^^^^^^^
a different lag here.
ecm.dynreg <- dynlm(d(y2) ~ L(error, 2) + L(d(y1),1) + L(d(y2),1))
gives the same results as ecm.reg. (Although looking at this briefly, I
suspect that the specification of ecm.reg should be changed rather than
the other way round.)
hth,
Z
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.