Прогноз Несколько сезонность Функция не работает
У меня есть данные о ежедневных продажах. Я использую функцию Tbat, предложенную Робом Хиндманом (Sir) во многих постах.
Я использую следующий код
mydata<-read.csv ("D:/data.csv",header=TRUE);
y <- msts(mydata$sales, seasonal.periods=c(7,365.25))
fit <- tbats(y)
fc <- forecast(fit)
plot(fc)
1 ответ
Поскольку я не могу использовать ваши данные, вот пример, который использует ваш подход для а) моделирования некоторых данных с (некоторыми видами) сезонности и б) прогнозов на следующие периоды.
А) Имитация данных
Данные моделируются тремя компонентами: синусоидальной, косинусоидальной и случайной.
# 1. simulate some data:
set.seed(123) # set seed for reproducability
n <- 1000
# simulate the random components
sin.comp <- sin((1:n)/10)*10
cos.comp <- cos((1:n)/5)*5
rand.comp <- rnorm(n)
df <- data.frame(time = seq(from = as.Date("2000-01-01"), by = "day",
length.out = n),
value = sin.comp + cos.comp + rand.comp)
# plot the data
plot(x = df$time, y = df$value, main = "Seasonal Series", type = "l")
lines(x = df$time, y = sin.comp, col = "red")
lines(x = df$time, y = cos.comp, col = "blue")
lines(x = df$time, y = rand.comp, col = "green")
legend("bottomleft",
c("Series", "Sin", "Cos", "Rand"),
lty = c(1, 1),
col = c("black", "red", "blue", "green"), cex = 0.7)
Б) Прогноз серии
y <- msts(df$value, seasonal.periods = c(7, 36)) # cut down to 36
fit <- tbats(y) #takes some time to calculate..
fc <- forecast(fit)
plot(fc)
Дополнительные примечания
Если этот подход не работает для вас, это означает, что ваши данные, вероятно, не соответствуют прогнозу...
Чтобы проверить ваши данные, вы можете проверить типы с str(mydata)
(в моем случае str(df)
), summary(mydata)
, а также head/tail(mydata)
,
Как последнее замечание, ваш dput
очевидно, слишком долго... Либо пост dput(head(mydata, 100))
, который дает первые 100 записей, или загрузить CSV хостеру и опубликовать ссылку.
Это указывает вам правильное направление?