📅  最后修改于: 2023-12-03 15:07:47.930000             🧑  作者: Mango
Facebook Prophet 是一个用于时间序列分析和预测的开源软件库。它能够高效地处理大型数据集,并根据数据的趋势、季节性和节假日等因素来生成准确的预测结果。与传统的时间序列方法相比,Prophet 具有更好的可解释性和更简单的使用方式。
本教程将介绍如何在 R 编程中使用 Facebook Prophet 进行时间序列分析。我们将使用一个示例数据集来演示如何使用 Prophet 进行数据建模和预测分析。
在安装使用 Facebook Prophet 之前,我们需要安装一些依赖库。在 R 中,我们可以使用以下命令来安装这些依赖库:
install.packages(c("prophet", "dplyr", "ggplot2"))
我们将使用一个示例数据集,该数据集包含了某电商公司在过去几年中每个月的销售额数据。 此数据集已预处理为适合使用 Facebook Prophet 进行分析的格式。
以下是示例数据集的前几行:
Month Sales
Jan-13 14236.9
Feb-13 4519.89
Mar-13 55691.01
Apr-13 28295.35
May-13 23648.29
Jun-13 34595.13
其中,Month 列包含了每个月的日期,格式为 "MMM-YY",例如 "Jan-13" 表示 2013 年 1 月。Sales 列包含了每个月的销售额。
我们首先需要将数据导入到 R 中。这可以通过以下命令来完成:
sales_df <- read.csv("sales_data.csv")
请确保将路径替换为实际数据文件的路径。
我们现在使用 Prophet 来创建我们的时间序列模型。以下是创建 Prophet 模型的基本步骤:
# 创建一个 Prophet 模型对象
m <- prophet()
# 添加我们的数据
m <- add_seasonality(m, name="yearly", period=365.25, fourier.order=10)
m <- add_seasonality(m, name="quarterly", period=365.25/4, fourier.order=10)
m <- add_seasonality(m, name="monthly", period=30.5, fourier.order=10)
m <- add_regressor(m, "Holiday")
# 拟合数据
m <- fit.prophet(m, sales_df)
# 预测未来一年的销售额
future <- make_future_dataframe(m, periods=12, freq="month")
forecast <- predict_prophet(m, future)
在这里,我们首先创建了一个 Prophet 模型对象,并使用 add_seasonality 和 add_regressor 等函数来添加数据中存在的季节性、节假日和特征。然后我们通过 fit.prophet 函数来拟合我们的模型,最后使用 make_future_dataframe 和 predict_prophet 函数来预测未来一年的销售额。
让我们详细解释这些步骤。
我们首先需要创建一个 Prophet 模型对象。以下是创建 Prophet 模型对象的基本命令:
m <- prophet()
Prophet 能够自动发现数据的季节性,但有时我们也需要手动指定一些季节性和节假日信息。我们可以使用 add_seasonality 和 add_regressor 等函数来手动指定这些信息。
我们用 add_seasonality 函数为 Prophet 模型添加年度、季度和月度的季节性。以下是添加季节性的示例命令:
m <- add_seasonality(m, name="yearly", period=365.25, fourier.order=10)
m <- add_seasonality(m, name="quarterly", period=365.25/4, fourier.order=10)
m <- add_seasonality(m, name="monthly", period=30.5, fourier.order=10)
这些命令将分别为 Prophet 模型添加年度、季度和月度的季节性,其中周期分别为 365.25 天、365.25/4 天和 30.5 天,fourier.order 参数是对季节性的拟合程度,值越高则拟合程度越高。
我们用 add_regressor 函数为 Prophet 模型添加节假日信息。以下是添加节假日信息的示例命令:
m <- add_regressor(m, "Holiday")
这个命令将为 Prophet 模型添加一个名为 "Holiday" 的特征(如有节假日则为 1,否则为 0)。
我们现在可以使用 fit.prophet 函数来拟合我们的数据。以下是拟合数据的示例命令:
m <- fit.prophet(m, sales_df)
这个命令将为我们的 Prophet 模型拟合数据。
我们现在已经拟合了我们的 Prophet 模型,可以使用 make_future_dataframe 和 predict_prophet 函数来预测未来一年的销售额。以下是预测未来销售额的示例命令:
future <- make_future_dataframe(m, periods=12, freq="month")
forecast <- predict_prophet(m, future)
这些命令将创建一个包含未来 12 个月日期的 dataframe,然后使用 Prophet 模型来预测这些未来日期的销售额。
最后,我们可以使用 ggplot2 库来可视化我们的结果。以下是一个简单的可视化结果的示例:
library(ggplot2)
ggplot(aes(x = ds, y = y), data = sales_df) +
geom_line(color = "blue") +
geom_line(aes(x = forecast$ds, y = forecast$yhat),
color = "red") +
labs(x = "", y = "Sales") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "none") +
ggtitle("Sales forecast using Prophet")
这段代码将生成一个折线图,显示我们的实际销售额和预测销售额。
本教程介绍了如何在 R 编程中使用 Facebook Prophet 进行时间序列分析。我们使用一个示例数据集来演示如何使用 Prophet 模型建立时间序列模型和预测未来的销售额。此外,我们还使用 ggplot2 库来可视化我们的结果。
希望这个教程有助于你学习和使用 Facebook Prophet 进行时间序列分析。