randomForest прогноз R - PullRequest
       12

randomForest прогноз R

0 голосов
/ 02 декабря 2018

Я пытаюсь проецировать временные ряды, используя Случайный Лес.Я сделал прогноз последних 12 наблюдений из серии данных с 141 наблюдением, согласно приведенному ниже коду.

premium<-read.table('https://raw.githubusercontent.com/arthurlula/Econometrics/master/premio.txt')
    pr<-premium[,1]
    pr<-pr[-c(1:48)] #my data

    train<-ts(pr[-c(130:141)],start=2007,frequency = 12) #my first 129 obs
    test<-ts(pr[130:141],start=c(2017,10),frequency = 12) #my last 12 obs
    regressor = randomForest(formula=train~.,
                             data=train,
                             ntree=100) #model
    y_pred = predict(regressor,newdata = test) #predict last 12 obs
    grab<-melt(c(train,y_pred))
    plot(grab[,1],type='l') #plot predicted
    lines(as.numeric(pr),col='red') #plot original

График, который сравнивает исходный и прогнозируемый ряд:,Нет ли способа спроецировать эти последние 12 наблюдений, не добавляя тестовый вектор?Как бы вы спроектировали месяцы вперед, чего еще не произошло?

1 Ответ

0 голосов
/ 02 декабря 2018

Проблема возникает в этой строке:

y_pred = predict(regressor,newdata = test)

Аргумент newdata должен быть правильно построен, то есть что-то, что может быть приведено к кадру данных, или вы просто вернете исходное соответствие, котороепочему вы видите подозрительное полное соглашение.Попробуйте что-нибудь в этом духе

y_pred = predict(regressor,newdata = list(x=test)  )
 str(y_pred)
#---------
 Named num [1:12] 47427468 27011517 1492706 29900252 28332662 ...
 - attr(*, "names")= chr [1:12] "1" "2" "3" "4" ...
png()
    plot(train, xlim=c(2007,2019)  )  # original data 
    lines(seq(2018,2019, length.out =12), as.numeric(y_pred),col='red') #plot predicted
dev.off()

enter image description here

Я не уверен, что я правильно зарегистрировал значения train и y_pred, но это то, что вам нужно возитьсяс.(Я нахожу объекты R ts очень запутанной структурой.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...