python - 如何解决从 Statsmodels 运行 ARIMA 时发生的 ValueError?
问题描述
我在构建 ARIMA 时使用以下代码
arima = ARIMA(ts.astype(float), freq = 'M',order=(4, d, 3)).fit()
当我运行上述内容时,我收到以下错误:
ValueError: The given frequency argument could not be matched to the given index.
我的数据框如下所示:
Date A B C D E F
2020-04-01 118 10932.54 203.617 1 0.296610 0.382666
2020-05-01 144 11645.20 167.575 1 0.361111 0.401953
2020-06-01 89 8545.86 196.084 1 0.449438 0.524768
2020-07-01 117 10512.30 194.442 1 0.384615 0.472443
2020-08-01 75 6613.11 189.289 1 0.280000 0.332995
该Date
列是我的索引。它没有频率标签。
我试图给它一个频率标签,如下
df.asfreq('M')
但是,这会将除列之外的每一列中的值Date
转换为NaN
.
我试图在没有频率参数的情况下运行 ARIMA 模型;但是,我收到以下警告消息:
ValueWarning: No frequency information was provided, so inferred frequency MS will be used.
同样,我收到了这个警告:
ValueError: The computed initial MA coefficients are not invertible
You should induce invertibility, choose a different model order, or you can pass your own start_params.
我不确定在这里做什么。任何帮助将不胜感激。
解决方案
首先,您可以使用
df = df.resample("M").last()
df
在不引入NaN
价值观的情况下获得一个干净的月末。
其次,您应该使用SARIMAX
orstatsmodels.tsa.arima.model.ARIMA
而不是statsmodels.tsa.arima_model.ARIMA
(注意_
后者中的 a.
在前者中)。statsmodels.tsa.arima.model.ARIMA
本质上是一个特例SARIMAX
,通常表现更好。您将需要 statsmodels 0.12.0rc0 或 master 分支的构建才能使用新的ARIMA
.
在这个新模型中,您不会遇到 MA 可逆性的问题。
推荐阅读
- java - 改造响应异常
- puppet - 木偶代理在每次运行后重新复制相同的文件
- matlab - 如何获取在 BONMIN 中评估函数的节点?
- pytorch - RandomAdjustSharpness 给出 IndexError: tuple index out of range
- excel - 在 vba 代码中组合 Worksheet_Change 事件
- asp.net - SOA 客户端发送数据的限制
- security - 是否有一种在 powerBI 中使用 DAX 或 M 动态评估组成员资格的方法?
- typescript - 类型鉴别器 - 如何限制参数
- uml - 有没有办法在 PlantUML 中实现每个块的 rankep 控制?
- javascript - 遇到 540 秒超时限制后如何从 Firebase Functions 迁移到 Cloud Run?