如何评估使用Prophet开发的时间序列预测模型

4
Facebook发布了用于预测时间序列的Prophet。虽然入门页面概述了如何使用predict()函数进行预测,但它并没有提到有关评估由prophet进行的时间序列预测的方法,例如检查残差或残差的自相关等等。例如,以下几行将进行预测:
library(prophet)    
library(dplyr)
library(lubridate)
df <- read.csv('example_wp_peyton_manning.csv') %>%  mutate(y = log(y))
df$ds <-ymd(df$ds)       # ds is now a Date type
model <- prophet(df)     # Create forecasting model
# Make data-frame with future dates for forecasting.
future <- make_future_dataframe(model, periods = 365)
# Make forecasts of these future periods
forecast <- predict(model, future)
# Calculate residuals for common dates
df1<-inner_join(forecast,df, by="ds")  
df1$residuals<-df1$y - df1$yhat
# And calculate ACF
acf(df1$residuals,lag.max = 10)

如果我用这种方式计算'acf',结果会让人很沮丧。我的想法正确吗?

1
此外,由于Prophet适用于回归模型而不是传统的时间序列模型,那么如何获取Prophet模型的R平方和Durbin-Watson自相关度量? - elmaroto10
1个回答

1

您可以编写自己的评估函数,基于均方误差来计算模型误差百分比。predict(model, future)方法可为现有数据和未来365个数据点(不在您的数据集中)提供预测。您拥有真实数据及其预测结果。假设您有1000条记录及其预测值,您可以使用最后20条或100条记录及其预测值来计算误差百分比。例如,您可以看一下我自己用Python编写的函数:

from sklearn.metrics import mean_squared_error
import numpy as np

def get_error_percentage(real_stock_price, predicted_stock_price):
    print("get_error_percentage() method was called.")
    rmse = math.sqrt(mean_squared_error(real_stock_price, 
    predicted_stock_price))
    # 800: avg of real_stock_price (test set)
    error_percentage = rmse / np.average(real_stock_price)
    return error_percentage

real_stock_price是您数据的最后20个记录或100个记录,而predicted_stock_price是real_stock_price的预测值。 您可以在R中编写自己的评估函数。


谢谢您的回复。实际上,我更感兴趣的是找出残差的自相关性。虽然可以编写一个函数来执行所有这些操作,但我想知道是否有内置函数或其他软件包中的函数可用。 - Ashok K Harnal
好的,也许你应该尝试基于你的残差创建一个 r 时间序列对象,并调用 r acf 函数。在下面的 r acf 文档中,您可以找到调用 acf 函数所需的参数及其描述。https://stat.ethz.ch/R-manual/R-devel/library/stats/html/acf.html - Ayberk Yavuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接