Statsmodel SARIMAX拟合值(“季节性调整”)看起来比真实数据早一个周期

问题描述 投票:0回答:1

我在使用Statmodel的SARIMAX函数对我拥有的数据系列进行季节性调整时遇到了一些麻烦。代码在下面,但是通常我的过程是在数据上测试各种SARIMA参数,选择具有最低AIC的参数,运行模型,然后获取拟合值。问题在于,对于某些数据集,拟合值(经过季节性调整)基本上就像我的原始数据从一个周期向后移动。我在这里有什么明显的错误吗?

def seasonal_fit(data_to_fit, column_name):
    # finding sarima parameters
    p = d = q = range(0, 2)
    pdq = list(itertools.product(p, d, q))
    seasonal_pdq = [(x[0], x[1], x[2], 12)
                    for x in list(itertools.product(p, d, q))]

    param_dict = []
    keys = ['Parameters', 'Seasonal Parameters', 'AIC']

    for param in pdq:
        for param_seasonal in seasonal_pdq:
            try:
                mod = sm.tsa.statespace.SARIMAX(data_to_fit, order=param,
                                                seasonal_order=param_seasonal, enforce_stationarity=False, enforce_invertibility=False)
                # , enforce_stationarity=False, enforce_invertibility=False)
                results = mod.fit()
                insert = [param, param_seasonal, results.aic]
                param_dict.append(dict(zip(keys, insert)))
            except:
                continue
    param_dict = pd.DataFrame(param_dict)
    best_fit = param_dict.loc[param_dict['AIC'].idxmin()]

    mod = sm.tsa.statespace.SARIMAX(data_to_fit,
                                    order=(
                                        best_fit['Parameters'][0], best_fit['Parameters'][1], best_fit['Parameters'][2]),
                                    seasonal_order=(best_fit['Seasonal Parameters'][0], best_fit['Seasonal Parameters']
                                                    [1], best_fit['Seasonal Parameters'][2], best_fit['Seasonal Parameters'][3]), enforce_stationarity=False, enforce_invertibility=False)
    results = mod.fit()
    pdb.set_trace()
    fitted_values = pd.DataFrame(results.fittedvalues)

enter image description here

python statsmodels arima
1个回答
0
投票

[如果有人偶然发现了这个问题,我经过一番搜索后找到了答案。这是来源之一(https://stats.stackexchange.com/questions/330928/time-series-prediction-shifted)。基本上-ARIMA本质上是滞后的,并使用先验来预测。您肯定会看到曲线向右移动了x个周期,其中x是发生的差异数。当您尝试实现一些您不完全理解的事情时,如果发生一些奇怪的事情,所学到的教训就不会感到惊讶...

© www.soinside.com 2019 - 2024. All rights reserved.