arima自动输出检验自相关性的最大阶数代码python
时间: 2023-11-13 18:12:56 浏览: 126
python时间序列预测
ARIMA模型自动输出检验自相关性的最大阶数可以使用acf和pacf函数进行实现。
acf函数计算自相关系数,pacf函数计算偏自相关系数,通过观察它们的截尾点来选择ARIMA模型的阶数。
下面是一个示例代码,其中使用了acf和pacf函数来计算自相关系数和偏自相关系数,然后使用plt.plot函数绘制自相关系数和偏自相关系数的图像。
```python
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima_model import ARIMA
def test_stationarity(timeseries):
#Determing rolling statistics
rolmean = timeseries.rolling(window=12).mean()
rolstd = timeseries.rolling(window=12).std()
#Plot rolling statistics:
orig = plt.plot(timeseries, color='blue',label='Original')
mean = plt.plot(rolmean, color='red', label='Rolling Mean')
std = plt.plot(rolstd, color='black', label = 'Rolling Std')
plt.legend(loc='best')
plt.title('Rolling Mean & Standard Deviation')
plt.show(block=False)
#Perform Dickey-Fuller test:
print('Results of Dickey-Fuller Test:')
dftest = adfuller(timeseries, autolag='AIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
for key,value in dftest[4].items():
dfoutput['Critical Value (%s)'%key] = value
print(dfoutput)
def acf_pacf(ts, lags=31):
f = plt.figure(facecolor='white')
ax1 = f.add_subplot(211)
plot_acf(ts, lags=lags, ax=ax1)
ax2 = f.add_subplot(212)
plot_pacf(ts, lags=lags, ax=ax2)
plt.show()
# 读取数据
data = pd.read_csv('AirPassengers.csv')
data = data['#Passengers']
# 检验数据平稳性
test_stationarity(data)
# 计算自相关系数和偏自相关系数
acf_pacf(data, lags=30)
```
运行以上代码后,会输出自相关系数和偏自相关系数的图像,可以根据图像的截尾点选择ARIMA模型的阶数。
阅读全文