【问题标题】:Using Statsmodel ARIMA without dates使用不带日期的 Statsmodel ARIMA
【发布时间】:2018-03-10 16:55:15
【问题描述】:

我有一个时间序列,但我没有任何日期。

我知道收集的数据是均匀分布的。

Statsmodel ARIMA 假定我必须有日期并抛出以下错误:

ValueError: Given a pandas object and the index does not contain dates

不知道日期就不能使用 ARIMA 吗?

【问题讨论】:

  • 如果您知道它们是均匀分布的并且您需要日期 - 为什么不创建虚拟日期并将它们均匀分布?每天左右?除此之外:请再次查看how to askon-topic,如果您有任何问题,请提供您的代码mvce
  • 我尝试过这样做,但我对 Pandas 和 Numpy 不熟悉,如果您能提供代码摘录,将不胜感激。
  • 如果您通过编辑问题将产生错误的代码与错误一起发布,我们将不胜感激,以便我们更容易将其复制并粘贴到 IDE 中并修复它。也发布样本数据。谢谢。如果您根本不知道,那么问的地方是错误的,教程会教您基础知识,例如。从这里开始:arima-for-time-series-forecasting-with-python
  • 我的意思是说我不熟悉 Pandas 以及如何创建虚拟日期并将它们设置为数据框的键。由于我昨天和今天都尝试过并且没有成功,所以我决定在 SO 上发布问题。
  • 更简单的方法是只使用 numpy 数组而不是 pandas 系列,numpy 数组没有索引。使用日期的主要优点是可以按日期指定预测和预测周期。

标签: python time-series statsmodels arima


【解决方案1】:

我的数据由一个 .csv 文件组成,如下所示:

286
276
...
239
236

为了使用“statsmodels.tsa.arima_model”包,无论出于何种原因我仍然不清楚(因为据我所知,ARIMA 应该能够在没有指定日期的情况下运行)你的 DataFrame 索引必须在 pandas.DatetimeIndex格式。

我创建了一天频率如下的虚拟日期:

my_data = pd.read_csv('data_2018.csv', header=None)
my_data = my_data.values.flatten()

# create dummy dates for the arima modules....
dates = pd.date_range('1900-1-1', periods=len(my_data), freq='D')
# add the dates and the data to a new dataframe
ts = pd.DataFrame({'dates': dates, 'data': my_data})
# set the dataframe index to be the dates column
ts = ts.set_index('dates')

【讨论】:

  • 我将其移至您的问题中-但这是否回答了您的问题,应该将其保留为答案,因此再次删除了我的编辑。这解决了您的问题吗?
  • 确实如此,“您可以在 2 天内接受自己的答案。”。别无选择,只能等待。
  • 抱歉搞砸了您的问题编辑历史记录 :)
  • 遵循此过程,但将 Pandas 数据转换为对象的 numpy dtype。使用 np.asarray(data) 错误检查输入数据。
猜你喜欢
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多