📜  在 R 编程中使用 Facebook Prophet 进行时间序列分析

📅  最后修改于: 2022-05-13 01:54:20.129000             🧑  作者: Mango

在 R 编程中使用 Facebook Prophet 进行时间序列分析

时间序列分析是一种分析和学习数据集在一段时间内的行为的方法。此外,它通过在图表上绘制时间序列对象来帮助学习数据集的行为。在 R 编程中,可以使用ts()函数轻松执行,该函数获取数据向量并将其转换为函数参数中指定的时间序列对象。

Facebook Prophet 是 Facebook 开发的用于预测时间序列对象或数据的工具。它通过预测价格、销售或天气来帮助企业了解其产品的行为。 Facebook Prophet 工具基于可分解模型,即趋势、季节性和假期,有助于在这些约束条件下制作更准确的预测模型。它比 ARIMA 模型好得多,因为它有助于调整和调整输入参数。

先知模型的数学方程

 y(t) = g(t) + s(t) + h(t) + e(t)

Facebook Prophet 模型中使用的一些重要术语

  • 趋势
    趋势是在递增或递减方向上的发展转变。数学上,

    g(t)=\frac{C}{1+e^{-k(t-m)}}

  • 季节性
    季节性是时间序列对象在特定时间/季节发生并改变趋势的特征。
  • 节假日
    假期是一个对业务发生很大变化的时间段。它可以根据业务获利或亏损。

R中的实现

在下面的示例中,让我们下载数据集 AirPassengers 并使用 Facebook Prophet 模型执行数据集的预测。执行整个代码后,模型将显示预测值以及业务的趋势和季节性。

第 1 步:安装所需的库

# Install the library
install.packages("prophet")

第 2 步:加载所需的库

# Load the library
library(prophet)

第 3 步:从此处下载数据集 AirPassengers

# Dataset
ap <- read.csv("example_air_passengers.csv")

第 4 步:调用预测函数以拟合模型

m <- prophet(ap)

第 5 步:做出预测

# Predictions
future <- make_future_dataframe(m,
                    periods = 365)
  
# Print predictions
cat("\nPredictions:\n")
tail(future)

输出:

Predictions:
        ds
504 1961-11-26
505 1961-11-27
506 1961-11-28
507 1961-11-29
508 1961-11-30
509 1961-12-01

第 6 步:使用预测预测数据

# Forecast
forecast <- predict(m, future)
tail(forecast[c('ds', 'yhat', 
    'yhat_lower', 'yhat_upper')])
ds         yhat    yhat_lower yhat_upper
504 1961-11-26 497.2056   468.6301   525.7918
505 1961-11-27 496.0703   467.8579   525.6728
506 1961-11-28 493.1698   465.5788   522.9650
507 1961-11-29 496.0497   469.2889   524.6313
508 1961-11-30 492.8452   463.7279   520.4519
509 1961-12-01 493.6417   466.3496   522.9887

第 7 步:绘制预测图

# Output to be present
# As PNG file
png(file = "facebookprophetGFG.png")
  
# Plot
plot(m, forecast)
  
# Saving the file
dev.off()

输出:
输出图
上图为 AirPassengers 的预测值,其中黑点表示原始数据,深蓝色线表示预测值(yhat),浅蓝色区域表示 yhat_upper 和 yhat_lower 值。

第 8 步:绘制趋势、每周和每年的季节性

# Output to be present 
# As PNG file
png(file = "facebookprophettrendGFG.png")
  
# Plot
prophet_plot_components(m, forecast)
  
# Saving the file
dev.off()

输出:
输出图
上图显示了在给定时间段内航空乘客增加的数据集的趋势。在第二张图中,它显示了数据集在一段时间内(即每年)的季节性,并表示航空乘客在 6 月至 8 月之间的月份中最多。