SARIMA 模型在 Python 中的包介绍

简介

SARIMA(Seasonal Autoregressive Integrated Moving Average)模型是一种用于时间序列分析和预测的经典方法。与 ARIMA 模型类似,SARIMA 模型可以处理具有季节性特征的时间序列数据,通过分析序列的自相关性和季节性来预测未来的值。在 Python 中,有许多库可以帮助我们实现 SARIMA 模型,如 statsmodels 和 pmdarima。

statsmodels 库

[statsmodels]( 是一个强大的 Python 库,提供了许多统计模型和方法,包括 SARIMA 模型。使用 statsmodels 可以方便地拟合 SARIMA 模型并进行预测。

安装

pip install statsmodels

使用示例

下面是一个简单的示例,演示了如何使用 statsmodels 库创建并拟合 SARIMA 模型:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX

# 创建示例数据
np.random.seed(42)
data = np.random.normal(0, 1, 100)
dates = pd.date_range('20210101', periods=100)
df = pd.DataFrame(data, index=dates, columns=['value'])

# 拟合 SARIMA 模型
model = SARIMAX(df['value'], order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
results = model.fit()

# 进行预测
forecast = results.get_forecast(steps=10)
forecast_values = forecast.predicted_mean

# 可视化预测结果
plt.plot(df['value'])
plt.plot(pd.date_range('20210411', periods=10), forecast_values, color='red')
plt.show()

在上面的示例中,我们首先生成了一个随机的时间序列数据,然后使用 SARIMAX 函数创建了一个 SARIMA 模型,并拟合了这个模型。最后,我们使用该模型进行了未来 10 个时间步的预测,并将结果可视化展示出来。

pmdarima 库

[pmdarima]( 是一个专门用于时间序列分析的 Python 库,提供了许多自动化工具和优化算法,可以帮助我们更方便地构建 SARIMA 模型。

安装

pip install pmdarima

使用示例

下面是一个使用 pmdarima 库创建 SARIMA 模型的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pmdarima.arima import auto_arima

# 创建示例数据
np.random.seed(42)
data = np.random.normal(0, 1, 100)
dates = pd.date_range('20210101', periods=100)
df = pd.DataFrame(data, index=dates, columns=['value'])

# 自动拟合 SARIMA 模型
model = auto_arima(df['value'], seasonal=True, m=12)
model.fit(df['value'])

# 进行预测
forecast_values = model.predict(n_periods=10)

# 可视化预测结果
plt.plot(df['value'])
plt.plot(pd.date_range('20210411', periods=10), forecast_values, color='red')
plt.show()

在上面的示例中,我们使用 pmdarima 库中的 auto_arima 函数自动拟合了一个 SARIMA 模型,并进行了未来 10 个时间步的预测。最后,我们将预测结果可视化展示出来。

结论

通过使用 statsmodels 和 pmdarima 这两个 Python 库,我们可以方便地构建和拟合 SARIMA 模型,并进行时间序列数据的预测。无论是手动调整参数还是使用自动化工具,都可以帮助我们更好地理解时间序列数据的特征和趋势,从而做出更准确的预测。如果你对时间序列分析感兴趣,不妨尝试使用这些库来探索更多有关 SARIMA 模型的应用。