【问题标题】:In R, how does plot() work for fb prophet models?在 R 中,plot() 如何为 fb 先知模型工作?
【发布时间】:2018-01-12 14:55:25
【问题描述】:

Facebook's Prophet in R(还有一个 Python 版本)用于生成时间序列预测。

模型 m 由以下人员创建:

m <- prophet(df)
future <- make_future_dataframe(m, periods = 365)
forecast <- predict(m, future)
plot(m, forecast)

返回一个格式很好的图表,例如:

我想在图表中添加其他指标,除了那些是 mforecast 的一部分,例如添加由另一个预测生成的预测结​​果方法等...

但是当我尝试这样的事情时:

plot(m,forecast, arima_model)

我得到一个错误:

 Error in uncertainty && exists("yhat_lower", where = df) : 
 invalid 'x' type in 'x && y' 

那么如何将其他数据添加到先知模型图中?

此外,很酷的格式(带有网格的灰色背景、格式正确的日期、颜色方案的不确定性等)从何而来?

我虽然 plot() 可能会从 m 中获取参数,但是当我检查 m 时似乎是一个常规数据框.我看不到任何表明格式化绘图的参数的东西。

names(m)

[1] "growth"                  "changepoints"            "n.changepoints"         
[4] "yearly.seasonality"      "weekly.seasonality"      "daily.seasonality"      
[7] "holidays"                "seasonality.prior.scale" "changepoint.prior.scale"
[10] "holidays.prior.scale"    "mcmc.samples"           "interval.width"         
[13] "uncertainty.samples"     "specified.changepoints"  "start"                  
[16] "y.scale"                 "logistic.floor"          "t.scale"                
[19] "changepoints.t"          "seasonalities"          "extra_regressors"       
[22] "stan.fit"                "params"                  "history"                
[25] "history.dates"          

typeof(m)
[1] "list"

plot() 从哪里获取所有格式?以及如何添加额外的 I 数据来绘制?

【问题讨论】:

  • 它使用ggplot2。如果您在控制台中输入plot.prophet,您可以看到完整的代码。你应该可以像任何 ggplot 一样修改它。
  • Gregor 是对的,你需要 ggplot2。这是一些资源的链接:had.co.nz/ggplot2

标签: r facebook plot


【解决方案1】:

你得到一个错误的原因是你给一个带有两个参数的情节提供了三个参数。如果您想计算移动平均值 (armia_model) 并将其与您之前绘制的内容进行比较,您可以执行以下操作:

library(prophet)
library(ggplot2)
library(tseries)
library(forecast)
library(dplyr)
library(data.table)

df <- fread("pm.csv") # Payton Manning's Yearly Yardage

m <- prophet(df)

future <- make_future_dataframe(m, periods = 365)

forecast <- predict(m, future)

plot(m, forecast) +
  xlab("Date") +
  ylab("Data") +
  theme_bw() + 
  theme_bw() + 
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black")) +
  ggtitle("Learning How to Use Prophet")

Click for Plot

现在,让我们计算移动平均线(7 天),然后使用预测器分析结果

arma <- data.frame(df$ds, ma(df$y, order = 7))

colnames(arma) <- c("ds", "tsma_order") 

arma_df_for_prophet <- inner_join(df, arma, by = "ds") %>% 
    filter(tsma_order != is.na(tsma_order))

m_arma <- prophet(arma_df_for_prophet)

future_arma <- make_future_dataframe(m_arma, periods = 365)

forecast_arma <- predict(m_arma, future_arma)

plot(m_arma, forecast_arma)

Plot for Moving Average, Click Here

如果您在控制台中输入 m 或预测,它将显示每个数据框的所有元素。 m_arma 和 forecast_arma 也是如此。

您可以找到先知here 的完整 CRAN,您应该阅读它以了解该软件包的工作原理。希望这有助于回答您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多