【问题标题】:How to evaluate time series forecasting models developed by prophet如何评估先知开发的时间序列预测模型
【发布时间】:2017-08-11 22:25:42
【问题描述】:

Facebook 发布了用于预测时间序列的 Prophet。虽然 get started page 确实概述了如何使用 predict() 函数进行预测,但它没有说明评估先知所做的时间序列预测的方法,例如残差检查或残差自相关等。 . 例如,以下几行将进行预测:

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”,结果会令人沮丧。我说的对吗?

【问题讨论】:

  • 除此之外,由于 Prophet 拟合的是回归模型而不是传统的时间序列模型,如何获得 Prophet 模型的 R 平方和 Durbin-Watson 自相关度量?

标签: r facebook time-series


【解决方案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 中编写自己的评估函数

【讨论】:

  • 感谢您的回复。实际上,我对找出残差的自相关更感兴趣。确实可以编写一个函数来执行所有这些操作,但我想知道是否有一些内置函数或另一个包中的函数可用。
  • 好吧,也许你应该尝试根据你的残差创建一个 r 时间序列对象并调用 r acf 函数。在下面的 r acf 文档中,您可以找到调用 acf 函数所需的参数及其说明。 stat.ethz.ch/R-manual/R-devel/library/stats/html/acf.html
猜你喜欢
  • 1970-01-01
  • 2019-10-05
  • 2014-09-05
  • 2016-08-08
  • 1970-01-01
  • 2022-07-13
  • 2017-12-31
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多