我尝试使用holt-winters model如下所示的预测,但我不断得到与我期望的预测不一致的预测.我还展示了情节的可视化
Train = Airline[:130]
Test = Airline[129:]
from statsmodels.tsa.holtwinters import Holt
y_hat_avg = Test.copy()
fit1 = Holt(np.asarray(Train['Passengers'])).fit()
y_hat_avg['Holt_Winter'] = fit1.predict(start=1,end=15)
plt.figure(figsize=(16,8))
plt.plot(Train.index, Train['Passengers'], label='Train')
plt.plot(Test.index,Test['Passengers'], label='Test')
plt.plot(y_hat_avg.index,y_hat_avg['Holt_Winter'], label='Holt_Winter')
plt.legend(loc='best')
plt.savefig('Holt_Winters.jpg')
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里缺少什么.

预测似乎适用于训练数据的早期部分
我正在按照Rob Hyndman的教程进行初始化(添加剂).
计算初始值的步骤指定为:

我在Rob Hydman免费在线教科书中提供的数据集上手动(使用笔/纸)上面的步骤.我在前两个步骤后得到的值是:

我在"R"上使用了相同的数据集,但R中的季节性输出值却截然不同(截图如下)

不确定我做错了什么.任何帮助,将不胜感激.
我刚刚观察到的另一个有趣的事情是,(l(t))教科书中的初始级别是33.8,但在R输出中它是:48.24,这证明我在手动计算时遗漏了一些东西.
编辑:
以下是我如何计算平均移动平均值(基于此链接第2节中使用的公式.)
计算后我已经去趋势,意味着原始值 - 平滑值.
然后是季节性价值:这是
S1 =Average of Q1
S2 = Average of Q2
...
Run Code Online (Sandbox Code Playgroud)

