[R] Regression and time series

Fernando Saldanha fsaldan1 at gmail.com
Tue Apr 12 02:18:11 CEST 2005


Can someone shed some light on this obscure portion of the help for lm?

    "Considerable care is needed when using 'lm' with time series.

     Unless 'na.action = NULL', the time series attributes are stripped
     from the variables before the regression is done.  (This is
     necessary as omitting 'NA's would invalidate the time series
     attributes, and if 'NA's are omitted in the middle of the series
     the result would no longer be a regular time series.)

     Even if the time series attributes are retained, they are not used
     to line up series, so that the time shift of a lagged or
     differenced regressor would be ignored.  It is good practice to
     prepare a 'data' argument by 'ts.intersect(..., dframe = TRUE)',
     then apply a suitable 'na.action' to that data frame and call 'lm'
     with 'na.action = NULL' so that residuals and fitted values are
     time series."

I found that ts.intersect does not shorten a set of time series just
because the series has NAs. It only shortens a set of time series to
the length of the shortest time series (with NAs counting for the
length calculation). That being the case, the utility of ts.inersect
seems limited to me, unless I am missing something (which I probably
am).

In particular, I am currently having to pad the beginning of a time
series when I call diff. For example,

> a <- ts(c(1, 2, 4))
> b <- ts(c(NA, diff(a)))
> ab <- ts.intersect(a, b)
> Time Series:
   Start = 1 
   End = 3 
   Frequency = 1 
  a  b
1 1 NA
2 2  1
3 4  2

I was hoping that something like ts.intersect would spare me the
trouble of explicitly padding b in the example above. However, if I
don't pad b the time series get misaligned:

> a <- ts(c(1, 2, 4))
> b <- ts(diff(a))
> ab <- ts.intersect(a, b)
Time Series:
Start = 1 
End = 2 
Frequency = 1 
  a b
1 1 1
2 2 2

Any comments, suggestions?

FS




More information about the R-help mailing list