working with a data frame
x
Date Val
1/1/2012 7
2/1/2012 9
3/1/2012 20
4/1/2012 24
5/1/2012 50
a <- seq(as.Date(tai
Your variable names, as stored in the x.lm
model, refer to the x
dataframe. There are no variables of the same names in a
, so it will use those 29 from x
again, which is probably not what you wanted, thus the warning. You can do the following to always use an unqualified variable named Date
in the model:
a <- seq(as.Date(tail(x, 1)$Date), by="month", length=5)
a <- data.frame(Date = a)
x.lm <- lm(Val ~ Date, data=x)
x.pre<-predict(x.lm, newdata=a)
Instead of x.lm <- lm(x$Val ~ x$Date, data = x) use x.lm <- lm(Val ~ Date, data = x). Removing dataset name before variable name in the lm function should help.
Your data.frame a
has a column named a
. You created your model with columns named Val
and Date
so that is what its looking for.
when you make your data.frame a
name that column Date
and you're good to go:
a <- data.frame(Date=a)
Then it runs without the warning.
Per comment:
Edit your lm
call to be:
lm(Val ~ Date, data=x)
If you can't make predict.lm()
work, then you should try to write your own function using function()
:
yourown_function<- function(predictor1, predictor2,...){intercept+b1*predictor1+b2*predictor2+...}
use yourown_function
to predict from any new dataframe:
newvalues<- yourown_function(predictor1=data.frame$predictor1, predictor2=data.frame$predictor2,....)
using the new values, you can compute residuals, MSE, etc...