我有一个时间序列输入数据,其中时间是不规则的,如下所示:data_series_final是数据序列
Price Date
9654 28.04.2013
10040 01.01.2014
10381 01.01.2017
10040 04.07.2016
11011 02.04.2018
10381 05.01.2018
10849 05.02.2018
11011 05.03.2018
11602 07.05.2018
案例1:我没有对间隔进行正则化,而是继续使用对数和差分方法对数据进行平稳处理
ds_log = np.log(data_series_final)
data_diff_log = ds_log.diff(periods=1)
data_diff_log = data_diff_log.dropna()
data_diff_log_train = data_diff_log[0:5]
data_diff_log_test = data_diff_log[5:]
数据非常稳定,训练模型遵循ARIMA拟合模型。但是,当我在ARIMA上运行预测函数并将日期作为输入参数传递时,出现以下错误:
model_arima = ARIMA(data_diff_log_train, order=(0,0,2))
model_arima_fit = model_arima.fit()
predict_arima=[]
predict_arima = model_arima_fit.forecast(steps=2)[0]
predictions = model_arima_fit.predict(start='2020-01-01', end='2021-01-01')
KeyError:“ 2020-01-01” TypeError:必须为整数
KeyError:'start
参数无法与与数据索引相关的位置匹配。'
案例2:我试图通过填充数据来规范时间间隔
#
#Upsampling and Interpolating data
data_upsampled = data_series_final.resample('D', convention='start').asfreq()
data_upsampled = upsampled.interpolate(method='linear')
#data_upsampled = data_series_final.resample('D', fill_method = 'ffill')
但是由于值出现峰值,因此我无法使数据平稳。另外,我遇到了与上述相同的错误,无法将datetime作为参数发送。
有人可以帮忙吗?