MA 移动平均模型

文章目录

  • 代码
  • 拟合
  • 预测
  • 可视化

MA 移动平均模型_第1张图片

代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 生成一个示例时间序列
# 随机数种子
np.random.seed(42)
time_index = pd.date_range(start='2022-01-01', periods=100, freq='D')
random_values = np.random.randn(100)
time_series = pd.Series(random_values, index=time_index)

# 拟合MA模型
order = (0, 0, 30)  # 这里是一个MA(30)模型,可以根据需要调整阶数
ma_model = ARIMA(time_series, order=order)
result_ma = ma_model.fit()

# 进行预测
forecast_steps = 10
forecast = result_ma.get_forecast(steps=forecast_steps)
forecast_mean = forecast.predicted_mean

# 将原始时间序列和预测序列连接起来
combined_series = pd.concat([time_series, forecast_mean])

# 可视化
plt.plot(combined_series[:-forecast_steps], label='original')
plt.plot(combined_series[-forecast_steps:], label='MA forcast', color='red')
plt.legend()
plt.show()


拟合

这段代码用于拟合一个移动平均(MA)模型到给定的时间序列 time_series 中。让我逐步解释:

order = (0, 0, 30)  # 这里是一个MA(30)模型,可以根据需要调整阶数

这一行定义了要拟合的MA模型的阶数。MA模型通常由三个参数表示 (p, d, q),其中 p 是自回归(AR)部分的阶数,d 是差分的次数,q 是移动平均(MA)部分的阶数。在这里,(0, 0, 30) 表示我们正在拟合一个纯粹的MA模型,阶数为30。也就是说,我们考虑了过去30个时间点的滞后值来拟合模型。

ma_model = ARIMA(time_series, order=order)

这一行创建了一个ARIMA(Autoregressive Integrated Moving Average)模型对象,使用了指定的阶数。虽然我们使用了ARIMA类,但由于 order 中的 pd 都是零,因此实际上我们只是在拟合一个MA模型。

result_ma = ma_model.fit()

这一行用于拟合模型,将模型适配到给定的时间序列 time_series 上。拟合后,模型的相关参数和其他统计信息存储在 result_ma 中。

总体来说,这段代码的目的是通过使用ARIMA模型的MA部分,拟合一个移动平均模型到给定的时间序列上,并存储拟合结果以供后续分析和预测使用。

预测

这部分代码用于使用已经拟合好的 MA 模型进行未来值的预测。让我逐步解释:

forecast_steps = 10

这一行定义了你想要预测的未来步数。在这个例子中,你预测未来的10个时间点。

forecast = result_ma.get_forecast(steps=forecast_steps)

这一行使用已经拟合好的 result_ma 模型,调用 get_forecast 方法,以获取未来的预测。参数 steps 指定了你想要预测的步数,即预测未来多少个时间点。

forecast_mean = forecast.predicted_mean

这一行从预测结果中提取了平均值。在时间序列预测中,通常会得到一些额外的信息,但这里我们只提取了预测的平均值。

因此,最终的 forecast_mean 是根据 MA 模型对未来10个时间点的平均值预测。这些值可以用于可视化,评估模型的性能,或者进行进一步的分析。

可视化

MA 移动平均模型_第2张图片

你可能感兴趣的:(机器学习,MA,机器学习)