标签: holtwinters

Holt-Winters时间序列预测与statsmodels

我尝试使用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)

我不确定我在这里缺少什么.

这是情节可视化

预测似乎适用于训练数据的早期部分

python time-series forecasting statsmodels holtwinters

8
推荐指数
2
解决办法
2万
查看次数

HoltWinter初始值与Rob Hyndman理论不匹配

我正在按照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)

在此输入图像描述

r time-series forecasting holtwinters

6
推荐指数
1
解决办法
790
查看次数

R:按列组应用Holt Winters来预测时间序列

我有一个频率= 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 time-series forecasting holtwinters

6
推荐指数
1
解决办法
837
查看次数

避免 R 中 for 循环中的“优化失败”

我正在尝试使用 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 <- …

optimization for-loop r forecasting holtwinters

5
推荐指数
1
解决办法
2772
查看次数

R HoltWinters预测包 - 避免过度拟合数据

我正在使用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)

optimization r forecasting holtwinters

5
推荐指数
1
解决办法
710
查看次数

预测包中的R forecast.holtwinters未找到

我正在尝试使用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.

r forecasting holtwinters

5
推荐指数
2
解决办法
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 方法中使用整个去年或其中的一部分有什么不同吗?

提前致谢 :)

statistics r time-series forecasting holtwinters

5
推荐指数
1
解决办法
4311
查看次数

无法使用 statsmodels 库实现 Holt-Winters 方法

我有一个月的每日数据。它每天捕获cpu utilization数据。我想产生一些预测结果。我将数据分为两部分train- 前15天的数据和test最后16天的数据我想做一个预测,并将预测结果与给定的过去16天的结果进行比较。到目前为止,我已经尝试了各种实现,例如moving average, 。simple exponential smoothing现在我想尝试更复杂和准确的东西,例如Holt-Winters MethodARIMA 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 python-3.x pandas statsmodels holtwinters

5
推荐指数
1
解决办法
7287
查看次数