如何解决从Statsmodels运行ARIMA时发生的ValueError?

问题描述

我在构建ARIMA时使用以下代码

componentDidMount() {
   
}

运行以上命令时出现以下错误

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

我试图在没有频率参数的情况下运行ARIMA模型;但是,我收到以下警告消息:

NaN

我也收到此警告:

ValueWarning: No frequency @R_16_4045@ion was provided,so inferred frequency MS will be used.

我不确定在这里做什么。任何帮助将不胜感激。

解决方法

首先,您可以使用

df = df.resample("M").last()

在不引入df值的情况下获得干净的月末NaN

第二,您应该使用SARIMAXstatsmodels.tsa.arima.model.ARIMA而不是 比statsmodels.tsa.arima_model.ARIMA(请注意,后者中的_是前者中的.)。 statsmodels.tsa.arima.model.ARIMA本质上是SARIMAX的一种特例,通常表现更好。您将需要statsmodels 0.12.0rc0或master分支的构建才能使用新的ARIMA

在此新模型中,您将不会遇到MA可逆性的问题。

,

“ MS”表示“月末”,而“ M”表示“月末”。

我的数据是每个月初的数据,因此我应该将'MS'传递给频率参数。

我用try / except解决了不可逆的错误。