[R] ts's in lm()
kjetil@acelerate.com
kjetil at acelerate.com
Sun Apr 25 17:29:50 CEST 2004
Is this a bug?
seasonal.dummies <-
function(x, contr=NULL) {
# takes a time series and returns a matrix of seasonal dummies for
# x. This is almost cycle(x), we only have to make it into a factor
# and add suitable level names.
# return a matrix which includes a constant!
# level names here assumes frequency is 12!
cyc <- factor( cycle(x), labels=c("ene","feb", "mar", "abr", "may",
"jun","jul", "ago", "sep", "oct","nov", "dic") )
if(!is.null(contr)) cyc <- C(cyc, contr)
model.matrix( ~ cyc )
}
> modelo1 <- function(xx, yy) {
# xx es serie explicativa (economia)
# yy es serie para predecir --- gasolina.eq
name.x <- deparse(substitute(xx))
name.y <- deparse(substitute(yy))
xx <- ts(rep(xx,rep(3, length(xx))), frequency=12, start=
c(start(xx)[1], (start(xx)[2]-1)*3+1) )
common <- ts.intersect(xx, yy)
colnames(common) <- c(name.x, name.y)
xx <- common[,1]
yy <- common[,2]
sea <- seasonal.dummies(xx)
return(lm(yy ~ 0+sea+xx))
}
> mod1 <- modelo1(PIBtrimestral, gasolina.eq)
Error in "storage.mode<-"(`*tmp*`, value = "double") :
invalid time series parameters specified
lm() works with time series objects made directly with ts(), and the
arguments to modelo1() is of this type.
Kjetil Halvorsen
More information about the R-help
mailing list