精华内容
下载资源
问答
  • 自回归模型

    万次阅读 多人点赞 2018-08-17 22:39:28
    自回归模型(Autoregressive Model,简称 AR 模型)是最常见的平稳时间序列模型之一。接下将介绍 AR 模型的定义、统计性质、建模过程、预测及应用。 一、AR 模型的引入 考虑如图所示的单摆系统。设 xt 为第 t ...

    自回归模型(Autoregressive Model,简称 AR 模型)是最常见的平稳时间序列模型之一。接下将介绍 AR 模型的定义、统计性质、建模过程、预测及应用。

    一、AR 模型的引入

    考虑如图所示的单摆系统。设 xt 为第 t 次摆动过程中的摆幅。根据物理原理,第 t 次的摆幅 xt 由前一次的摆幅 xt-1 决定,即有 xt=a1xt-1。考虑到空气振动的影响,我们往往假设

    (1)

    其中,随机干扰 εt ~ N(0, σ2)。

    设初始时刻 x0=1,现在取不同的 a1 和 σ 值进行实验。实验结果如下图。

    我们可以看出,参数 a1 对序列的稳定性起到决定性的作用,而噪声强度 σ2 决定了序列的波动程度。

    在这里,我们称模型 (1) 为一阶自回归模型。更一般地,可以考虑序列值 xt 可由前 p 个时刻的序列值及当前的噪声表出,即

    (2)

    其中,aj 为参数,{εt} 为白噪声。为了显示序列值为随机变量,这里使用 Xt 而不是 xt。

    二、AR 模型的定义

    定义 1

    如果 {εt} 为白噪声,服从 N(0,σ2),a0,a1,...,ap(ap≠0) 为实数,就称 p 阶差分方程

    (3)

    是一个 p 阶自回归模型,简称 AR(p) 模型,称 a=(a0,a1,...,ap)T 是 AR(p) 模型中的自回归系数。满足 AR(p) 模型 (3) 的时间序列 {Xt} 称为 AR(p) 序列。当 a0=0 时,称为零均值 AR(p) 序列,即

    (4)

    需要指出的是,对于 a0≠0 的情况,我们可以通过零均值化的手段把一般的 AR(p) 序列变为零均值 AR(p) 序列。

    三、AR 序列的建模

    对于给定的时间序列 {Xt},我们最关注的是如何对其进行建模。一般地,平稳序列的建模过程可以用下图中的流程图表示。

    步骤 1 对序列作白噪声检验,若经检验判定序列为白噪声,建模结束;否则转步骤 2.

    步骤 2 对序列作平稳性检验,若经检验判定为非平稳,则进行序列的平稳化处理,转步骤 1;否则转步骤 3.

    步骤 3 对模型进行识别,估计其参数,转步骤 4.

    步骤 4 检验模型的适用性,若检验通过,则得到拟合模型并可对序列做预测;否则转步骤 3.

    在这里,对白噪声检验、平稳性检验和平稳化处理不进行介绍。有时间写两篇这方面的博文。

    (一) AR 模型的判定

    对于观测到的时间序列,若通过白噪声检验确定为非白噪声,且经平稳性检验确定为平稳后,我们常根据相关系数和偏相关系数来识别模型。

    这一部分的主要任务是,判断该问题是否适用 AR 模型建模,以及大致确定阶数 p。

    可通过下面的代码,计算自相关系数(Autocorrelation Function, SAF)和偏自相关系数(Partial Autocorrelation Function, PACF)。

    from statsmodels.tsa.stattools import acf, pacf
    # pacf 计算偏自相关系数
    # acf  计算自相关系数

    如果一个时间序列满足以下两个条件

    • ACF 具有拖尾性,即 ACF(k) 不会在 k 大于某个常数之后就恒等于 0。
    • PACF 具有截尾性,即 PACF(k) 在 k>p 时变为 0。

    第 2 个条件还可以用来确定阶数 p。考虑到存在随机误差的存在,因此 PACF 在 p 阶延迟后未必严格为 0 ,而是在 0 附近的小范围内波动。具体来说

    设 k 阶偏自相关系数为 ak,若阶数大于 p 大部分的偏自相关系数满足下式,则 AR 模型的阶数取 p。

    (5)

    |a_k|<\frac{2}{\sqrt{N}}

    其中 N 表示样本序列长度。

    例如,对于模型 Xt=0.9Xt-1-0.3Xt-2+εt,它的 ACF 和 PACF 如下。

    我们可以看出自相关系数呈现一定的周期性,故判定为拖尾;偏自相关系数 2 步后截尾。因此,我们可以尝试使用 AR(2) 模型来建模。

    (二) AR 模型的参数估计

    AR 模型的参数估计主要有三种方法:矩估计、最小二乘估计和最大似然估计。

    这里仅介绍最小二乘估计。(实际上最大似然估计与最小二乘估计的结果一样)

    对于样本序列 {xt},当 j≥p+1时,记白噪声 εj 的估计为

    (6)

    通常称 残差。我们的优化目标是使得残差平方和

    (7)

    达到最小。我们称使上式达到最小的 为 AR(p) 模型中自回归系数 的估计。

    得到如下线性方程组

    (8)

    于是式 (7) 的目标函数可表示为

    (9)

    上式对参数 求导并令其为 0,可得

    (10)

    因此,参数 的最小二乘估计为

    (11)

    此时,误差方差的最小二乘估计

    (12)

    (三) AR 模型的定阶

    在对 AR 模型识别时,根据其样本偏自相关系数的截尾步数,可初步得到 AR 模型的阶数 p。然而,此时建立的 AR(p) 未必是最优的。一个好的模型通常要求残差序列方差较小,同时模型页相对简单,即要求阶数较低。因此我们需要一些准则来比较不同阶数的模型之间的优劣,从而确定最合适的阶数。下面给出两种常用的定阶准则。

    1. FPE 准则

    最终预报误差(Final Prediction Error)准则,简称为 FPE 准则,其判据就是最终预报误差最小。设 AR(p) 为拟合模型, 是序列的各阶样本自协方差函数,其最终预报误差可表示为

    (13)

    在具体应用时,通常是分别建立从低阶到高阶的 AR 模型,并计算出相应的 FPE
    的值,由此确定使 FPE 达到最小的 p 值。

    2. 贝叶斯信息准则

    定义

    (14)

    使得 BIC 达到最小值的 p 即为该准则下的最优 AR 模型的阶数。

    (四) AR 模型的检验

    在模型拟合之后需要进行模型的检验,主要分为两部分

    • 有效性检验:检验拟合模型对序列中信息的提取是否充分
    • 显著性检验:检验模型中的个参数是否显著为 0,从而判断拟合魔心是否可以进一步简化。

    1. 模型的有效性检验

    一个好的拟合模型应该能够提取观测值序列中几乎所有的样本相关信息,即残差序列应该为白噪声序列。因此,模型的有效性检验即为残差序列的白噪声检验。如果残差序列是白噪声,那么理论赏其延迟任意阶的自相关系数为 0,考虑数据的偏差,那么绝大多数应该在 0 附近的范围内,通常在 95% 的置信水平(2倍标准差)以内。

    2. 参数的显著性检验

    这一部分的目标是,删除那些不显著参数使模型结构最为精简。对于模型参数 aj(j=1,...,p) 的检验,其原假设和备择假设分别为

    (15)

    检验统计量为 t 统计量:

    (16)

    在给定的显著水平 α 下,当检验统计量 T 大部分位于分点 t1-α/2,或该统计量的 P 值小于 α 时,则可以以 1-α 的置信水平拒绝原假设,
    认为模型参数显著。反之,则不能显著拒绝参数为 0 的假设。

    参考文献

    [1] 周永道,王会琦,吕王勇. 时间序列分析及应用. 高等教育出版社. 2015.

    展开全文
  • 运用Python的数组和矩阵操作模拟验证一阶自回归模型中,回归系数OLS估计量的有限样本偏差问题。
  • 门限自回归模型

    2015-08-08 17:22:30
    门限自回归模型,matlab版本。基于MATLAB的门限自回归模型,可用于时间序列的分析与预测。
  • 向量自回归模型

    2018-12-01 10:01:08
    向量自回归模型的原理和分析过程,包括其运用范围,原理讲解,应用实例
  • 自回归模型拟合PDF

    2009-11-02 21:32:01
    自回归模型拟合自回归模型拟合自回归模型拟合自回归模型拟合自回归模型拟合自回归模型拟合
  • 时序分析(3) -- 自回归模型(AR)

    千次阅读 2019-11-07 21:20:47
    时序分析(3) ...自回归模型是时序分析中的一项基本技术,理解和掌握AR模型是学习更高级和复杂时序分析模型的基础。 AR模型定义如下:     如果一个单变量时序数据{yt;t=1,2,...}\{...

    时序分析(3)

    自回归模型(AR)

    首先我们介绍自回归模型的基本概念:

    Autoregressive Models - AR( p)

        自回归模型是时序分析中的一项基本技术,理解和掌握AR模型是学习更高级和复杂时序分析模型的基础。
    AR模型定义如下:
        如果一个单变量时序数据 { y t ; t = 1 , 2 , . . . } \{y_t;t=1,2,...\} {yt;t=1,2,...}, 可以以此时序数据本身的多个时刻之前的点的值来回归,这种情况称为自回归,公式如下:
    y t = α 1 y t − 1 + α 2 y t − 2 + . . . + α p y t − p + ω t y_t=\alpha_1y_{t-1}+\alpha_2y_{t-2}+...+\alpha_py_{t-p}+\omega_t yt=α1yt1+α2yt2+...+αpytp+ωt

    = ∑ i = 1 p α i x t − i + ω t =\sum_{i=1}^{p}\alpha_ix_{t-i}+\omega_t =i=1pαixti+ωt
    这里 p p p 称为自回归模型的阶数,记作AR ( p )。 α \alpha α是系数项, ω t \omega_t ωt是白噪声。

    首先我们需要介绍一下自回归分析中的两个重要的分析指标:ACF 和 PACF

    • ACF ( Auto Correlation Function)
      一个随机过程的自相关函数就是在该过程时序数据不同时间点的Pearson相关系数。假如时序数据有两个时间点 s , t s,t s,t,其自相关系数定义为:
      R ( s , t ) = E [ ( y t − μ t ) ( y s − μ s ) ] σ t σ s R(s,t)=\frac {E[(y_t-\mu_t)(y_s-\mu_s)]}{\sigma_t \sigma_s} R(s,t)=σtσsE[(ytμt)(ysμs)]
      其中 μ , σ \mu,\sigma μ,σ分别为均值和标准差。
      求出 y t y_t yt { y t − 1 , y t − 2 , . . . } \{y_{t-1},y_{t-2},...\} {yt1,yt2,...}的自相关系数,就可以得到一个以时间跨度k为参数的函数,称为自相关函数。
    • PACF (Partial Auto Correlation Function)
      PACF偏自相关函数就是 y t y_t yt y t − k y_{t−k} ytk的相关系数,但是移除了 y t y_t yt y t − k + 1 y_{t−k+1} ytk+1 y t − 1 y_{t−1} yt1的线性依赖。

    导入依赖包和数据

    如本系列文章前面两篇一样

    def tsplot(y, lags=None, figsize=(16, 10), style='bmh'):
        if not isinstance(y, pd.Series):
            y = pd.Series(y)
        with plt.style.context(style):
            fig = plt.figure(figsize=figsize)
    # mpl.rcParams['font.family'] = 'Ubuntu Mono'
            layout = (3, 2)
            ts_ax = plt.subplot2grid(layout, (0, 0), colspan=2)
            acf_ax = plt.subplot2grid(layout, (1, 0))
            pacf_ax = plt.subplot2grid(layout, (1, 1))
            qq_ax = plt.subplot2grid(layout, (2, 0))
            pp_ax = plt.subplot2grid(layout, (2, 1))
            y.plot(ax=ts_ax)
            ts_ax.set_title('Time Series Analysis Plots')
            smt.graphics.plot_acf(y, lags=lags, ax=acf_ax, alpha=0.5)
            smt.graphics.plot_pacf(y, lags=lags, ax=pacf_ax, alpha=0.5)
            sm.qqplot(y, line='s', ax=qq_ax)
            qq_ax.set_title('QQ Plot')
            scs.probplot(y, sparams=(y.mean(), y.std()), plot=pp_ax)
            plt.tight_layout()
        return
    

    再详细介绍AR模型之前,我们先介绍三个常见的更为简单的模型:Linear Model,log-Linear Model 和 Random Walk。

    • 线性模型(Linear Model)
      y t = b 0 + b 1 t + ω t y_t=b_0+b_1t+\omega_t yt=b0+b1t+ωt
      时序变量是时间的线性函数
    w = np.random.randn(100)
    y = np.empty_like(w)
    lags = 30
    b0 = -50.
    b1 = 25.
    for t in range(len(w)):
        y[t] = b0 + b1*t + w[t]
    _ = tsplot(y, lags=lags)
    

    在这里插入图片描述
    从上图可观测到,线性模型的自相关函数呈现阶梯型下降,而偏相关函数只在时间跨度为1时显示较强相关性,大于1的时间跨度时相关性为0。

    • 对数线性模型(Log-linear Model)
      y t = e x p ( λ t ) y_t=exp(\lambda t) yt=exp(λt)
      通常表示固定的连续增长,如果对两边取对数,可以得到线性模型。
    idx = pd.date_range('2007-01-01', '2012-01-01', freq='M')
    # fake sales increasing at exponential rate
    sales = [np.exp( x/12 ) for x in range(1, len(idx)+1)]
    # create dataframe and plot
    df = pd.DataFrame(sales, columns=['Sales'], index=idx)
    with plt.style.context('bmh'):
        df.plot()
        plt.title('ABC Sales')
    

    在这里插入图片描述
    当我们取对数之后

    with plt.style.context('bmh'):
        pd.Series(np.log(sales), index=idx).plot()
        plt.title('ABC Log Sales')
    

    在这里插入图片描述

    • 白噪声
    np.random.seed(1)
    # plot of discrete white noise
    randser = np.random.normal(size=1000)
    tsplot(randser, lags=30)
    

    在这里插入图片描述
    白噪声的自相关性几乎全为0.

    • 随机步行(Random Walk)
      y t = y t − 1 + ω t y_t=y_{t-1}+\omega_t yt=yt1+ωt
    np.random.seed(1)
    n_samples = 1000
    x = w = np.random.normal(size=n_samples)
    for t in range(n_samples):
        x[t] = x[t-1] + w[t]
    _ = tsplot(x, lags=30)
    

    在这里插入图片描述
    随机步行的自相关函数显示较慢下降的强相关性,而偏相关函数只在k=1时显示非常强的相关性。
    对随机步行进行一阶差分后

    _ = tsplot(np.diff(x), lags=30)
    

    在这里插入图片描述
    和我们预期的一样,随机步行的一阶差分类似于白噪声。

    指数收益率数据 自相关分析

    ACF

    acf = pd.DataFrame()
    for index_name in indexs_logret.columns:
        acf[index_name] = sm.tsa.stattools.acf(indexs_logret[index_name])
    _ = acf.plot(kind='bar',subplots=True,title='AutoCorrelation Plot',figsize=(12,8))
    

    在这里插入图片描述

    PACF

    pacf = pd.DataFrame()
    for index_name in indexs_logret.columns:
        pacf[index_name] = sm.tsa.stattools.pacf(indexs_logret[index_name])
    _ = pacf.plot(kind='bar',subplots=True,title='AutoCorrelation Plot',figsize=(12,8))
    

    在这里插入图片描述
    可以看出,
        国内货币显示出周期性的自相关性。
        国内债卷在时间跨度较小时显示相关性。
        国内股票和香港股票则无明显自相关性。

    • 国内股票
    tsplot(indexs_sub['国内股票'],lags=30)
    

    在这里插入图片描述
    国内股票收益率

    tsplot(indexs_logret['国内股票'],lags=30)
    

    在这里插入图片描述
    香港股票

    tsplot(indexs_sub['香港股票'],lags=30)
    

    在这里插入图片描述
    香港股票收益率

    tsplot(indexs_logret['香港股票'],lags=30)
    

    在这里插入图片描述
    国内债卷

    tsplot(indexs_sub['国内债券'],lags=30)
    

    在这里插入图片描述
    国内债卷收益率

    tsplot(indexs_logret['国内债券'],lags=30)
    

    在这里插入图片描述

    国内货币

    tsplot(indexs_sub['国内货币'],lags=30)
    

    在这里插入图片描述
    国内货币收益率

    tsplot(indexs_logret['国内货币'],lags=30)
    

    在这里插入图片描述

    AR Modeling

    对国内股票对数收益率进行建模
    以AIC为优劣准则,所估算的最佳阶数为15.
    fpe ( Final Predict Error ) = 0.000276

    import math
    result_df = pd.DataFrame(columns=['data','AIC','BIC','LLF','RMSE'])
    max_lag = 30
    
    mdl_ar_gg = smt.AR(indexs_logret['国内股票']).fit(maxlag=max_lag, ic='aic', trend='nc')
    est_order_ar_gg = smt.AR(indexs_logret['国内股票']).select_order(
                              maxlag=max_lag, ic='aic', trend='nc')
    print('{}: best estimated lag order = {}'.format('国内股票',est_order_ar_gg))
    print('fpe:',mdl_ar_gg.fpe)
    

    国内股票: best estimated lag order = 15
    fpe: 0.0002758011032636643

    from sklearn.metrics import mean_squared_error
    pstart='2017-01-03'
    pend = '2017-02-03'
    predicted_value = mdl_ar_gg.predict(pstart,pend)
    real_value = indexs_logret['国内股票']
    ar_gg_rmse = math.sqrt(mean_squared_error(real_value[pstart:pend].values, predicted_value))
    
    result_df.loc[0] = ['国内股票',mdl_ar_gg.aic,mdl_ar_gg.bic,mdl_ar_gg.llf,ar_gg_rmse]
    
    • 残差plot 残差图已无自相关特征
      但残差并非正态分布
    tsplot(mdl_ar_gg.resid,lags=30)
    

    在这里插入图片描述

    • AR与真实值比较
      蓝色为真实值
    fig = plt.figure(figsize=(18,6))
    plt.plot(indexs_logret['国内股票'])
    plt.plot(mdl_ar_gg.fittedvalues)
    plt.tight_layout()
    

    在这里插入图片描述
    对香港股票对数收益率AR建模

    mdl_ar_xg = smt.AR(indexs_logret['香港股票']).fit(maxlag=max_lag, ic='aic', trend='nc')
    est_order_ar_xg = smt.AR(indexs_logret['香港股票']).select_order(
                             maxlag=max_lag, ic='aic', trend='nc')
    print('{}: best estimated lag order = {}'.format('香港股票',est_order_ar_xg))
    print(mdl_ar_xg.fpe)
    

    香港股票: best estimated lag order = 1
    0.00011970079461654166

    predicted_value = mdl_ar_xg.predict(pstart,pend)
    real_value = indexs_logret['香港股票']
    ar_gg_rmse = math.sqrt(mean_squared_error(real_value[pstart:pend].values, predicted_value))
    result_df.loc[1] = ['香港股票',mdl_ar_xg.aic,mdl_ar_xg.bic,mdl_ar_xg.llf,ar_gg_rmse]
    

    国内债卷AR建模

    max_lag = 30
    mdl = smt.AR(indexs_logret['国内债券']).fit(maxlag=max_lag, ic='aic', trend='nc')
    est_order = smt.AR(indexs_logret['国内债券']).select_order(
                            maxlag=max_lag, ic='aic', trend='nc')
    print('{}: best estimated lag order = {}'.format('国内债券',est_order))
    print(mdl.fpe)
    

    国内债券: best estimated lag order = 15
    6.355019484090043e-07

    国内货币AR建模

    max_lag = 30
    mdl = smt.AR(indexs_logret['国内货币']).fit(maxlag=max_lag, ic='aic', trend='nc')
    est_order = smt.AR(indexs_logret['国内货币']).select_order(
                       maxlag=max_lag, ic='aic', trend='nc')
    print('{}: best estimated lag order = {}'.format('国内货币',est_order))
    print(mdl.fpe)
    

    国内货币: best estimated lag order = 17
    9.379100981226173e-09

    总结

        本文展示了采用Python语言为四个指数时序数据进行自回归分析建模,介绍了AR模型、ACF和PACF等相关概念,并对四个指数时序收益率进行了AR分析和建模。

    展开全文
  • Autoregression / AR,就是用前期数据来预测后期数据的回归模型,所以叫做自回归模型。 它的逻辑简单,但对时间序列问题能够做出相当准确的预测。 1)回归函数 y^t=b0+b1yt−1+...+bnyt−n,其中n<t y\hat{}_t =...

    Autoregression / AR,就是用前期数据来预测后期数据的回归模型,所以叫做自回归模型。

    它的逻辑简单,但对时间序列问题能够做出相当准确的预测。

    1)自回归函数

    y ^ t = b 0 + b 1 y t − 1 + . . . + b n y t − n , 其 中 n < t y\hat{}_t = b_0 + b_1y_{t-1} + ... + b_ny_{t-n} , 其中n<t y^t=b0+b1yt1+...+bnytn,n<t
    只有在数据平稳/若平稳的基础上,才能进行实现序列分析

    正式的说,如果一个时间序列 x t x_t xt 的一阶矩和二阶矩(即均值和方差)具有时间不变性,则称它为弱平稳的。弱平稳性是很重要的,因为它为预测提供了基础框架。
    ——《金融数据分析导论:基于R语言》2.1 平稳性

    2)上例子
    1. 首先取数&画图
    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv',
    				 index_col=0, parse_dates=True)
    print(df.head())
    df.plot()
    plt.show()
    
    # 结果如下
                Temp
    Date            
    1981-01-01  20.7
    1981-01-02  17.9
    1981-01-03  18.8
    1981-01-04  14.6
    1981-01-05  15.8
    
    

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200408195712847.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h0dWh4Zg==,size_16,color_FFFFFF,t_70从上图可知温度序列是弱平稳的(weakly stationary);但是肉眼看不精确是不是平稳的,此时ADF Test/ Augmented Dickey-Fuller Test就排上用场了,其原假设H0:存在单位根/UNIT ROOT(即数据不平稳)

    from statsmodels.tsa.stattools import adfuller
    a = df.Temp
    print(adfuller(a,    # 下述参数均为默认值
    				maxlag=None, 
    				regression='c', 
    				autolag='AIC',   # 自动在[0, 1,...,maxlag]中间选择最优lag数的方法;
    				store=False, 
    				regresults=False)
    				)
    
    # 结果如下
    (-4.444804924611687,   #  AIC标准下得到的统计值,用于和下边 1%,5%,和10%临界值比较。但更方便的是直接用下边的p值
     0.00024708263003611164,   #  AIC标准下的p值,即原假设成立的概率
     20,     # AIC标准下的lags
     3629,   # nobs: 本次检测用到的观测值个数。ADF TEST中参数maxlag即由它决定,公式是 maxlag=12*(nobs/100)^{1/4},此处即29.45
    {'1%': -3.4321532327220154,   # 1%标准下的临界值
    '5%': -2.862336767636517, 
    '10%': -2.56719413172842}, 
    16642.822304301197)
    

    由p值可以看出,原假设成立的概率极底,我们应该拒绝原假设。即数据平稳。

    adfuller函数官方文档备注:
    Augmented Dickey-Fuller的原假设是存在单位根,备择假设是不存在单位根。如果p-value大于临界值,那么我们就不能拒绝有一个单位根存在。

    p-value是通过MacKinnon 1994年的回归曲面近似得到的,但使用的是更新的2010年表

    1. 快速查看数据是否适合AR模型
    from pandas.plotting import lag_plot
    lag_plot(df)   # 默认lag=1
    plt.show()
    # 结果如图所示:
    

    lag plot如上图所示, y t + 1 y_{t+1} yt+1 y t y_t yt明显相关。当然我们能通过计算,得到相关系数是0.77和显著性水平0。

    from scipy.stats.stats import pearsonr
    
    a = df.Temp
    b = df.Temp.shift(1)
    
    print(pearsonr(a[1:], b[1:]))
    
    # 结果如下
    (0.7748702165384458, 0.0)
    
    1. 上边是很好的检测方法。但是如果我们想同时查看 Y t Y_t Yt Y t − 1 Y_{t-1} Yt1,…, Y t − n Y_{t-n} Ytn的相关性,重复n次就太繁琐了。
      下面介绍一个一次性画出n多Lag的自回归系数方法:statsmodels.graphics.tsaplots.plot_acf()
    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
    fig, axes = plt.subplots(2,1)
    
    fig, axes = plt.subplots(2, 1)
    plot_acf(df['Temp'], ax=axes[0])
    plot_pacf(df['Temp'], ax=axes[1])
    
    plt.tight_layout()
    plt.show()
    

    在这里插入图片描述
    4. 最后,到此为止我们就知道如何查看时间序列数据的自相关性了。接下来看如何用对它建立模型。

    import pandas as pd
    import numpy as np
    from statsmodels.tsa.ar_model import AR
    import matplotlib.pyplot as plt
    from sklearn.metrics import mean_squared_error as MSE
    
    df = pd.read_csv('e:/daily-min-temperatures.csv',
                     index_col=0, parse_dates=True)
    # 把模型数据分为train和test,分别用来训练模型和对比模型预测结果
    x = df.values
    train, test = x[:-7], x[-7:]  # test的个数设定为7
    
    # 训练模型得到所需参数:AR的滞后项个数p,和自回归函数的各个系数
    model_fit = AR(train).fit()
    params = model_fit.params
    p = model_fit.k_ar  # 即时间序列模型中常见的p,即AR(p), ARMA(p,q), ARIMA(p,d,q)中的p。
    # p的实际含义,此处得到p=29,意味着当天的温度由最近29天的温度来预测。
    
    history = train[-p:]   
    history = np.hstack(history).tolist()  # 也可以用history = [history[i] for i in range(len(history))] ,
    # 唯一的目的就是接下来通过append(test[i])实时更新history
    # (append函数不适用于np.narray类型的history)
    test = np.hstack(test).tolist()
    
    predictions = []
    for t in range(len(test)):
    	lag = history[-p:]
    	yhat = params[0]
    	for i in range(p):
    		yhat += params[i+1] * lag[p-1-i]
    	predictions.append(yhat)
    	obs = test[t]
    	history.append(obs)
    print(np.mean((np.array(test) - np.array(predictions))**2))  # 得到mean_squared_error, MSE
    plt.plot(test)
    plt.plot(predictions, color='r')
    plt.show()
    

    在这里插入图片描述附注:

    • 2个随机变量X和Y的pearson线性相关系数定义为:
      ρ x , y = C o v ( X , Y ) V a r ( X ) V a r ( Y ) = E [ ( X − μ x ) ( Y − μ y ) ] E ( X − μ x ) 2 E ( Y − μ y ) 2 ρ_{x,y} = \frac{Cov(X, Y)}{\sqrt{Var(X)Var(Y)}} = \frac{E[(X-μ_x)(Y-μ_y)]}{\sqrt{E(X-μ_x)^2E(Y-μ_y)^2}} ρx,y=Var(X)Var(Y) Cov(X,Y)=E(Xμx)2E(Yμy)2 E[(Xμx)(Yμy)]
      – 具体到样本:
      ρ ^ x , y = ∑ t = 1 T [ ( x t − x ˉ ) ( y t − y ˉ ) ] ∑ t = 1 T ( x t − x ˉ ) 2 ∑ t = 1 T ( y t − y ˉ ) 2 \hat{ρ}_{x,y} = \frac{\sum_{t=1}^{T} [(x_t -\bar{x})(y_t-\bar{y})]}{\sqrt{\sum_{t=1}^{T} (x_t -\bar{x})^2\sum_{t=1}^{T}(y_t-\bar{y})^2}} ρ^x,y=t=1T(xtxˉ)2t=1T(ytyˉ)2 t=1T[(xtxˉ)(ytyˉ)]
    展开全文
  • 为了揭示区域经济发展与其影响因素间的作用关系,为制定区域经济发展政策提供参考,以中部6省经济数据为例,采用普通回归模型和空间自回归模型分析和比较人均GDP增长率及其影响因素的相关关系.结果表明:数据空间...
  • 在TQAR模型中, 自回归阶数与门限值的确定等, 都会影响模型分析效果. 为此,本文给出模型定阶、门限值估计及门限效应检验等方法. 数值模拟结果表明, TQAR模型在门限值估计、回归系数估计的有限样本表现方面都优于传统...
  • 金融时间序列分析:4. AR自回归模型

    万次阅读 多人点赞 2016-12-28 11:11:07
    AR模型AR模型:(Autoregressive Model)自回归模型,是时间序列分析模型中最简单的两个模型其中之一(另一个事MA模型)。 利用前期若干时刻的随机变量的线性组合来描述以后某时刻随机变量的线性回归模型(AR)

    0. 目录

    金融时间序列分析:9. ARMA自回归移动平均模型
    金融时间序列分析:8. MA模型实例(Python)
    金融时间序列分析:7. MA滑动平均模型
    金融时间序列分析:6. AR模型实例
    金融时间序列分析:5. AR模型实例(Python)
    金融时间序列分析:4. AR自回归模型
    金融时间序列分析:3. First Demo By Python
    金融时间序列分析:2. 数学分析模型
    金融时间序列分析:1. 基础知识


    1. 前言

    接下来真是进入金融时间序列分析与预测阶段,可以说进入本篇算是正式入门了。
    这里会聊聊一个最基本的模型——AR模型


    2. AR模型

    AR模型:(Autoregressive Model)自回归模型,是时间序列分析模型中最简单的两个模型其中之一(另一个事MA模型)。

    利用前期若干时刻的随机变量的线性组合来描述以后某时刻随机变量的线性回归模型

    这里写图片描述
    其中{ at }是均值为0,方差为 σ2 的白噪声序列。


    3. AR(1)

    3.1 模型公式

    xt=ϕ0+ϕ1xt1+at,...............3.1

    or

    (1ϕ1B)xt=ϕ0+at

    3.2 数学特征

    期望

    E(xt)=μ=ϕ01ϕ1,................3.2

    推导方法:直接对公式3.1两边求期望即可

    把3.2带入3.1可以将AR模型公式改写为:

    xtμ=ϕ1(xt1μ)+at,................3.3

    方差

    Var(xt)=σa21ϕ12,....................3.4

    推导方法:直接对公式3.1两边求方差即可

    协方差
    这里写图片描述

    自相关函数

    ρk=ϕ1ρk1,k>0

    ρ1=ϕ1
    ρ2=ϕ12

    ρk=ϕ1k

    因为 |ρ1|=|ϕ1|1 ,所以 ρk 随着k的增大时不断衰减的,从显示意义上解释是:

    越是久远的数据,对当前数据的印象越小

    ACF表现如下:
    这里写图片描述

    3.3 预测

    yt=xtμ ,带入3.3式得:

    yt=ϕ1yt1+at,...................3.5

    单步预测
    (1)预测
    ŷ n(1)=ϕ1yn

    (2)误差
    en(1)=yn+1ŷ n(1)=at+1

    (3)误差波动率
    Var(en(1))=σa2

    两步预测
    (1)预测

    ŷ n(2)=ϕ1ŷ n(1)=ϕ21yn

    (2)误差
    en(2)=yn+2ŷ n(2)=ϕ1an+1+an+2

    (3)误差波动率
    Var(en(2))=(ϕ21+1)σa2

    多步预测
    (1)预测

    ŷ n(k)=ϕ1ŷ n(k1)=ϕk1yn

    (2)误差
    en(k)=yn+kŷ n(k)=an+k+ϕ1an+k1+...+ϕi1an+ki+ϕk11an+1

    (3)误差波动率
    Var(en(k))=(1+ϕ21+...+ϕ2(k1)1)σa2

    Particularly:

    k 时:
    ŷ n(k)0,x(n)μ
    Var(en(k))=Var(rn)


    4. AR(2)

    4.1 模型公式

    xt=ϕ0+ϕ1xt1+ϕ2xt2+at,...............4.1

    or

    (1ϕ1Bϕ2B2)xt=ϕ0+at

    4.2 数学特征

    期望

    E(xt)=μ=ϕ01ϕ1ϕ2,................4.2

    推导方法:直接对公式3.1两边求期望即可

    把3.2带入3.1可以将AR模型公式改写为:

    xtμ=ϕ1(xt1μ)+ϕ2(xt2μ)+at,................4.3

    PS:

    This form is often used in the finance literature to highlight the mean-reverting property of a stationary AR(2) model.
    In finance, mean reversion is the assumption that a stock’s price will tend to move to the average price over time.

    方差

    Var(xt)=σa21ϕ12,....................4.4

    推导方法:直接对公式3.1两边求方差即可

    ACF
    ρ0=1
    ρ1=ϕ11ϕ2

    ρk=ϕ1ρk1+ϕ2ρk2,k2,.......4.5

    4.3. 滞后算子B\L

    平稳的时间序列,AR(2) ACF满足二阶差分方程:

    (1ϕ1Bϕ2B2)ρk=0,..........4.6

    其中B成为延时算子或滞后算子(backshift),

    Bρk=ρk1

    B=ρk1ρk

    上面这个式子很重要,决定了AR(2)的性质。
    差分方程:
    1ϕ1zϕ2z2=0

    求解:
    z=ϕ1+ϕ21+4ϕ22ϕ2

    我们用ω1, ω2表示2个特征根(z的倒数),那么差分方程可以分解为
    (1 - ω1B)(1-ω2B) = 0
    这可以看成两个AR(1)模型的叠加。
    当ω1和ω2非复数时,ACF程混合指数衰减,如下图(a)
    当ω1和ω2为复数时,ACF呈减幅的正弦/余弦图像衰减,如图(b), (c), (d).

    这种情况很常见,也很重要,因为通常通过计算其波动周期确定对应序列的周期性。

    这里写图片描述


    6. 平稳性

    AR(1): |ϕ1|<1
    AR(p):所有特征根的的模小于1

    7. 参考文献

    [1] MIT, Analysis of Financial Time Series
    [2] https://en.wikipedia.org/wiki/Mean_reversion_(finance)
    [3] 金融时间序列分析, Ruey S. Tray

    展开全文
  • 自回归模型/向量自回归模型

    千次阅读 2012-02-06 15:34:00
    回归模: 利用前期若干时刻的随机变量的线性组合来描述以后某时刻随机变量的线性回归模型。 向量自回归模型(简称VAR模型)是一种常用的计量经济模型,由克里斯托弗·西姆斯(Christopher Sims)提出。它是AR模型的...
  • 自回归模型分析过程,AR.rar )灰色预测模型哈,自己看看,应该不难啊。
  • 一阶自回归模型matlab程序

    热门讨论 2012-12-20 23:52:25
    对一阶自回归模型进行分析的matlab程序
  • 使用时变自回归模型进行冷压试验期间心率变异性的时频分析
  • 自回归模型ar解哦.doc

    2020-10-23 07:59:08
    摘要主要讨论时间序列的自回归模型AR(p)的参数估计问题列出常用的普通最小二乘估计但实际的观测值是含有随机误差的且与自身前一个或前几个时刻的观测值有关或有依赖性都要考虑其所含的随机误差所以引入整体最小...
  • 逐步回归与自回归模型在水文预报中的应用,曹琨,,根据洪家渡水电站1952-2009年实测径流资料及1951-2008年74项气象因子,分别建立逐步回归与自回归模型对月径流量进行拟合预报,结果均通�
  • 基于向量自回归模型的人口结构变动对医疗卫生支出影响效应分析.pdf
  • 向量自回归模型建模步骤梳理(VAR、VMA、VARMA模型)
  • MATLAB程序,附有数据和详细计算过程,自回归模型分析过程
  • AR自回归模型matlab预测程序

    热门讨论 2014-07-11 15:42:31
    AR自回归模型,采用matlab预测程序,差分标准化数据后进行AR模型使用判定,之后定AR阶数,做预测处理
  • 貂年捕获量的门限自回归模型,黄文贤,,该篇论文通过对貂年捕获量数据的非线性分析,通过R和Eviews3.1的处理建立门限自回归模型 。其中对模型 的参数估计分别采用点值图法估
  • 论文研究- 利用周期自回归模型对1992年宏观经济主要指标的预测及分析.pdf, 一、前言 众所周知,自回归模型在时间序列分析中是一种使用最广泛的模型,特别是对平稳序列的自回归模型是一种比较理想的模型。但是在宏观...
  • 向量回归(VAR)是基于数据的统计性质建立模型VAR模型把系统中每一个内生变量作为系统中所有内生变量的滞后值的函数来构造模型从而将单变量自回归模型推广到由多元时间序列变量组成的向量自回归模型VAR模型是处理多...
  • 向量自回归模型VAR

    2013-11-20 10:33:09
    向量自回归是一种很好的模型研究,要好好把握好,不然就很难做回归
  • 支持向量机自回归分析的股市动态预测模型。该模型利用滚动时间窗 动态截取股票时间序列,然后对其进行相空间重构,最后利用支持向量 机回归算法,在高维映射空间中求解线性回归问题。利用上证综指的 长期和短期数据...
  • 论文研究-利用周期自回归模型对1995年部分宏观经济指标的预测与分析.pdf,
  • Python变量 Python中的向量自回归模型
  • 应用自回归模型分析法兰螺纹连接上下壳体的差值信号,进行螺纹连接松动诊断。在螺纹连接模型上,改变某一个螺钉的预紧力,将正常工况下的差值信号作为参考总体,并以此建立AR模型,其他预紧力下的差值信号为待检总体...
  • 针对汇率变化的非线性特征,采用非线性门限自回归模型对汇改后人民币/美元汇率的变化趋势进行分析,并与传统的线性时间序列模型结果进行比较,结果表明,非线性门限自回归模型精度较高.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 318,970
精华内容 127,588
关键字:

自回归模型