2015-07-18 3 views
2

У меня есть временная серия (цены на акции яблока - цены закрытия - превращаются в кадр данных, чтобы соответствовать случайному лесу с помощью каретки. Я отставал на 1 день, 2 дня и 6 дней. чтобы предсказать следующие 2 дня. Прогноз на два шага вперед. Но caret использует функцию predict, которая не допускает аргумент h как функцию forecast. И я видел, что некоторые люди пытаются поставить аргумент n.ahead, но не работают для меня. Любые советы? Смотрите кодRandom Forest - Caret - Time Series

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-го шага вперед прогноз 1 день назад «клетка» с прогнозом, который я сделал раньше.

+3

Первый совет, вам нужно добавить воспроизводимый пример, иначе мы не сможем проверить код, чтобы помочь. Второй совет, ваш скрипт в любом случае приведет к ошибке, поскольку вы не закрыли двойную кавычку в строке функций 'colnames'. Третий совет: функция 'preview.randomForest' не имеет аргумента' n.ahead'. Четвертый совет, я не понимаю, почему алгоритм машинного обучения должен вести себя как прогноз, который является эконометрическим алгоритмом для временных рядов. – LyzandeR

+2

Удивительная обратная связь @LyzandeR Спасибо! – donpresente

+0

... так что «временное окно» и RF отлично работают для прогнозирования временных рядов. Но вы можете выбрать только одну целевую модель pr.fit. Простое добавление функций как дней -1, -2 и -6 недостаточно для создания полезной модели. Это будет прогностическим, но бессмысленным, поскольку запасы не являются стационарными. «Я предсказываю, что завтра цена завтрашнего дня станет чем-то вроде сегодняшнего дня и так далее ...». Вам необходимо преобразовать данные в лог-файл или относительное изменение. То, что вы хотите знать, - это то, что у фонда будет увеличенный шанс подняться завтра, и вы не будете знать это с большей уверенностью, чем другие торговые агенты. –

ответ

2

Прямо сейчас, вы не можете передать другие параметры методу базового прогноза. Существует proposed change, который может включить это.

В вашем случае вы должны дать функции прогнозирования кадр данных, который имеет соответствующие предиктора для следующих нескольких наблюдений.

-1
#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 
+0

Это сообщение действительно сложно прочитать. Пожалуйста, не могли бы вы переформатировать его? – dash2

+0

надеюсь, что это может помочь –

 Смежные вопросы

  • Нет связанных вопросов^_^