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()