python时间序列模型案例
时间: 2023-09-06 22:09:21 浏览: 124
以下是一个简单的时间序列模型案例,使用Python进行实现。
数据集:美国航空公司乘客数量数据集(1949年1月至1960年12月,每个月的乘客数量)
1.导入必要的库和数据集
```
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv', header=0, index_col=0, parse_dates=True, squeeze=True)
```
2.数据预处理
```
#将时间序列数据可视化
plt.plot(df)
plt.show()
#将数据集分为训练集和测试集
train_size = int(len(df) * 0.7)
train, test = df[0:train_size], df[train_size:len(df)]
#将训练集和测试集可视化
plt.plot(train)
plt.plot(test)
plt.show()
```
3.构建时间序列模型
```
from statsmodels.tsa.arima_model import ARIMA
#构建ARIMA模型
model = ARIMA(train, order=(5, 1, 0))
model_fit = model.fit(disp=0)
print(model_fit.summary())
#将模型的残差可视化
residuals = pd.DataFrame(model_fit.resid)
residuals.plot()
plt.show()
residuals.plot(kind='kde')
plt.show()
print(residuals.describe())
```
4.使用时间序列模型进行预测
```
#在测试集上进行预测
from sklearn.metrics import mean_squared_error
history = [x for x in train]
predictions = list()
for i in range(len(test)):
model = ARIMA(history, order=(5,1,0))
model_fit = model.fit(disp=0)
output = model_fit.forecast()
yhat = output[0]
predictions.append(yhat)
obs = test[i]
history.append(obs)
print('predicted=%f, expected=%f' % (yhat, obs))
#计算模型的均方误差
error = mean_squared_error(test, predictions)
print('Test MSE: %.3f' % error)
#将预测结果可视化
plt.plot(test)
plt.plot(predictions, color='red')
plt.show()
```
以上就是一个简单的时间序列模型案例。该模型使用ARIMA算法进行构建,并在测试集上进行了预测。预测结果与测试集的实际值进行了比较,并计算了模型的均方误差。
阅读全文