使用python软件编写代码 自1971年7月开始,道琼斯工业股票平均价格指数每周收盘价如表所示(行数据)。 890.19 901.8 888.51 887.78 858.43 850.61 856.02 880.91 908.15 912.75 911 908.22 889.31 893.98 893.91 874.85 852.37 839 840.39 812.94 810.67 816.55 859.59 856.75 873.8 881.17 890.2 910.37 906.68 907.44 906.38 906.68 917.59 917.52 22.79 942.43 939.87 942.88 942.28 940.7 962.6 967.72 963.8 954.17 941.23 941.83 961.54 971.25 961.39 934.45 945.06 944.69 929.03 938.06 922.26 920.45 926.7 951.76 964.18 965.83 959.36 970.05 961.24 947.23 943.03 953.27 945.36 930.46 942.81 946.42 984.12 995.26 1005.57 1025.21 1023.43 1033.19 1027.24 1004.21 1020.02 1047.49 1039.36 1026.19 1003.54 980.81 979.46 979.23 959.89 961.32 972.23 963.05 922.71 951.01 931.07 959.36 963.2 922.19 953.87 927.89 895.17 930.84 893.96 920 888.55 879.82 891.71 870.11 885.99 910.9 936.71 908.87 852.38 871.84 863.49 887.57 898.63 886.36 927.9 947.1 971.25 978.63 963.73 987.06 935.28 908.42 891.33 854 822.25 838.05 815.65 818.73 848.02 880.23 841.48 855.47 859.39 843.94 820.4 820.32 855.99 851.92 878.05 887.83 878.13 846.68 847.54 844.81 859.9 834.64 845.9 850.44 818.84 816.65 802.17 853.72 843.09 815.39 802.41 791.77 787.23 787.94 784.57 752.58(1)检验该序列的平稳性。 (2)对该序列拟合适当的ARIMA模型提取水平信息。 (3)考察该序列是否具有条件异方差属性。如果有条件异方差属性,则拟合适当的条件异方差模型。 (4)使用拟合模型预测该序列未来4周的收盘价及收盘价的95%的置信区间。
时间: 2024-04-26 16:20:14 浏览: 102
以下是Python代码实现:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller, kpss
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.het_arch import ARCH
# 读取数据
data = pd.read_csv('dow_jones.csv', header=None)
data.columns = ['close_price']
data.index = pd.date_range(start='1971-07-01', periods=len(data), freq='W')
print(data.head())
# 平稳性检验
adf_result = adfuller(data)
print('ADF检验结果:')
print('ADF统计量:', adf_result[0])
print('p值:', adf_result[1])
print('滞后阶数:', adf_result[2])
print('样本数量:', adf_result[3])
print('检验结果:', '平稳' if adf_result[1] < 0.05 else '非平稳')
kpss_result = kpss(data)
print('KPSS检验结果:')
print('KPSS统计量:', kpss_result[0])
print('p值:', kpss_result[1])
print('滞后阶数:', kpss_result[2])
print('检验结果:', '非平稳' if kpss_result[1] < 0.05 else '平稳')
# 拟合ARIMA模型
model = ARIMA(data, order=(2, 0, 1)).fit()
print('ARIMA模型参数:', model.params)
# 条件异方差检验
resid = model.resid
arch_test = ARCH(resid).fit()
print('条件异方差检验结果:')
print('ARCH统计量:', arch_test.arch_lm_test().lm)
print('p值:', arch_test.arch_lm_test().pvalue)
print('检验结果:', '有条件异方差' if arch_test.arch_lm_test().pvalue < 0.05 else '无条件异方差')
# 预测未来4周收盘价及置信区间
forecast = model.forecast(steps=4)
forecast_ci = forecast.conf_int(alpha=0.05)
print('未来4周收盘价预测值:\n', forecast[0])
print('未来4周收盘价95%置信区间:\n', forecast_ci)
```
其中,平稳性检验使用了ADF检验和KPSS检验。拟合ARIMA模型使用了statsmodels库中的ARIMA函数。条件异方差检验使用了statsmodels库中的ARCH函数。最后,使用拟合好的模型进行未来4周收盘价的预测,并计算了95%的置信区间。
阅读全文