statsmodels.tsa.arima.model.ARIMA用户手册(中文)(statsmodels包)

本文介绍了ARIMA模型的基础知识,包括自回归模型、移动平均模型、混合自回归移动平均模型等,并详细阐述了ARIMA模型的参数配置及应用场景。此外,还提供了实际案例演示。

0. 前言

class statsmodels.tsa.arima.model.ARIMA(endog, exog=None, order=0, 0, 0, 
seasonal_order=0, 0, 0, 0, trend=None, enforce_stationarity=True, 
enforce_invertibility=True, concentrate_scale=False, trend_offset=1, dates=None, 
freq=None, missing='none', validate_specification=True)

源码source

自回归综合移动平均值(ARIMA)模型和扩展

该模型是ARIMA型模型(包括具有外生回归变量的模型和具有季节性成分的模型)的基本接口。 模型的最一般形式是 S A R I M A X ( p , d , q ) x ( P , D , Q , s ) SARIMAX(p,d,q)x(P,D,Q,s) SARIMAXpdqxPDQs。 它还允许所有特殊情况,包括:

  • autoregressive models(自回归模型): AR( p )

  • moving average models(移动平均模型): MA(q)

  • mixed autoregressive moving average models(混合自回归移动平均模型): ARMA(p, q)

  • integration models(整合模型): ARIMA(p, d, q)

注:ARIMA 模型对时间序列的要求是平稳型。因此,当你得到一个非平稳的时间序列时,首先要做的即是做时间序列的差分,直到得到一个平稳时间序列。如果你对时间序列做d次差分才能得到一个平稳序列,那么可以使用ARIMA(p,d,q)模型,其中d是差分次数。另外p表示偏自相关图在滞后p阶之后缩小为0,q表示自相关图在滞后q阶之后缩小为0

  • seasonal models(季节模型): SARIMA(P, D, Q, s)

  • regression with errors that follow one of the above ARIMA-type models(遵循上述ARIMA类型模型之一的误差进行回归)

1. 参数

  • endog: array_like, optional
    观察到的时间序列过程y。

  • exog: array_like, optional
    外生回归数组

  • order: tuple, optional
    自回归,差异和移动平均值分量的模型的(p,d,q)顺序。 d始终是整数,而p和q可以是整数或整数列表。

  • seasonal_order: tuple, optional
    AR参数,差异,MA参数和周期性的模型季节性成分的(P,D,Q,s)顺序。 默认值为(0,0,0,0)。 D和s始终是整数,而P和Q可以是整数或正整数列表

  • trend:str{‘n’,’c’,’t’,’ct’} or iterable, optional
    控制确定性趋势的参数。 可以指定为字符串,其中“ c”表示常数项,“ t”表示时间的线性趋势,而“ ct”包括两者。 也可以指定为可迭代的定义多项式,例如 n u m p y . p o l y 1 d numpy.poly1d numpy.poly1d,其中[1,1,0,1]表示 a + b t + c t 3 a + bt + ct^3 a+bt+ct3。 对于没有集成的模型,默认值为“ c”,对于具有集成的模型,默认没有趋势。

  • enforce_stationarity: bool, optional
    是否要求自回归参数与平稳过程相对应。

  • enforce_invertibility: bool, optional
    是否要求移动平均参数对应于可逆过程。

  • concentrate_scale: bool, optional
    是否在似然性之外集中标度(误差项的方差)。 这样可以将参数数量减少一。 仅在考虑通过数值最大似然估计时才适用。

  • trend_offset: int, optional
    开始时间趋势值的偏移量。 默认值为1,因此,如果 T r e n d = ′ t ’ Trend = 't’ Trend=t,则趋势等于1,2,…,nobs。 通常仅在通过扩展先前的数据集创建模型时设置。

  • dates: array_like of datetime, optional
    如果endog或exog没有给出索引,则可以提供日期时间对象的数组状对象。

  • freq: str, optional
    如果endog或exog没有给出索引,则时间序列的频率可以在此处指定为Pandas偏移量或偏移量字符串。

  • missing: str
    可用选项为“ none”,“drop”和“raise”。 如果为“ none”,则不执行nan检查。 如果为“ drop”,则所有与nans有关的观测值都会被丢弃。 如果为“ raise”,则会引发错误。 默认值为“none”。

2. Note

该模型通过“带有ARIMA误差的回归”结合了外生回归因子和趋势成分。

在构造函数中指定了force_stationarity和forcen_invertibility,因为它们会影响对数似然性计算,因此不应即时更改。 这就是为什么不将它们作为fit方法的参数包含在内的原因。

待办事项:默认情况下,我们应该使用centre_scale = True吗?

3. 例子

>>> mod = sm.tsa.arima.ARIMA(endog, order=(1, 0, 0))
>>> res = mod.fit()
>>> print(res.summary())

原文

### 如何在 Python 中安装和使用 `statsmodels` 的 `tsa.arima.model` 为了确保能够正常运行基于 ARIMA 模型的时间序列分析,需要按照最新的 `statsmodels` 库文档调整代码逻辑。以下是具体方法: #### 安装最新版 `statsmodels` 要使用 `statsmodels.tsa.arima.model.ARIMA`,需先确认已安装最新版本的 `statsmodels`。可以通过以下命令完成更新或安装: ```bash pip install --upgrade statsmodels ``` 或者如果使用的是 Conda 环境,则可以执行: ```bash conda update statsmodels ``` #### 使用 `statsmodels.tsa.arima.model.ARIMA` 从 0.13 版本起,原有的 `statsmodels.tsa.arima_model.ARIMA` 已经被移除[^1],取而代之的是更稳定且功能强大的 `statsmodels.tsa.arima.model.ARIMA`[^2]。 下面是一个完整的示例代码片段展示如何导入并应用该模型: ```python import numpy as np from statsmodels.tsa.arima.model import ARIMA # 假设 y_train 是训练数据集 y_train = np.array([1, 2, 3, 4, 5]) # 创建并拟合 ARIMA(1,1,1) 模型 model = ARIMA(y_train, order=(1, 1, 1)) model_fit = model.fit() print(model_fit.summary()) ``` 另一种方式也可以通过 `statsmodels.api` 来实现相同的功能: ```python import numpy as np import statsmodels.api as sm # 假设 y_train 是训练数据集 y_train = np.array([1, 2, 3, 4, 5]) # 创建并拟合 ARIMA(1,1,1) 模型 model_fit = sm.tsa.ARIMA(y_train, order=(1, 1, 1)).fit() print(model_fit.summary()) ``` 上述两种方法均能有效替代旧版 API 并提供更加可靠的性能支持[^3]。 #### 注意事项 当遇到错误提示类似于 “NotImplementedError: statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_model.ARIMA have been removed” 时,这表明当前使用的库版本已经废弃了这些类定义[^4]。此时应立即切换到新的模块路径以解决问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值