Python 我可以使用statsmodel ARIMA插值时间序列吗?
在Python 3.7中,我有一个时间序列,由一个数据帧表示,其中索引是DateTimeIndex,单值列是股价: 缺口对应于NaN“价格”值,有126个非NaN值和20个NaN值。我想做的是插值非NaN值,以预测NaN值。我尝试了几种插值方法(线性、三次样条),但它们不够精确,从上面的图来看,似乎有明显的上升趋势,也有一些每周周期的痕迹,所以我决定使用statsmodel ARIMA。这是我的密码:Python 我可以使用statsmodel ARIMA插值时间序列吗?,python,pandas,arima,Python,Pandas,Arima,在Python 3.7中,我有一个时间序列,由一个数据帧表示,其中索引是DateTimeIndex,单值列是股价: 缺口对应于NaN“价格”值,有126个非NaN值和20个NaN值。我想做的是插值非NaN值,以预测NaN值。我尝试了几种插值方法(线性、三次样条),但它们不够精确,从上面的图来看,似乎有明显的上升趋势,也有一些每周周期的痕迹,所以我决定使用statsmodel ARIMA。这是我的密码: def fill_in_dataframe_ARIMA( df ): price_
def fill_in_dataframe_ARIMA( df ):
price_is_not_NaN = df[ 'price' ].notnull()
price_is_NaN = np.logical_not( price_is_not_NaN )
# Convert the datetimes of the index into milliseconds:
datetime_ms = df.index.map( to_ms )
# Train the ARIMA model:
train_datetime_ms = datetime_ms[ price_is_not_NaN ]
train_price = df.price[ price_is_not_NaN ]
arima_model = ARIMA( train_price, ( 5, 1, 2 ), train_datetime_ms ).fit()
# Use model to predict the missing prices:
missing_datetime_ms = datetime_ms[ price_is_NaN ]
missing_price = arima_model.predict( exog = missing_datetime_ms )
return missing_price
我期望的是missing\u price
最终成为一个类似数组的对象,包含20个条目,比如missing\u datetime\u ms
。相反,missing\u price
有125个条目,比train\u datetime\ms:train\u price
中的样本数少一个
显然,我不明白什么是内生和外生(更不用说内插和外推)。有人能解释一下我是如何得到20个预测条目的预期结果的吗?我对一些空气污染数据也有类似的问题。还没有找到解决办法。你修好了吗?我在读了几篇说明后放弃了ARIMA,这些说明表明用于训练ARIMA的时间序列必须是周期性的,并且在你想要预测的时间之前,每个周期都必须有样本。此外,如果你决定无论如何都要尝试,请查看SARIMA(季节性ARIMA),它包括对季节性和趋势的处理,而普通ARIMA假设时间序列是平稳的。我对一些空气污染数据也有类似的问题。还没有找到解决办法。你修好了吗?我在读了几篇说明后放弃了ARIMA,这些说明表明用于训练ARIMA的时间序列必须是周期性的,并且在你想要预测的时间之前,每个周期都必须有样本。此外,如果您决定无论如何都要尝试,请查看SARIMA(季节性ARIMA),它包括对季节性和趋势的处理,而普通ARIMA假设时间序列是平稳的。