随机森林 - Caret - 时间序列

3
我有一个时间序列(苹果股票价格 - 收盘价格 - 转换为数据框以使用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步之后的预测。

3
首先建议您提供一个可重现的示例,否则我们无法测试代码来提供帮助。其次,您的脚本在colnames函数行中没有关闭双引号,将导致错误。第三个建议是,predict.randomForest函数没有n.ahead参数。第四个建议是,我不明白为什么机器学习算法应该像经济计量学算法时间序列预测一样工作。 - LyzandeR
2
感谢您的惊人反馈 @LyzandeR! - donpresente
因此,时间序列“滚动窗口”和RF可用于时间序列预测。但您只能为model.fit选择一个目标。仅将特征输入为-1、-2和-6天不足以构建有用的模型。它会有预测性,但是以无意义的方式,因为股票不是静止的。“我预测苹果明天的价格会接近今天的价格,依此类推...”。您需要将数据转换为对数差异或相对变化。您想知道的是,股票明天上涨的机会是否增加,而且您希望以比其他交易代理更高的确定性知道这一点。 - Soren Havelund Welling
@Soren,你说得对。我本来想引入外部特征,但它们只能在“训练”阶段使用,而不能在“测试”(或预测)中使用。当然,除非我也为它们使用预测值。比如,GDP增长之类的东西。我原本想用自回归模型,因为我能够获得完整的变量面板。但你是对的。 - donpresente
2个回答

3

目前,您无法将其他选项传递给基础预测方法。不过有一项建议的更改可能会使这个功能成为可能。

在您的情况下,您应该提供一个数据框作为预测函数的输入,该数据框包含接下来几个观察周期所需的适当预测变量。


0
#1:: colnames(df)<-c("price","price_1","price_2","price_6") ;; "after price6
#2:: Predict{stats} is a generic function for predictions from the results of various model fitting functions

::predict(model object , dataframe)
we have 3 cases here for dataframe ::
case 1 :: train data::on which model is fitted :: Insample prediction
case 2 :: test data::Out of sample prediction
case 3 :: forecasted  data :: forecasted values of the independent variables : we get the forecasted values of the dependent variable according to the model

The column names in case 2 & 3 should be same as column names of the train data

这篇文章真的很难读。你可以重新格式化一下吗? - user3603486
希望这可以帮助到您。 - Ankit Kamboj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接