检验时间序列的平稳性代码
时间: 2023-08-30 12:07:27 浏览: 113
R代码_非平稳时间序列分析_源码
下面是Python中检验时间序列平稳性的代码示例,使用的是ADF检验:
```python
from statsmodels.tsa.stattools import adfuller
def test_stationarity(timeseries):
# 计算移动平均和移动方差
rolling_mean = timeseries.rolling(window=12).mean()
rolling_std = timeseries.rolling(window=12).std()
# 绘制移动平均和移动方差
orig = plt.plot(timeseries, color='blue', label='Original')
mean = plt.plot(rolling_mean, color='red', label='Rolling Mean')
std = plt.plot(rolling_std, color='black', label='Rolling Std')
plt.legend(loc='best')
plt.title('Rolling Mean & Standard Deviation')
plt.show(block=False)
# 进行ADF检验
print('Results of Augmented Dickey-Fuller Test:')
adf_test = adfuller(timeseries, autolag='AIC')
adf_output = pd.Series(adf_test[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
for key,value in adf_test[4].items():
adf_output['Critical Value (%s)'%key] = value
print(adf_output)
```
该代码接受一个时间序列作为输入,然后计算其移动平均和移动方差,并绘制出来。接着,使用ADF检验来判断该时间序列是否平稳,输出检验结果。如果p-value小于0.05,那么可以拒绝原假设(该时间序列不平稳),认为该时间序列是平稳的。
阅读全文