我有一个时间序列(苹果股票价格 - 收盘价格 - 转换为数据框以使用caret拟合随机森林)。我滞后于1天、2天和6天。我想预测未来两天。两步预测。但是,
如果我只使用
caret
使用的predict
函数不允许参数h
,就像forecast
函数那样。我看到有些人尝试将参数n.ahead
放入代码中,但对我没有用。有什么建议吗?请参见以下代码:df<-data.frame(APPL)
df$f1<-lag(df$APPL,1)
df$f2=lag(df$APPL,2)
df$f3=lag(df$APPL,6)
# change column names
colnames(df)<-c("price", "price_1", "price_2", "price_6")
# remove rows (days) with NA.
df<-df[complete.cases(df),]
fitControl <- trainControl(
method = "repeatedcv",
number = 10,
repeats = 1,
classProbs = FALSE,
verboseIter = TRUE,
preProcOptions=list(thresh = 0.95, na.remove = TRUE, verbose = TRUE))
set.seed(1234)
rf_grid= expand.grid(mtry = c(1:3))
fit <- train(price~.,
data=df,
method="rf",
preProcess=c("center","scale"),
tuneGrid = rf_grid,
trControl=fitControl,
ntree = 200,
metric="RMSE")
nextday <- predict(fit,`WHAT GOES HERE?`)
如果我只使用
predict(fit)
作为newdata
,那么将使用整个数据集进行预测,我认为这是错误的。另一件我想考虑的事情是做一个循环。预测1步之后的结果,因为我有过去1、2和6天的数据。然后用先前预测的结果填充2步之后的预测。
colnames
函数行中没有关闭双引号,将导致错误。第三个建议是,predict.randomForest
函数没有n.ahead
参数。第四个建议是,我不明白为什么机器学习算法应该像经济计量学算法时间序列预测一样工作。 - LyzandeR