Python 为什么时间序列分析会得到如此奇怪的结果?

Python 为什么时间序列分析会得到如此奇怪的结果?,python,matplotlib,machine-learning,time-series,statsmodels,Python,Matplotlib,Machine Learning,Time Series,Statsmodels,我试图建立一个模型来预测沟通质量。以下是数据: 下,我从“Y”、它们的ACF和PACF中绘制“DS”,也考虑Dickey Fuller准则。 代码: Dickey-Fuller测试为0.003064,表明该系列是固定的。从ACF系列图中,我确定存在每日季节性 此外,我还应用了Box-Cox变换。然后,在此之后,Dickey-Fuller值为0.001130,最佳Box-Cox变换参数为-0.750347 代码: 我没有注意到任何差异。然后我开始选择参数并构建SARIMA模型 ps = ran

我试图建立一个模型来预测沟通质量。以下是数据:

下,我从“Y”、它们的ACF和PACF中绘制“DS”,也考虑Dickey Fuller准则。

代码:

Dickey-Fuller测试为0.003064,表明该系列是固定的。从ACF系列图中,我确定存在每日季节性

此外,我还应用了Box-Cox变换。然后,在此之后,Dickey-Fuller值为0.001130,最佳Box-Cox变换参数为-0.750347

代码:

我没有注意到任何差异。然后我开始选择参数并构建SARIMA模型

ps = range(0, 5)
d=1
qs = range(0, 3)
Ps = range(0, 2)
D=1
Qs = range(0, 2)

from itertools import product

parameters = product(ps, qs, Ps, Qs)
parameters_list = list(parameters)
len(parameters_list)
%%time
results = []
best_aic = float("inf")
warnings.filterwarnings('ignore')

for param in parameters_list:
    try:
        model=sm.tsa.statespace.SARIMAX(data.y, order=(param[0], d, param[1]), 
                                        seasonal_order=(param[2], D, param[3], 12)).fit(disp=-1)
    except ValueError:
        print('wrong parameters:', param)
        continue
    aic = model.aic
    if aic < best_aic:
        best_model = model
        best_aic = aic
        best_param = param
    results.append([param, model.aic])
请帮我解决问题

def invboxcox(y,lmbda):
    if lmbda == 0:
        return(np.exp(y))
    else:
        return(np.exp(np.log(lmbda*y+1)/lmbda))

    data = new_data.copy()
    data['y_box'], lmbda = scs.boxcox(data.y)
    tsplot(data.y_box, lags=30)
    print("Box-Cox: %f" % lmbda)
ps = range(0, 5)
d=1
qs = range(0, 3)
Ps = range(0, 2)
D=1
Qs = range(0, 2)

from itertools import product

parameters = product(ps, qs, Ps, Qs)
parameters_list = list(parameters)
len(parameters_list)
%%time
results = []
best_aic = float("inf")
warnings.filterwarnings('ignore')

for param in parameters_list:
    try:
        model=sm.tsa.statespace.SARIMAX(data.y, order=(param[0], d, param[1]), 
                                        seasonal_order=(param[2], D, param[3], 12)).fit(disp=-1)
    except ValueError:
        print('wrong parameters:', param)
        continue
    aic = model.aic
    if aic < best_aic:
        best_model = model
        best_aic = aic
        best_param = param
    results.append([param, model.aic])
data['model'] = invboxcox(best_model.fittedvalues, lmbda)
plt.figure(figsize(20,8))
data.y.plot()
data.model[13:].plot(color='r')
plt.ylabel('LQ')
pylab.show()