R 中的 forecast() 重复预测

forecast() in R repeats predictions

我正在尝试构建预测,以根据 Google 趋势数据预测关键字的未来值。
我的数据是2020年1月1日到2020年6月30日某个关键词的每日索引搜索量,保存在CSV文件中:

日期 |关键词
2020-01-01 | 55
2020-01-02 | 79
2020-01-03 | 29
...
2020-06-29 | 19
2020-06-30 | 32

我的 R 代码在生成预测之前似乎工作正常。

library(forecast)
data <- read.csv("<file path>.csv", header=TRUE)

#build time series data
#start and end periods of observed data
inds <- seq(as.Date("2020-01-01"), as.Date("2020-06-30"), by = "day")

#the frequency = 7 days (i.e. week)
sts <- ts(data$Keyword, start = c(2020, as.numeric(format(inds[1], "%j"))), frequency = 7)

#generate the forecast
model.ets <- ets(sts, model = "ANA")
fc.ets <- forecast(model.ets, h = 60)
plot(fc.ets)

我遇到的问题是预测只是重复相同的模式(似乎没有考虑错误,趋势 and/or 调整预测的季节性)。

我想我需要调整 forecast() 函数,但不知道该怎么做。

在这种情况下,我们有一个跨度不到一年的每日系列,似乎显示每周季节性。请注意这里给出的:https://otexts.com/fpp2/ts-objects.html [2.1 - ts 对象],给 ts 对象的频率是 52.18,即 365.25/7,一年中的周数(考虑闰年)。这种季节性排除了不能处理频率大于 24 的数据的 ets 模型的使用,除非与 STL(使用黄土的季节性和趋势分解)结合使用。因此,我建议探索其他模型。 STL + ETS(A, Ad, N) [第二最佳模型] 点预测看起来最真实,但与 TBATS(1, {0,0}, 0.92, {<52.18, 6>}) 模型 [最佳模型] 请查看并尝试以下内容:

ts_ausAirBnb <- ts(ausAirBnb$airbnb_australia_, start = min(ausAirBnb$day), frequency = 52.18)

plot(decompose(ts_ausAirBnb))

snaivefit <- snaive(ts_ausAirBnb)

snaivefcast <- forecast(snaivefit, h = 60)

aafit <- auto.arima(ts_ausAirBnb)

aafcast <- forecast(aafit, h = 60)

stlffit <- stlf(ts_ausAirBnb, h = 60)

stlfcast <- forecast(stlffit, h = 60)

stlmfit <- stlm(ts_ausAirBnb)

stlmfcast <- forecast(stlmfit, h = 60)

tbatsfit <- tbats(ts_ausAirBnb)

tbatsfcast <- forecast(tbatsfit, h = 60)

nnetfit <- nnetar(ts_ausAirBnb)

nnetfcast <- forecast(nnetfit, h = 60)

autoplot(snaivefcast)

autoplot(aafcast)

autoplot(etsfcast)

autoplot(stlfcast)

autoplot(stlffit)

autoplot(stlmfcast)

autoplot(tbatsfcast)

autoplot(nnetfcast)