精华内容
下载资源
问答
  • 在之前的专栏中我们用ARIMA的方法做了时间序列的趋势性预测。 不过我们经常还会遇到一种情况,即某些时间序列中存在明显的周期性变化,这种周期是...一种适用于描述这类序列的模型称作季节时间序列模型(SARIMA, se...

    在之前的专栏中我们用ARIMA的方法做了时间序列的趋势性预测。

    不过我们经常还会遇到一种情况,即某些时间序列中存在明显的周期性变化,这种周期是由于季节性变化(季度、月度等)引起的。

    如下图所示,为1949年到1960年每月国际航空公司的乘客人数。从中可以看到明显的季节性,该周期为12个月。

    其中包含了季节性和趋势性

    一种适用于描述这类序列的模型称作季节时间序列模型(SARIMA, seasonal ARIMA model),也叫乘积ARIMA模型,因为模型的形式是以相乘的形式表示。

    有关于SARIMA的理论知识这里也不展开了,需要了解基础原理的可以看这里(这个文档是付费的,不过免费预览的那段也足够用了)。

    假设你已经了解了模型的基本形式,现在开始编程。编程答题思路与ARIMA相同,不过细节处有颇多不同。

    1.加载试验数据与参数设置

    %% 1.加载数据
    load('Data_Airline.mat')   %加载航空公司数据
    data = Data(:);            %转为列向量
    S = 12;                    %季节性序列变化周期,12个月
    figflag = 'on';            %打开画图
    step = 48;                 %预测步数

    2.确定季节性与非季节性差分数

    与ARIMA模型一样,使用SARIMA模型也要求数据平稳。不同的是SARIMA的差分项有两个,分别是季节性差分与非季节性差分。通常季节性差分经过一次即可,非季节性差分通常在0~3之间。

    使用下述代码将原始序列进行差分计算,需要注意差分后的序列长度将会缩短。

    %% 2.确定季节性与非季节性差分数,D取默认值1,d从0至3循环,平稳后停止
    for d = 0:3
        D1 = LagOp({1 -1},'Lags',[0,d]);     %非季节差分项的滞后算子
        D12 = LagOp({1 -1},'Lags',[0,1*S]);  %季节差分项的滞后算子
        D = D1*D12;                          %相乘
        dY = filter(D,data);                 %对原数据进行差分运算
        if(getStatAdfKpss(dY))               %数据平稳
            disp(['非季节性差分数为',num2str(d),',季节性差分数为1']);
            break;
        end
    end

    上述代码中的getStatAdfKpss为检验数据是否已经平稳的自定义函数,当函数返回1时说明数据已经平稳。

    3.确定SARIMA模型阶数

    这个步骤中需要确定的阶数有四个:AR阶数p,MA阶数q,SAR阶数P,SMA阶数Q。这里就不贴PCA和FPCA定阶的方法了,而是直接用简单粗暴的暴力定阶(基于AICBIC准则的方法)。

    %% 3.确定阶数ARlags,MALags,SARLags,SMALags
    max_ar = 3;  %
    max_ma = 3;
    max_sar = 3;
    max_sma = 3;
    try
        [AR_Order,MA_Order,SAR_Order,SMA_Order] = SARMA_Order_Select(dY,max_ar,max_ma,max_sar,max_sma,S,d); %自动定阶
    catch ME %捕捉错误信息
        msgtext = ME.message;
        if (strcmp(ME.identifier,'econ:arima:estimate:InvalidVarianceModel'))
             msgtext = [msgtext,'  ','无法进行arima模型估计,这可能是由于用于训练的数据长度较小,而要进行拟合的阶数较高导致的,请尝试减小max_ar,max_ma,max_sar,max_sma的值'];
        end
        msgbox(msgtext, '错误')
    end
    disp(['ARlags=',num2str(AR_Order),',MALags=',num2str(MA_Order),',SARLags=',num2str(SAR_Order),',SMALags=',num2str(SMA_Order)]);

    SARMA_Order_Select是我自己写的一个函数,只需要输入信号、最大p值、最大q值、最大P、最大Q、序列周期和差分阶数就可以得到推荐p、q、P、Q。

    运行结果为:

    ARlags=1,MALags=1,SARLags=1,SMALags=1

    即p=1,q=1,P=1,Q=1

    4.残差检验

    为了确保确定的阶数合适,还需要进行残差检验。残差即原始信号减掉模型拟合出的信号后的残余信号。如果残差是随机正态分布的、不自相关的,这说明残差是一段白噪声信号,也就说明有用的信号已经都被提取到ARMA模型中了。

    下述代码中的creatSARIMA是笔者专门写的构建模型的函数,这里的处理方式的不同就是ARMA与SARIMA方法的众多差别的体现。总体来说SARIMA的是更复杂的。

    Mdl = creatSARIMA(AR_Order,MA_Order,SAR_Order,SMA_Order,S,d);  %创建SARIMA模型
    try
        EstMdl = estimate(Mdl,data);
    catch ME %捕捉错误信息
        msgtext = ME.message;
        if (strcmp(ME.identifier,'econ:arima:estimate:InvalidVarianceModel'))
             msgtext = [msgtext,'  ','无法进行arima模型估计,这可能是由于用于训练的数据长度较小,而要进行拟合的阶数较高导致的,请尝试减小max_ar和max_ma的值']
        end
        msgbox(msgtext, '错误')
        return
    end
    [res,~,logL] = infer(EstMdl,data);   %res即残差
    
    stdr = res/sqrt(EstMdl.Variance);
    figure('Name','残差检验','Visible','on')
    subplot(2,3,1)
    plot(stdr)
    title('Standardized Residuals')
    subplot(2,3,2)
    histogram(stdr,10)
    title('Standardized Residuals')
    subplot(2,3,3)
    autocorr(stdr)
    subplot(2,3,4)
    parcorr(stdr)
    subplot(2,3,5)
    qqplot(stdr)

    v2-2428304cbb5a6a68e810a57ddddd0fa2_720w.jpg

    残差检验

    上图为残差检验的结果图。Standardized Residuals是查看残差是否接近正态分布,理想的残差要接近正态分布;ACF和PACF检验残差的自相关和偏自相关,理想的结果应该在图中不存在超出蓝线的点;最后一张QQ图是检验残差是否接近正太分布的,理想的结果中蓝点应该靠近红线。

    除了上述图像检验方法,还可以通过Durbin-Watson对相关性进行检验:

    % Durbin-Watson 统计是计量经济学分析中最常用的自相关度量
    diffRes0 = diff(res);  
    SSE0 = res'*res;
    DW0 = (diffRes0'*diffRes0)/SSE0 % Durbin-Watson statistic,该值接近2,则可以认为序列不存在一阶相关性。

    运算结果为1.9887,这个值越接近2越说明残差不存在一阶相关性。

    上述检验可以证明,残差接近正态分布,且相互独立,可以认为ARMA建模符合要求。

    5.预测

    [forData,YMSE] = forecast(EstMdl,step,data);   %matlab2018及以下版本写为Predict_Y = forecast(EstMdl,step,'Y0',Y);   matlab2019写为Predict_Y = forecast(EstMdl,step,Y);
    
    lower = forData - 1.96*sqrt(YMSE); %95置信区间下限
    upper = forData + 1.96*sqrt(YMSE); %95置信区间上限
    
    figure('Visible','on')
    plot(data,'Color',[.7,.7,.7]);
    hold on
    h1 = plot(length(data):length(data)+step,[data(end);lower],'r:','LineWidth',2);
    plot(length(data):length(data)+step,[data(end);upper],'r:','LineWidth',2)
    h2 = plot(length(data):length(data)+step,[data(end);forData],'k','LineWidth',2);
    legend([h1 h2],'95% 置信区间','预测值',...
    	     'Location','NorthWest')
    title('Forecast')
    hold off

    直接上结果:

    上图中灰线为用来训练的数据,黑线为未来值的预测,红线为95%置信区间上下限。也就是说未来真实值有95%的概率落在这个范围内。

    6.封装

    上述整个过程可以封装成一个函数,如下:

    function [forData,lower,upper] = Fun_SARIMA_Forecast(data,step,max_ar,max_ma,max_sar,max_sma,S,figflag)
    % 使用SARIMA进行预测的函数,可以直接调用,非季节差分阶数自动确定。p,q,P,Q自动确定
    % 输入:
    % data为待预测数据,一维数据,使用SARIMA时,该数据长度至少为10+S,S为周期长度,但是达到10+S之后仍然可能会报错,可能是由数据的差分处理使得目标数据长度变短导致的。
    % step为拟预测步数
    % max_ar为AR模型搜寻的最大阶数   建议不大于3
    % max_ma为MA模型搜寻的最大阶数   建议不大于3
    % max_sar为SAR模型搜寻的最大阶数   建议不大于3
    % max_sms为SMA模型搜寻的最大阶数   建议不大于3
    % S为季节性周期
    % figflag 为画图标志位,'on'为画图,'off'为不画
    % 输出:
    % forData为预测结果,其长度等于step
    % lower为预测结果的95%置信下限值
    % upper为预测结果的95%置信上限值

    直接调用就可以出结果。

    获取文章中全部源码,可以关注公众号“括号的城堡”,微信号“khscience”,回复“季节序列预测”获取。

     

    参考:

    MATLAB 文档中心 - MathWorks 中国

    展开全文
  • 回顾一下,严平稳遍历序列有强大数律: (二)中心极限定理 我们知道如果时间序列数据中每个样本点是独立同分布的,那么 有了渐近分布,计算参数的置信区间就容易了。下面讨论一般的平稳列的中心极限定理。 定理 ...

    3.3 广义 ARMA 模型和 ARIMA 模型介绍

    一、广义 ARMA 模型

    (1)定义

    我们把 ARMA 模型中关于多项式 A(z),B(z) 的最小相位条件去掉(即允许有单位圆内的根),其余定义相同,得到的就是广义 ARMA 模型。

    (2)平稳解情况

    如果 A(z) 在单位圆上有根,那么广义 ARMA 模型没有平稳解。

    如果 A(z) 在单位圆上没有根,则有

    ,使得
    在圆环

    内解析,可以进行 Laurent 级数展开(在单位圆内按正常展开,单位圆外则用倒数来替代)得到

    其中两头系数通项都负指数趋于 0,所以整体系数也负指数趋于 0,进而由唯一平稳解

    但这个平稳解中,现在的观察值会与将来的白噪声有关,并没有实际意义。此外,根据齐次差分方程理论,对于

    其特征多项式有单位圆内的根,因此通解是趋于无穷的,所以这时广义 ARMA 的其他解(通解)会趋于无穷,称为爆炸模型

    二、求和 ARIMA(p,d,q) 模型

    (1)定义

    设 d 是一个正整数,如果

    的 d 阶差分

    是一个 ARMA(p,q) 序列(最后一个等号利用二项式定理展开),则称

    是一个求和 ARIMA(p,d,q) 序列。它满足如下差分方程

    其中 A(z),B(z) 都按照 ARMA 模型的定义。

    :通常取 d=1,2,且该模型不存在平稳解

    (2)非平稳解的讨论

    情形 d=1:即 ARIMA(p,1,q) 模型,这时

    是 ARMA(p,q) 序列,给定初值可以得到

    可以通过产生 ARMA(p,q) ,进而利用该递推式来得到 ARIMA(p,1,q) 序列。该模型也称为单位根模型,当样本数据不太大时,与平稳序列差异不大,不容易区分。

    将单位根模型与如下趋势模型进行对比:

    其中 Y 是 ARMA(p,q) 序列。

    单位根模型与趋势模型得到的都是非平稳序列,单位根模型通过一次差分后,序列变为平稳;趋势模型通过减去趋势项,序列也变为平稳。但单位根模型减去趋势项,仍非平稳。

    情形 d=2:即 ARIMA(p,2,q) 模型,这时

    是一个 ARMA(p,q) 序列。由此可以得到递推关系如下

    两边对 t 求和(从 1 到 n1)得到

    到这里就得到了类似 ARIMA(p,1,q) 模型,移项得到

    再对 n1 求和(从 1 到 t )得到

    从这可以看出有一部分线性趋势,但如果减掉,剩下的还是一个类似 ARIMA(p,1,q) 序列,仍然是非平稳的。其通解可以写为如下形式

    类似地可以推广到 ARIMA(p,d,q) 情形,其通解为

    形式上看,它的通解为 ARMA 序列的 d 重求和,加上一个多项式的趋势

    (3)几种特殊情形

    a. ARI(1,1) 模型(即 ARIMA(1,1,0)),差分后得到 AR(1) 序列

    其中 a 的模小于 1,看上去是 AR(2) 但并不是,因为根在单位圆内了!

    将其非平稳解表示成 wold 系数的形式

    将 wold 系数形式代回原模型,可以得到 wold 系数的递推关系(此处不要求,步骤略写,但思想需要掌握)

    结合初值得到

    可以看出 wold 系数并不收敛于 0,所以 X_t 是非平稳的。

    b. IMA(1,1) 模型(即 ARIMA(0,1,1))--商业和经济中常用

    模型为

    设序列首次观测的时间为 -m ,则在此之前( t<-m )没有观测值,都记为 0.

    那么由模型不断递推得到

    这时一个 MA(t+m+1) 模型。

    其方差为系数的平方和

    对于较大的 m 和中等大小的 k,相关系数近似为

    其中协方差与 X_t 的方差只在 ε_t 的系数部分有差别。

    可见,当 t 增大时,方差会无限增大。并且对于多个滞后期数 k,

    高度正相关。这种周期性符合现实经济和商业的特性。

    三、季节 ARMA 模型

    (1)季节 MA 模型

    例如我们拿到了 2000-2020 年每个月份的数据,那么我们将数据按月份分为 12 组,对每组的数据用 MA 模型来建模,就得到季节 MA 模型。如果数据是按季度分的,也是同理。

    此时模型为

    计算自协方差函数如下

    序列是平稳的,并且仅在滞后 12 处才有非零的自相关性。这样得到的每一个月份都是同一个 MA 模型。

    现在我们考察周期为 s 的 MA(Q) 模型:

    从形式上看,季节 MA(Q) 模型也就是 MA(Qs) ,只不过其中很多系数都是 0。

    同样地,它也是平稳序列,并且自相关系数只在 s, 2s, 3s, ... , Qs 处非零,具体表达式如下

    分母是系数的平方和,分子是系数错一位的乘积和。

    (2)季节 AR 模型

    类似地,季节 AR(1) 模型为

    因为根在单位圆外,所以将来的白噪声和过去的观察值是不相关的。两边同乘

    ,然后取数学期望得到

    递推可得

    其中第二行利用

    利用 AR 模型的方法可以得到季节 AR(1) 模型的平稳解为

    同样可以推广到季节 AR(p) 模型

    特征多项式满足

    (3)季节 ARMA 模型

    定义周期为 s 的季节

    模型为

    这里的 p,q 为

    的阶数,P,Q 为
    的阶数。一般 p,q 不超过 3。

    :这里为什么要多出

    呢?

    :如果没有

    ,那么某一季节的数据只与该季节中不同年份的数据有关,而与其它季节的数据无关,与实际不符。

    如果按之前(1)(2)来建立模型

    这时白噪声不应该是白噪声,而应该是一个 ARMA(p,q) 序列,这就得到了上面的定义。

    :考虑季节 ARMA 模型

    将后移算子展开得到

    计算自协方差和自相关系数如下

    一个小发现

    的形式与模型很像,把所有的 B 换成平方,减号换加号。虽然我没有证明,但直觉上这是成立的,或者二者之间至少有某种关系。先挖个坑,之后填 。

    其自协方差函数不会很快趋于0,而是具有一定的周期性。

    :考察模型

    两边同乘

    并取数学期望得到

    经常用到:将来的白噪声和现在的观测值不相关。

    由第二行同除

    可得

    由第二行取 k = 11,并结合第一行可以解得

    ,然后再利用第二行得到

    对于其余的 k(例如 2),第二行分别用 2 和 10 来代,解得两个自协方差函数都是 0,进而自相关函数都是 0.

    (4)非平稳季节 ARIMA 模型

    如果

    是周期为 s 的季节
    模型,那么称 Xt 为季节周期 s,非季节阶数为 p,d,q ,季节阶数为 P,D,Q 的季节 ARIMA 模型,或称周期为 s的
    模型。

    说明

    为某个 d 阶多项式作用后移算子,表示横向趋势(即不同季节之间),
    为某个 D 阶多项式作用后移算子的 s 次方,表示纵向趋势(同一季节不同年份之间)。

    实际问题中 d 和 D 都很小,一般 D=0 或 1,如果取更大,那么上升速度就过快了,不是爆发的阶段一般不这么取。

    回顾建模步骤

    考察如下的周期 12 , N 年的数据

    da9170e166117d1a6dbfb6107200b3eb.png

    对第 j 列数据,将其中心化(减去均值,记为 Z )后,可以拟合一个 ARMA(p,q) 序列。

    之前提到,如果这里的白噪声真的就是白噪声,那么不同季节之间不相关,显然不合理。

    所以假设这时的

    也是一个 ARMA 序列,建立一个较低阶的 ARMA(p0,q0) 模型。

    进而得到季节 ARMA 模型

    但这样的模型没有考虑随年份,随季节的递增趋势,所以上面的 Z 实际上应该要经过差分才能得到,而不仅仅是中心化。

    由差分后得到的 Z 结合之前的季节 ARMA 模型,可以得到关于 Y 的季节 ARIMA 模型

    第四章 均值和自协方差函数的估计

    4.1 均值的估计

    通过之前对不同模型的介绍,我们了解到 AR,MA,ARMA 模型的参数都可以由其自协方差函数唯一确定。因此如何由样本来估计自协方差函数是关键的。

    估计量是自然的:用样本均值估计总体均值,样本自协方差函数估计总体自协方差函数。

    但这里需要考虑几个问题:相合性、渐近分布、收敛速度。

    (一)相合性

    定理:平稳序列的自协方差函数收敛到0,那么样本均值是总体均值的相合估计。

    根据定义,求样本均值与总体均值的均方误差

    第二个等号把求和平方写成双重求和,然后得到自协方差函数(第三个等号),再做求和指标的变换。第四个等号:类似二重积分的交换次序,先考虑 m 的范围,容易得到 1-N 到 N-1 。然后利用 m 原本的范围 1-j 到 N-j 可以得到 j 的范围是 1-m 到 N-m ,但 j 一开始已经固定在 1 到 N 中,取交集就得到这个结果。第五个等号通过对 m 的正负讨论来计数。最后一步,利用数学分析中“数列平均的极限等于通项的极限”的结论。

    进而利用切比雪夫不等式

    得到样本均值的相合性。

    此外,如果平稳序列是严平稳且遍历的,那么样本均值是强相合的。

    回顾一下,严平稳遍历序列有强大数律:

    (二)中心极限定理

    我们知道如果时间序列数据中每个样本点是独立同分布的,那么

    有了渐近分布,计算参数的置信区间就容易了。下面讨论一般的平稳列的中心极限定理。

    定理 对于线性平稳列,如果白噪声时同分布的

    其中白噪声的系数平方可和(绝对可和当然更加成立),则只要平稳列的谱密度

    在 0 处连续并且

    ,那么有如下渐近分布:

    其中渐近方差的计算如下(与之前相合性证明的过程一样):

    然后利用自协方差函数与谱密度的关系,可以得到定理中的

    ,此外也可以用平稳序列的自协方差函数公式来得到,具体步骤如下

    注意:如果考试让证明某个平稳列的中心极限定理,不能直接用这个定理来得到。过程应该是:把 X1+X2+...+Xt 用白噪声来表示,利用白噪声的独立性,由不同分布的中心极限定理来得到渐近正态性。

    展开全文
  • 回顾一下,严平稳遍历序列有强大数律: (二)中心极限定理 我们知道如果时间序列数据中每个样本点是独立同分布的,那么 有了渐近分布,计算参数的置信区间就容易了。下面讨论一般的平稳列的中心极限定理。 定理 ...

    3.3 广义 ARMA 模型和 ARIMA 模型介绍

    一、广义 ARMA 模型

    (1)定义

    我们把 ARMA 模型中关于多项式 A(z),B(z) 的最小相位条件去掉(即允许有单位圆内的根),其余定义相同,得到的就是广义 ARMA 模型。

    (2)平稳解情况

    如果 A(z) 在单位圆上有根,那么广义 ARMA 模型没有平稳解。

    如果 A(z) 在单位圆上没有根,则有

    ,使得
    在圆环

    内解析,可以进行 Laurent 级数展开(在单位圆内按正常展开,单位圆外则用倒数来替代)得到

    其中两头系数通项都负指数趋于 0,所以整体系数也负指数趋于 0,进而由唯一平稳解

    但这个平稳解中,现在的观察值会与将来的白噪声有关,并没有实际意义。此外,根据齐次差分方程理论,对于

    其特征多项式有单位圆内的根,因此通解是趋于无穷的,所以这时广义 ARMA 的其他解(通解)会趋于无穷,称为爆炸模型

    二、求和 ARIMA(p,d,q) 模型

    (1)定义

    设 d 是一个正整数,如果

    的 d 阶差分

    是一个 ARMA(p,q) 序列(最后一个等号利用二项式定理展开),则称

    是一个求和 ARIMA(p,d,q) 序列。它满足如下差分方程

    其中 A(z),B(z) 都按照 ARMA 模型的定义。

    :通常取 d=1,2,且该模型不存在平稳解

    (2)非平稳解的讨论

    情形 d=1:即 ARIMA(p,1,q) 模型,这时

    是 ARMA(p,q) 序列,给定初值可以得到

    可以通过产生 ARMA(p,q) ,进而利用该递推式来得到 ARIMA(p,1,q) 序列。该模型也称为单位根模型,当样本数据不太大时,与平稳序列差异不大,不容易区分。

    将单位根模型与如下趋势模型进行对比:

    其中 Y 是 ARMA(p,q) 序列。

    单位根模型与趋势模型得到的都是非平稳序列,单位根模型通过一次差分后,序列变为平稳;趋势模型通过减去趋势项,序列也变为平稳。但单位根模型减去趋势项,仍非平稳。

    情形 d=2:即 ARIMA(p,2,q) 模型,这时

    是一个 ARMA(p,q) 序列。由此可以得到递推关系如下

    两边对 t 求和(从 1 到 n1)得到

    到这里就得到了类似 ARIMA(p,1,q) 模型,移项得到

    再对 n1 求和(从 1 到 t )得到

    从这可以看出有一部分线性趋势,但如果减掉,剩下的还是一个类似 ARIMA(p,1,q) 序列,仍然是非平稳的。其通解可以写为如下形式

    类似地可以推广到 ARIMA(p,d,q) 情形,其通解为

    形式上看,它的通解为 ARMA 序列的 d 重求和,加上一个多项式的趋势

    (3)几种特殊情形

    a. ARI(1,1) 模型(即 ARIMA(1,1,0)),差分后得到 AR(1) 序列

    其中 a 的模小于 1,看上去是 AR(2) 但并不是,因为根在单位圆内了!

    将其非平稳解表示成 wold 系数的形式

    将 wold 系数形式代回原模型,可以得到 wold 系数的递推关系(此处不要求,步骤略写,但思想需要掌握)

    结合初值得到

    可以看出 wold 系数并不收敛于 0,所以 X_t 是非平稳的。

    b. IMA(1,1) 模型(即 ARIMA(0,1,1))--商业和经济中常用

    模型为

    设序列首次观测的时间为 -m ,则在此之前( t<-m )没有观测值,都记为 0.

    那么由模型不断递推得到

    这时一个 MA(t+m+1) 模型。

    其方差为系数的平方和

    对于较大的 m 和中等大小的 k,相关系数近似为

    其中协方差与 X_t 的方差只在 ε_t 的系数部分有差别。

    可见,当 t 增大时,方差会无限增大。并且对于多个滞后期数 k,

    高度正相关。这种周期性符合现实经济和商业的特性。

    三、季节 ARMA 模型

    (1)季节 MA 模型

    例如我们拿到了 2000-2020 年每个月份的数据,那么我们将数据按月份分为 12 组,对每组的数据用 MA 模型来建模,就得到季节 MA 模型。如果数据是按季度分的,也是同理。

    此时模型为

    计算自协方差函数如下

    序列是平稳的,并且仅在滞后 12 处才有非零的自相关性。这样得到的每一个月份都是同一个 MA 模型。

    现在我们考察周期为 s 的 MA(Q) 模型:

    从形式上看,季节 MA(Q) 模型也就是 MA(Qs) ,只不过其中很多系数都是 0。

    同样地,它也是平稳序列,并且自相关系数只在 s, 2s, 3s, ... , Qs 处非零,具体表达式如下

    分母是系数的平方和,分子是系数错一位的乘积和。

    (2)季节 AR 模型

    类似地,季节 AR(1) 模型为

    因为根在单位圆外,所以将来的白噪声和过去的观察值是不相关的。两边同乘

    ,然后取数学期望得到

    递推可得

    其中第二行利用

    利用 AR 模型的方法可以得到季节 AR(1) 模型的平稳解为

    同样可以推广到季节 AR(p) 模型

    特征多项式满足

    (3)季节 ARMA 模型

    定义周期为 s 的季节

    模型为

    这里的 p,q 为

    的阶数,P,Q 为
    的阶数。一般 p,q 不超过 3。

    :这里为什么要多出

    呢?

    :如果没有

    ,那么某一季节的数据只与该季节中不同年份的数据有关,而与其它季节的数据无关,与实际不符。

    如果按之前(1)(2)来建立模型

    这时白噪声不应该是白噪声,而应该是一个 ARMA(p,q) 序列,这就得到了上面的定义。

    :考虑季节 ARMA 模型

    将后移算子展开得到

    计算自协方差和自相关系数如下

    一个小发现

    的形式与模型很像,把所有的 B 换成平方,减号换加号。虽然我没有证明,但直觉上这是成立的,或者二者之间至少有某种关系。先挖个坑,之后填 。

    其自协方差函数不会很快趋于0,而是具有一定的周期性。

    :考察模型

    两边同乘

    并取数学期望得到

    经常用到:将来的白噪声和现在的观测值不相关。

    由第二行同除

    可得

    由第二行取 k = 11,并结合第一行可以解得

    ,然后再利用第二行得到

    对于其余的 k(例如 2),第二行分别用 2 和 10 来代,解得两个自协方差函数都是 0,进而自相关函数都是 0.

    (4)非平稳季节 ARIMA 模型

    如果

    是周期为 s 的季节
    模型,那么称 Xt 为季节周期 s,非季节阶数为 p,d,q ,季节阶数为 P,D,Q 的季节 ARIMA 模型,或称周期为 s的
    模型。

    说明

    为某个 d 阶多项式作用后移算子,表示横向趋势(即不同季节之间),
    为某个 D 阶多项式作用后移算子的 s 次方,表示纵向趋势(同一季节不同年份之间)。

    实际问题中 d 和 D 都很小,一般 D=0 或 1,如果取更大,那么上升速度就过快了,不是爆发的阶段一般不这么取。

    回顾建模步骤

    考察如下的周期 12 , N 年的数据

    f33778df814656fa5c38b40117696f77.png

    对第 j 列数据,将其中心化(减去均值,记为 Z )后,可以拟合一个 ARMA(p,q) 序列。

    之前提到,如果这里的白噪声真的就是白噪声,那么不同季节之间不相关,显然不合理。

    所以假设这时的

    也是一个 ARMA 序列,建立一个较低阶的 ARMA(p0,q0) 模型。

    进而得到季节 ARMA 模型

    但这样的模型没有考虑随年份,随季节的递增趋势,所以上面的 Z 实际上应该要经过差分才能得到,而不仅仅是中心化。

    由差分后得到的 Z 结合之前的季节 ARMA 模型,可以得到关于 Y 的季节 ARIMA 模型

    第四章 均值和自协方差函数的估计

    4.1 均值的估计

    通过之前对不同模型的介绍,我们了解到 AR,MA,ARMA 模型的参数都可以由其自协方差函数唯一确定。因此如何由样本来估计自协方差函数是关键的。

    估计量是自然的:用样本均值估计总体均值,样本自协方差函数估计总体自协方差函数。

    但这里需要考虑几个问题:相合性、渐近分布、收敛速度。

    (一)相合性

    定理:平稳序列的自协方差函数收敛到0,那么样本均值是总体均值的相合估计。

    根据定义,求样本均值与总体均值的均方误差

    第二个等号把求和平方写成双重求和,然后得到自协方差函数(第三个等号),再做求和指标的变换。第四个等号:类似二重积分的交换次序,先考虑 m 的范围,容易得到 1-N 到 N-1 。然后利用 m 原本的范围 1-j 到 N-j 可以得到 j 的范围是 1-m 到 N-m ,但 j 一开始已经固定在 1 到 N 中,取交集就得到这个结果。第五个等号通过对 m 的正负讨论来计数。最后一步,利用数学分析中“数列平均的极限等于通项的极限”的结论。

    进而利用切比雪夫不等式

    得到样本均值的相合性。

    此外,如果平稳序列是严平稳且遍历的,那么样本均值是强相合的。

    回顾一下,严平稳遍历序列有强大数律:

    (二)中心极限定理

    我们知道如果时间序列数据中每个样本点是独立同分布的,那么

    有了渐近分布,计算参数的置信区间就容易了。下面讨论一般的平稳列的中心极限定理。

    定理 对于线性平稳列,如果白噪声时同分布的

    其中白噪声的系数平方可和(绝对可和当然更加成立),则只要平稳列的谱密度

    在 0 处连续并且

    ,那么有如下渐近分布:

    其中渐近方差的计算如下(与之前相合性证明的过程一样):

    然后利用自协方差函数与谱密度的关系,可以得到定理中的

    ,此外也可以用平稳序列的自协方差函数公式来得到,具体步骤如下

    注意:如果考试让证明某个平稳列的中心极限定理,不能直接用这个定理来得到。过程应该是:把 X1+X2+...+Xt 用白噪声来表示,利用白噪声的独立性,由不同分布的中心极限定理来得到渐近正态性。

    展开全文
  • 序列分解1、非季节时间序列分解 移动平均MA(Moving Average)①SAM(Simple Moving Average) 简单移动平均,将时间序列上前n个数值做简单的算术平均。 SMAn=(x1+x2+…xn)/n②WMA(Weighted Moving Average) ...

    序列分解

    1、非季节性时间序列分解

    移动平均MA(Moving Average)

    ①SAM(Simple Moving Average)
    简单移动平均,将时间序列上前n个数值做简单的算术平均。
    SMAn=(x1+x2+…xn)/n

    ②WMA(Weighted Moving Average)
    加权移动平均。基本思想,提升近期的数据、减弱远期数据对当前预测值的影响,使平滑值更贴近最近的变化趋势。
    用Wi来表示每一期的权重,加权移动平均的计算:
    WMAn=w1x1+w2x2+…+wnxn

    R中用于移动平均的API
    install.packages(“TTR”)
    SAM(ts,n=10)

    • ts 时间序列数据
    • n 平移的时间间隔,默认值为10

    WMA(ts,n=10,wts=1:n)

    • wts 权重的数组,默认为1:n
    #install.packages('TTR')
    library(TTR)
    
    data <- read.csv("data1.csv", fileEncoding="UTF8")
    
    plot(data$公司A, type='l')
    
    data$SMA <- SMA(data$公司A, n=3)
    
    lines(data$SMA)
    
    
    
    plot(data$公司A, type='l')
    
    data$WMA <- WMA(data$公司A, n=3, wts=1:3)
    
    lines(data$WMA)

    这里写图片描述

    2、季节性时间序列分解

    在一个时间序列中,若经过n个时间间隔后呈现出相似性,就说该序列具有以n为周期的周期性特征。
    分解为三个部分:
    ①趋势部分
    ②季节性部分
    ③不规则部分
    R中用于季节性时间序列分解的API
    序列数据周期确定

    • freg<-spec.pgram(ts,taper=0, log=’no’, plot=FALSE)
    • start<-which(freqspec==max(freqspec))周期开始位置
    • frequency<-1/freqfreq[which(freqspec==max(freq$spec))]周期长度

    序列数据分解
    decompose(ts)

    data <- read.csv("data2.csv", fileEncoding = "UTF8")
    
    freq <- spec.pgram(data$总销量, taper=0, log='no', plot=FALSE);
    
    start <- which(freq$spec==max(freq$spec))
    frequency <- 1/freq$freq[which(freq$spec==max(freq$spec))]
    
    
    data$均值 <- data$总销量/data$分店数
    
    freq <- spec.pgram(data$均值, taper=0, log='no', plot=FALSE);
    
    start <- which(freq$spec==max(freq$spec))
    frequency <- 1/freq$freq[which(freq$spec==max(freq$spec))]
    
    plot(data$均值, type='l')
    
    meanTS <- ts(
      data$均值[start:length(data$均值)], 
      frequency=frequency
    ) 
    ts.plot(meanTS)
    
    meanTSdecompose <- decompose(meanTS)
    plot(meanTSdecompose)
    
    #趋势分解
    meanTSdecompose$trend
    #季节性分解数据
    meanTSdecompose$seasonal
    #随机部分
    meanTSdecompose$random
    

    这里写图片描述

    展开全文
  • R-时间序列-分解季节时间序列

    千次阅读 2018-10-16 17:06:08
    1.季节时间序列 包含:长期趋势Trend,季节趋势Seasonal,周期循环Circle,随机项Random 这里分解为相加模型X=T+S+C+R   在对时间序列进行分解之前,应该对序列进行检验:(下次写) 2.decompose()函数 将...
  • 季节时间序列建模与预测 ,孟玲清,王晓雨,所谓所谓时间序列,就是各种社会、经济、自然现象的数量指标按照时间次序排列起来的统计数据,其有多种构成因素,每种因素对系统
  • 时间序列预测,非季节性ARIMA及季节性SARIMA

    万次阅读 多人点赞 2019-03-24 21:55:00
    我们将首先介绍和讨论自相关,平稳性和季节性的概念,并继续应用最常用的时间序列预测方法之一,称为ARIMA。 介绍 时间序列提供了预测未来价值的机会。基于以前的价值观,可以使用时间序列来预测经济,天气和...
  • 时间序列含有季节性周期变动的特征,计算描述该变动的季节变动指数的方法。统计中的季节指数预测法就是根据时间序列中的数据资料所呈现的季节变动规律性,对预测目标未来状况作出预测的方法。
  • 时间序列分析之季节分解
  • 对于季节时间序列的预测,可以采用“季节系数法”来预测时间序列的变化趋势。在时间序列问题中,季节并不单纯代表一年四季,一些既有季度性、周期性的时间序列也可以用季节系数法来进行预测,例如月份。其步骤如下...
  • 季节时间序列数据分析 为什么要进行探索性数据分析? (Why Exploratory Data Analysis?) You might have heard that before proceeding with a machine learning problem it is good to do en end-to-end analysis...
  • 概念 时间序列(Time Series)  时间序列是均匀时间间隔上的观测值序列 ... 时间写按照季节性来分类,分为季节时间序列和非季节时间序列季节时间序列:趋势部分、不规则部分; 季节性时间...
  • 目录1 概述2 时间序列中的季节成分3 机器学习的好处4 季节性的类型4 消除季节性5 每日最低温度数据6 差分6.1 每日数据的差分6.2 月平均数据的差分7 通过建模来进行修正 1 概述 时间序列数据可能包含一些季节性的...
  • 对于一个基于季节波动的时间序列模型来说,每一个时间点由两个要素确定 1>周期 :由不同季节组成的一个单位 2>季节:最细的时间单位。 一般在季节要素上有相对固定规律的波定性,在周期要素上有线性或其他的 发展...
  • python进行时间序列分析的x13季节调整时,必定要用到的exe文件x13as.exe
  • ARIMA模型可以对具有季节效应的序列建模,根据季节效应提取的难易程度可以分为简单季节模型与乘积季节模型。简单季节模型简单季节模型是指序列中的季节效应和其他效应之间是加法关系,即简单季节模型实际上就是通过...
  • 分解时间序列季节性数据)

    万次阅读 2017-11-20 20:02:22
    一个季节时间序列中会包含三部分,趋势部分、季节性部分和无规则部分。分解时间序列就是要把时间序列分解成这三部分,然后进行估计。 对于可以使用相加模型进行描述的时间序列中的趋势部分和季节性部分,...
  • R时间序列分析

    2018-07-22 21:43:56
    以全国卷烟销量数据为例,用R语言进行时间序列分析,分别建立了ARIMA季节时间序列模型、Holtwinters指数平滑模型,对模型进行了准确性评估,附有完整R代码、相关数据集。
  • 时间序列分析-------乘法季节模型 实验 名称 乘法季节模型 实验 内容 乘法季节模型 实验 目的 2、熟练建立乘法季节模型 乘法季节...
  • 实验 名称 疏系数模型 和季节模型 实验 ... 1、简单季节模型 ... 2、熟练建立季节模型 ...简单季节模型结构 ...使用Python完成时间序列分析基础 SPSS建立时间序列乘法季节模型实战案例 Pyth...
  • 时间序列 平稳时间序列 1)平稳性检验及自协方差函数、自相关函数的估计    1.平稳性 Daniel 检验 x0=[1.37 2.96 1.91 3.10 2.08 2.54 4.07 3.62 2.91 1.94 3.96 4.19 2.71 3.42 3.02 3.54 2.66 4.11 ...
  • 前言:前一篇介绍了对平稳时间序列的分析方法和流程,在没有考虑季节效应的情况下,模型建立的并不成功。本篇以美国1980年-2015年月度失业率为对象,进行一个更为完善的、有季节效应的非平稳时间序列分析流程。 理论...
  • 测试序列稳定性:看以看到整体的序列并没有到达稳定性要求,要将时间序列转为平稳序列,有如下几种方法:DeflationbyCPILogarithmic(取对数)FirstDifference(一阶差分)SeasonalDifference(季节差分)...
  • 时间序列季节性和非季节The Harvest Moon game series, also known as Bokujō Monogatari in Japan, has been around for 24 years and has undergone some interesting changes. Natsume owned the title of ...
  • 季节性ARIMA:时间序列预测

    千次阅读 2019-02-17 15:22:36
    SARIMAX (seasonal autoregressive integrated moving average with exogenous regressor)是一种常见的时间序列预测方法,可以分为趋势部分和周期性部分;每个部分又可以分为自回归、差分和平滑部分。 趋势稳定性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 675
精华内容 270
关键字:

季节时间序列