我有一个频率= 7的时间序列数据如下:
combo_1_daily_mini <- read.table(header=TRUE, text="
region_1 region_2 region_3 date incidents
USA CA San Francisco 1/1/15 37
USA CA San Francisco 1/2/15 30
USA CA San Francisco 1/3/15 31
USA CA San Francisco 1/4/15 33
USA CA San Francisco 1/5/15 28
USA CA San Francisco 1/6/15 33
USA CA San Francisco 1/7/15 39
USA PA Pittsburg 1/1/15 38
USA PA Pittsburg 1/2/15 35
USA PA Pittsburg 1/3/15 37
USA PA Pittsburg 1/4/15 33
USA PA Pittsburg 1/5/15 30
USA PA …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 R 中的 HoltWinters 函数进行大量时间序列预测。为此,我使用 for 循环并在内部调用该函数,并将预测保存在 data.frame 中。
问题是 HoltWinters 函数的一些结果给出了错误,特别是优化错误:
Error en HoltWinters(TS[[i]]) : optimization failure
Run Code Online (Sandbox Code Playgroud)
这个错误打破了循环。
所以我需要的是“尝试”之类的东西:如果它可以使 HoltWinters 函数,则保存预测,否则保存错误。
下面的代码复制了这个问题:
data <- list()
data[[1]] <- rnorm(36)
data[[2]] <-
c(
24,24,28,24,28,22,18,20,19,22,28,28,28,26,24,
20,24,20,18,17,21,21,21,28,26,32,26,22,20,20,
20,22,24,24,20,26
)
data[[3]] <- rnorm(36)
TS <- list()
Outputs <- list()
for (i in 1:3) {
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}
Run Code Online (Sandbox Code Playgroud)
其中 i <- …
我正在使用R中的HoltWinters预测包来生成每月呼叫量数据的预测.
它在大多数情况下运行良好,但有过度拟合数据的趋势,特别是如果有特殊时期,例如呼叫需求的阶跃变化.
在最近的一个例子中,中间设置的阶段变化α为0.94,beta为0,gamma为0,这产生奇怪的预测.
Month Data
1 7082
2 6407
3 5479
4 5480
5 5896
6 6038
7 5686
8 6126
9 6280
10 6893
11 6028
12 5496
13 3569
14 3383
15 3718
16 3351
17 3340
18 3559
19 3722
20 3201
21 3494
22 2810
23 2611
24 2471
25 7756
26 6922
27 7593
28 6716
29 7278
30 7071
Run Code Online (Sandbox Code Playgroud)
这是我一直在使用的R脚本
scandata <-read_csv("525-gash.csv");
pages <-scandata[,2];
myts <-ts(pages , start=c(2015, 1), frequency = 12)
myforecast <- …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用forecast.holtwinters函数,当我尝试运行它时:
dftimeseriesforecast <- forecast.HoltWinters(data, h=65)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:找不到功能"forecast.HoltWinters"
我也试过这个:
dftimeseriesforecast= forecast::forecast.HoltWinters(data, h=65)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
错误:'forecast.HoltWinters'不是'namespace:forecast'中的导出对象
我使用以下代码查看预测包中的这个函数列表:
ls("package:forecast")
Run Code Online (Sandbox Code Playgroud)
这会返回:
[1]"%>%""准确度""Acf""arfima""Arima""arima.errors""arimaorder""auto.arima"
[9]"autolayer""baggedETS""bats""bizdays""bld .mbb.bootstrap""BoxCox""BoxCox.lambda""Ccf"
[17]"checkresiduals""croston""CV""CVar""dm.test""dshw""easter""ets"
[25]"findfrequency ""forecast""forecast.ets""fourier""fourierf""gas""geom_forecast""GeomForecast"
[33]"getResponse""ggAcf""ggCcf""gghistogram""gglagchull""gglagplot""ggmonthplot""ggPacf "
[41]"ggseasonplot""ggsubseriesplot""ggtaperedacf""ggtaperedpacf""ggtsdisplay""gold""holt""hw"
[49]"InvBoxCox""is.acf""is.Arima""is.baggedETS"" is.bats""is.constant""is.ets""is.forecast"
[57]"is.mforecast""is.nnetar""is.nnetarmodels""is.splineforecast""is.stlm""ma" "meanf""monthdays"
[65]"msts""na.interp""naive""ndiffs""nnetar""nsdiffs""Pacf""remaining"
[73]"rwf""seasadj""season""seasonaldummy" "seasonaldummyf""seasonplot""ses""sindexf"
[81]"snaive""splinef""StatForecast""stlf""stlm""conea cf""taperedpacf""taylor"
[89]"tbats""tbats.components""thetaf""trendcycle""tsclean""tsCV""tsdisplay""tslm"
[97]"tsoutliers""wineind""woolyrnq"
有谁知道发生了什么?我以前用过这个,没有问题.我正在使用预测版本8.1.
我有一个按天分组的数据库指标,我需要预测未来 3 个月的数据。这些数据具有季节性(我相信季节性是一周中的几天)。
我想使用使用 R 的 Holt Winters 方法,我需要创建一个时间序列对象,它要求频率,(我认为是 7)。但是我怎么知道我是否确定?有识别最佳频率的功能吗?
我正在使用:
FID_TS <- ts(FID_DataSet$Value, frequency=7)
FID_TS_Observed <- HoltWinters(FID_TS)
Run Code Online (Sandbox Code Playgroud)
如果我用 分解这些数据decompose(FID_TS),我有:
这是我的第一个预测FID_TS_Observed:
当我查看去年的历史时,它们在前 3 个月开始较低,然后从第 3 个月增加到 11 个月,然后再次下降。
也许我的每日数据,每天都有每周季节性(频率 = 7)和每月季节性(频率 = 7x30 = 210)?我需要过去 365 天?
有什么办法可以按星期几和按月放置频率?另一件事,我在 Holt-Winters 方法中使用整个去年或其中的一部分有什么不同吗?
提前致谢 :)
我有一个月的每日数据。它每天捕获cpu utilization数据。我想产生一些预测结果。我将数据分为两部分train- 前15天的数据和test最后16天的数据我想做一个预测,并将预测结果与给定的过去16天的结果进行比较。到目前为止,我已经尝试了各种实现,例如moving average, 。simple exponential smoothing现在我想尝试更复杂和准确的东西,例如Holt-Winters Method和ARIMA model。下面是我的结果get forHolt's Linear Trend方法考虑了趋势和季节性。
现在我想实现Holts Winter method这是首选的预测技术之一。下面是代码
# get the first 15 days
df_train = psql.read_sql("SELECT date,cpu FROM {} where date between '{}' and '{} 23:59:59';".format(conf_list[1], '2018-03-02', '2018-03-16'), conn).fillna(0)
df_train["date"] = pd.to_datetime(df_train["date"], format="%m-%d-%Y")
df_train.set_index("date", inplace=True)
df_train = df_train.resample('D').mean().fillna(0)
# get the last 15 days
df_test = psql.read_sql("SELECT date,cpu …Run Code Online (Sandbox Code Playgroud) forecasting ×8
holtwinters ×8
r ×6
time-series ×4
optimization ×2
statsmodels ×2
for-loop ×1
pandas ×1
python ×1
python-3.x ×1
statistics ×1