时间序列模型代码python
时间: 2024-09-06 21:01:59 浏览: 42
时间序列模型是用来分析和预测按时间顺序排列的数据序列的统计模型。在Python中,实现时间序列模型通常会使用到`statsmodels`或`scikit-learn`等库。下面是一个简单的例子,展示了如何使用`statsmodels`库来建立一个自回归(AR)时间序列模型:
```python
import numpy as np
import pandas as pd
from statsmodels.tsa.ar_model import AutoReg
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# 假设我们有一个时间序列数据集
data = np.array([1.1, 1.7, 2.8, 3.9, 3.7, 4.3, 5.2, 6.0, 6.8, 7.6])
# 将数据转换为Pandas Series
series = pd.Series(data)
# 为自回归模型准备滞后变量
# 假设我们使用前3期的数据来预测下一期,即p=3
lags = 3
X = series.shift(lags)
X = X.dropna() # 删除因为滞后而产生的空值
y = series[lags:] # 目标是除去前面用于滞后变量的3个数据点
# 创建并拟合模型
model = AutoReg(X, lags=lags)
fitted_model = model.fit()
# 进行预测
predictions = fitted_model.predict(start=len(X), end=len(X) + len(y) - 1, dynamic=False)
# 计算均方误差(MSE)
mse = mean_squared_error(y, predictions)
print(f"模型的均方误差为: {mse}")
# 绘制预测结果和实际值
plt.figure(figsize=(10,6))
plt.plot(y.index, y, label='实际值')
plt.plot(predictions.index, predictions, color='red', label='预测值')
plt.title('时间序列预测结果')
plt.legend()
plt.show()
```
在这个例子中,我们首先创建了一个简单的线性时间序列数据集,然后使用`AutoReg`类从`statsmodels`库来创建一个滞后3期的自回归模型。模型被拟合后,我们对接下来的数据进行了预测,并计算了预测的均方误差。最后,我们使用matplotlib绘制了实际值和预测值以比较模型的效果。
阅读全文