/ / Предсказване и зачертаване след монтиране на 'arima ()' модел в R - r, времеви редове

Предсказвайте и засвоявайте след инсталирането на модела `arima () в R - r, времевата серия

Просто се запознах с времеви редове и използване този пост на R-блогъри като ръководство за следното упражнение: безсмисленият опит да се предскаже бъдещата възвращаемост на фондовия пазар ... Просто упражнение в разбирането на концепцията за времевите редове.

Проблемът е, че когато заговоря предсказанотостойности Получавам постоянна линия, която е в противоречие с историческите данни. Тук е, в синьо, в края на стационарната историческа Dow Jones, която се връща ежедневно.

въведете описанието на изображението тук

В действителност бих искал по-оптимистичен визуален или "повторен" сюжет като този, който съм получил за прогнозирания брой въздушни пътници:

въведете описанието на изображението тук

Това е кодът:

library(quantmod)
library(tseries)
library(forecast)
getSymbols("^DJI")
d = DJI$DJI.Adjusted
chartSeries(DJI)
adf.test(d)
dow = 100 * diff(log(d))[-1]
adf.test(dow)
train = dow[1 : (0.9 * length(dow))]
test  = dow[(0.9 * length(dow) + 1):  length(dow)]
fit = arima(train, order = c(2, 0, 2))
predi = predict(fit, n.ahead = (length(dow) - (0.9*length(dow))))$pred
fore  = forecast(fit, h = 500)
plot(fore)

За съжаление, получавам грешка, ако се опитам да използвам същия код за прогнозата на въздушните пътници. Например:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))

приложен към текущия проблем, евентуално (?) може да отиде по следния начин:

fit2 = arima(log(d), c(2, 0, 2))
pred = predict(fit2, n.ahead = 500)
ts.plot(d,exp(pred$pred), log = "y", lty = c(1,3))
Error in .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE) : non-time series not of the correct length

Отговори:

1 за отговор № 1

Постигането на известен напредък и ОП е твърде дълъг.

  1. От неработица до работа малко: Или защо получавам "не-времевите редове не на правилната дължина" и други загадъчни съобщения за грешки ... Е, без да знам подробности, просто ми хрумна да проверя какво се опитвах да cbind.ts: is.ts(d) [1] FALSE Аха! Дори ако d е xts обект, това не е времева серия. Така че просто трябваше да бягам as.ts(d), Решен!
  2. Нереалистични прогнози за пазара: Зачертаваме го сега

    fit2 = arima(log(d), c(2, 1, 2)); pred = predict(fit2, n.ahead = 365 * 5) ts.plot(as.ts(d),exp(pred$pred), log = "y", col= c(4,2),lty = c(1,3), main="VIX = 0 Market Conditions", ylim=c(6000,20000))

въведете описанието на изображението тук

ОК ... Няма перспективи за работа в Goldman Sachs с тази плоска перспектива. Трябва да примами някои инвеститори. Нека приготвим още малко змиеното масло:

  1. Получаването на плоската линия: Нека съберем "сезонността" и сме готови да се забавляваме, както е и през 1999 г .:

    fit3 = arima(log(d), c(2, 1, 2), seasonal=list(order = c(0, 1, 1), period=12))

    pred = predict(fit3, n.ahead = 365 * 5) ts.plot(as.ts(d),exp(pred$pred), log = "y", col= c(2,4),lty = c(1,3), main="Investors Prospectus - Maddoff & Co., Inc.")

въведете описанието на изображението тук

  1. Почти там: ходих до Джон Оливър страница и отпечатано удостоверение като длъжностно лицефинансов съветник, така че съм готов да взема парите ви за пенсиониране. За да направя това, просто трябва да изразя здрава несигурност в тази възходяща перспектива за следващите пет години. Лесна работа... fore = forecast(fit2, h = 365 * 5); plot(fore)и ...

въведете описанието на изображението тук

О, не! Няма начин да накарам някакви допира да инвестират с тази проверка на реалността ... Добре, че не се отказах от дневната си работа ... Чакай малко, обърках се да вляза в модела: fore = forecast(fit3, h = 365 * 5) plot(fore):

въведете описанието на изображението тук

Тръгвам към Staples ...