我可以使用statsmodel ARIMA插值时间序列吗?

时间:2019-10-03 14:20:55

标签: python pandas arima

在Python 3.7中,我有一个由Pandas数据框表示的时间序列,其中的索引是DateTimeIndex,而单个值列是股价:

enter image description here

差距对应于NaN“价格”值,并且有126个非NaN值和20个NaN值。我想做的是对非NaN值进行插值以预测NaN的值。我尝试了几种插值方法(线性,三次样条曲线),但它们不够准确,从上图可以看出,它存在明显的上升趋势,并且还具有每周周期性的痕迹,因此我决定使用statsmodel ARIMA。这是我的代码:

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_price最终成为二十个条目的数组状对象,例如missing_datetime_ms。相反,missing_price有125个条目,比train_datetime_ms:train_price中的样本数量少一个。

很明显,我不了解内生外生的含义(更不用说 interpolate extrapolate )。有人可以解释一下我如何获得20个预测条目的预期结果吗?

0 个答案:

没有答案