【问题标题】:auto.arima not reading csv file dates correctly (Full Code + Dataset)auto.arima 未正确读取 csv 文件日期(完整代码 + 数据集)
【发布时间】:2020-10-25 23:34:00
【问题描述】:

这是一个完整的代码+数据集

  1. r 代码https://drive.google.com/file/d/16UOuY9HaeGFmNn7POl0Z8vjIxP70xUSv/view?usp=sharing
  2. 纳斯达克 100 日价格数据集https://drive.google.com/file/d/1XXNOdWFwY_RqZ1vXmyO5Wj-o4Nu6ci1l/view?usp=sharing

“auto.arima”函数只是拒绝正确读取日期。

请你看一下。到目前为止,我在 StackOverflow / Google / YouTube 上没有找到任何东西。也许我做错了什么?

我只是想让这个工作与预测一起玩(在大多数情况下根本不准确,但我这样做是为了好玩)。

谢谢! :)

【问题讨论】:

  • 您的问题到底是什么?该代码有任何错误吗? auto.arima 函数实际上并不“读取日期”。我想知道您是否正确读取了数据文件。你说它是一个 csv 文件,但代码有 read_excel
  • 嗨,欢迎来到 Stack Overflow。理想情况下,您的代码将在帖子中。请查看制作可重现的示例stackoverflow.com/help/minimal-reproducible-example 和更多提示here

标签: r time-series forecasting arima


【解决方案1】:

这与auto.arima() 无关。您正在使用不明确存储日期的 ts 对象;相反,它们存储开始时间、结束时间和频率(每个时间段的观察次数)。预测包旨在处理ts 对象。

由于您已经在使用tidyverse,您可能会发现使用较新的tsibble 明确存储日期的对象类更容易。这是您发布的相同分析,但使用 tsibble 对象完成。

library(tidyverse)
library(tsibble)
library(feasts)
#> Loading required package: fabletools
library(fable)

NDX_prices <- read_csv("~/Downloads/NDX.csv") %>%
  mutate(trading_day = row_number()) %>%
  as_tsibble(index=trading_day) 
#> Parsed with column specification:
#> cols(
#>   Date = col_date(format = ""),
#>   Close = col_double()
#> )

NDX_prices %>%
  autoplot(Close) + 
  ggtitle("NASDAQ 100 ARIMA") + ylab("Closing Prices")


fit_ARIMA <- NDX_prices %>%
  model(arima = ARIMA(Close))

fit_ARIMA %>% report()
#> Series: Close 
#> Model: ARIMA(1,1,0) 
#> 
#> Coefficients:
#>           ar1
#>       -0.3767
#> s.e.   0.0583
#> 
#> sigma^2 estimated as 25768:  log likelihood=-1630.42
#> AIC=3264.83   AICc=3264.88   BIC=3271.88

fit_ARIMA %>% gg_tsresiduals()


fcast <- fit_ARIMA %>% forecast(h = 1)

fcast
#> # A fable: 1 x 4 [1]
#> # Key:     .model [1]
#>   .model trading_day           Close  .mean
#>   <chr>        <dbl>          <dist>  <dbl>
#> 1 arima          253 N(10318, 25768) 10318.

fcast %>% autoplot(NDX_prices)

reprex package (v0.3.0) 于 2020-07-06 创建

注意事项:

  • 您的数据是csv文件,不是excel文件,所以不能使用read_excel。请改用read_csv
  • 因为交易并非每天都发生,您需要使用trading_day(自系列开始以来的交易日数)而不是Date 为系列编制索引。否则该系列将包含大量缺失值。
  • 同样,预测按交易日而非日期进行索引。但是,如果您知道未来的交易日期,这些可以转换回日期。

【讨论】:

  • 谢谢罗伯!现在我懂了!非常感谢,我是菜鸟,每天都在学习。你把一切都解释清楚了,现在我明白了。你扩展了我的大脑!
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2021-03-31
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多