statsmodels.tsa.arima_model.ARIMA.predict(...)返回什么?

时间:2019-09-29 20:35:08

标签: python arima

我正在解决以下问题:我们得到了一组 {DateTime,Price} 来代表股票的价格。一些价格为空,我们需要通过在非空条目之间进行插值来确定这些价格。我尝试了各种插值器-线性,三次样条曲线等,但是插值的精度不够好。

因此,我决定使用ARIMA对非Null条目进行建模,然后使用该模型来预测Null条目的DateTime处的值。这是代码:

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 ) * 1000.0
    # Train the ARIMA model:
    train_datetime_ms = datetime_ms[ price_is_not_NaN ]
    train_price = df.price[ price_is_not_NaN ]
    print( "len(train_price)", len(train_price), file = sys.stderr )
    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 ]
    print( "len(missing_datetime_ms)", len(missing_datetime_ms), file = sys.stderr )
    missing_price = arima_model.predict( exog = missing_datetime_ms, typ = "levels" )
    print( "len(missing_price)", len( missing_price ), file = sys.stderr )

我期望的是predict调用将为每个Null条目返回一个预测的价格。但是,我从打印语句中看到的是:

len(train_price) 126
len(missing_datetime_ms) 20
len(missing_price) 125

似乎不是返回我感兴趣的值,而是返回训练值(少了一个)。

您能解释一下我如何滥用ARIMA,以及如何按照我的意愿去做吗?

0 个答案:

没有答案