乐趣区

关于算法:拓端tecdatProphet在R语言中进行时间序列数据预测

原文链接:http://tecdat.cn/?p=7327

原文出处:拓端数据部落公众号

您将学习如何应用 Prophet(在 R 中)解决一个常见问题:预测公司明年的每日订单。

数据筹备与摸索

Prophet 最适宜每日数据以及至多一年的历史数据。咱们将应用 SQL 解决每天要预测的数据:

\`select\`\`  date,  valuefrom modeanalytics.daily_ordersorder by date`

咱们能够将 SQL 查问后果集通过管道传递 R 数据框对象中。首先,将您的 SQL 查问重命名为Daily Orders。而后,在 R 中,咱们能够应用以下语句将查问后果集传递到数据帧 df 中:

df <- datasets\[\["Daily Orders"\]\]

为了疾速理解您的数据框蕴含多少个观测值,能够运行以下语句:

#  dim(df)

Prophet 输出 DataFrame 中有两列:别离蕴含日期和数值。

 str(df)

在此示例中,您将须要进行一些手动的日期格局转换:

 df <- mutate (
df,
date = ymd_hms(date) #  )

当初您曾经筹备好要与 Prophet 一起应用的数据,在将数据输出到 Prophet 中之前,将其作图并检查数据。

  1. 2017 年 5 月左右,趋势轨迹产生了显著变动。默认状况下,Prophet 自动检测到此类“趋势变动点”,并容许趋势进行适当调整。
  2. 每周和每年都有显著的季节性。如果工夫序列长于两个周期以上,则 Prophet 将主动适应每周和每年的季节性。
  3. 咱们的察看后果的均值和方差随工夫减少。

Box-Cox 变换

通常在预测中,您会明确抉择一种特定类型的幂变换,以将其利用于数据以打消噪声,而后再将数据输出到预测模型中(例如,对数变换或平方根变换等)。然而,有时可能难以确定哪种变换适宜您的数据。

Box-Cox 变换是一种数据变换,用于评估一组 Lambda 系数(λ)并抉择可实现最佳正态性近似值的值。

如果咱们将新转换的数据与未转换的数据一起绘制,则能够看到 Box-Cox 转换可能打消随着工夫变动而察看到减少的方差:

预测

应用 Prophet 通过 Box-Cox 转换的数据集拟合模型后,当初就能够开始对将来日期进行预测。
当初,咱们能够应用该 predict() 函数对将来数据帧中的每一行进行预测。

forecast <- predict(m, future)

此时,Prophet 将创立一个预测变量的新数据框,其中蕴含名为的列下的将来日期的预测值yhat

plot(m, forecast)

在咱们的示例中,咱们的预测如下所示:

如果要可视化各个预测成分,则能够应用plot_components
 

预测和成分可视化显示,Prophet 可能精确地建模数据中的潜在趋势,同时还能够准确地建模每周和每年的季节性(例如,周末和节假日的订单量较低)。

逆 Box-Cox 变换

因为 Prophet 用于 Box-Cox 转换后的数据,因而您须要将预测值转换回其原始单位。要将新的预测值转换回其原始单位,您将须要执行 Box-Cox 逆转换。

当初,您已将预测值转换回其原始单位,当初能够将预测值与历史值一起可视化:


最受欢迎的见解

1. 在 python 中应用 lstm 和 pytorch 进行工夫序列预测

2.python 中利用长短期记忆模型 lstm 进行工夫序列预测剖析

3. 应用 r 语言进行工夫序列(arima,指数平滑)剖析

4.r 语言多元 copula-garch- 模型工夫序列预测

5.r 语言 copulas 和金融工夫序列案例

6. 应用 r 语言随机稳定模型 sv 解决工夫序列中的随机稳定

7.r 语言工夫序列 tar 阈值自回归模型

8.r 语言 k -shape 工夫序列聚类办法对股票价格工夫序列聚类

9.python3 用 arima 模型进行工夫序列预测

退出移动版