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.

Reply via email to