zoukankan      html  css  js  c++  java
  • 拓端数据tecdat|R语言arima,向量自回归(VAR),周期自回归(PAR)模型分析温度时间序列

    原文链接: http://tecdat.cn/?p=22071

    至少有两种非平稳时间序列:具有趋势的时间序列和具有单位根的时间序列(称为单整时间序列)。单位根检验不能用来评估时间序列是否平稳。它们只能检测单整时间序列。季节性单位根也是如此。

    这里考虑月平均温度数据。

    1.  
      > mon=read.table("temp.txt")
    2.  
       
    3.  
      > plot(mon)

    现在,我们可以计算所有年份的三个不同平稳性检验的p值

    1.  
      for(y in 1955:2013){
    2.  
      Temp[which(Year==y)]
    3.  
      as.numeric(pp.test(Zc)$p.value)
    4.  
      as.numeric(kpss.test(Zc)$p.value)
    5.  
      as.numeric(adf.test(Zc)$p.value)

    从图像上看,如果红色表示非平稳,蓝色表示平稳,我们得到

    polygon(y,col=CL[1+(D[y-1954,i]==1)*5],border=NA)}}

    可以看到大部分序列在5%显著性水平下无法拒绝原检验说明序列非平稳。

    冬天和夏天的温度是完全不同的。我们可以来可视化:

    1.  
       
    2.  
      > plot(month,(tsm))
    3.  
      > lines(1:12,apply(M,2,mean

    或者

       plot(tsm)

    > 3D(tsm)
    

    看起来我们的时间序列是周期性的,因为每年都是季节性的。自相关函数:

    现在的问题是有季节性单位根吗?这说明我们的模型应该是

    如果我们忘记了自回归和移动平均分量,我们可以估计

    如果有季节性单位根,那么应该接近1。

    1.  
       
    2.  
      arima(x = tsm, order = c(0, 0, 0), seasonal = list(order = c(1, 0, 0), period = 12))
    3.  
       
    4.  
      Coefficients:
    5.  
      sar1 intercept
    6.  
      0.9702 6.4566
    7.  
      s.e. 0.0071 2.1515

    和1差不多。实际上,它不能太接近1。如果是的话,我们会收到一条错误信息…
    为了说明模型,让我们考虑季度温度,

    sp(1:4,N,theta=-50,col="yellow",shade=TRUE,
    

    VAR季度温度模型

    VAR模型描述在同一样本期间内的n个变量(内生变量)可以作为它们过去值的线性函数。

    一个VAR(p)模型可以写成为:

    y_{t}=c + A_{1}y_{t-1} + A_{2}y_{t-2} + cdots + A_{p}y_{t-p} + e_{t},

    其中:cn × 1常数向量,Ain × n矩阵。etn × 1误差向量,满足:

    1. mathrm{E}(e_{t}) = 0\, —误差项的均值为0
    2. mathrm{E}(e_{t}e_{t}') = Omega\, —误差项的协方差矩阵为Ω(一个n × 'n正定矩阵)
    3. mathrm{E}(e_{t}e_{t-k}') = 0\, (对于所有不为0的k都满足)—误差项不存在自相关

    其中A是4X4矩阵。这个模型很容易估计

    model=VAR(df)
    

    矩阵A在这里

    1.  
      > A=rbind(
    2.  
      + coefficients(varresult$y1)[1:4],
    3.  
      + coefficients(varresult$y2)[1:4],
    4.  
      + coefficients(varresult$y3)[1:4],
    5.  
      + coefficients(varresult$y4)[1:4])
    6.  
       

    由于这个多时间序列的平稳性与这个矩阵的特征值密切相关,我们来看一下,

    1.  
      > eigen(A)
    2.  
      [1] 0.35834830 -0.32824657 -0.14042175 0.09105836
    3.  
      > Mod(eigen(A)
    4.  
      [1] 0.35834830 0.32824657 0.14042175 0.09105836

    周期自回归(PAR)模型

    看起来这里不存在平稳性问题。有限制的模型称为周期自回归模型,被称为  模型

    其中

    并且

    这是一个VAR(1) 模型,因此

    可以来估计这个模型

    1.  
      par(wts=tsq, type="PAR", p=1)
    2.  
      > PAR(model)

    特征方程为

    所以有一个(季节性的)单位根,如果

    但在这里显然不是这样。可以进行 Canova Hansen(CH)检验。Canova Hansen(CH)检验主要用于检验季节差异并验证零假设,即季节性模式在采样期内是稳定的或随时间而变化。 

    检验的输出在这里

    > CH.test(tsm)
    

    看起来我们拒绝了季节性单位根的假设。我提到以下检验程序

    1.  
      > nsdiffs(tsm, test="ch")
    2.  
      [1] 0

    其中输出:“1”表示有一个季节单位根,“0”表示没有季节单位根。读起来很简单,不是吗?如果我们考虑每月数据的周期自回归模型,输出是

    > model
    

    所以,不管是什么检验,我们总是拒绝有季节性单位根的假设。这并不意味着我们的序列不能是周期性的!实际上,这个序列几乎是周期性的。但是没有单位根!所以所有这些都是有意义的。

    为了确保我们得到的是正确的,考虑两个时间序列。第一个是周期序列(有非常小的噪声),第二个是单整序列。

    1.  
      > p1=Xp2=as.numeric(t(M))
    2.  
      > for(t in 13:length(M)){
    3.  
       
    4.  
      + p2[t]=Xp2[t-12]+rnorm(1,0,2)
    5.  
       

    查看

    1.  
      3D(tsp1)
    2.  
      3D(tsp2)

    如果我们快速地看一下这些序列,我会说第一个没有单位根-即使它不是平稳的,但这是因为这个序列是周期性的-而第二个有单位根。如果我们看一下 Canova Hansen(CH)检验,我们会得到

    > CH.test(tsp1)
    

    考虑一下

    1.  
      > nsdiffs(tsp1, 12,test="ch")
    2.  
      [1] 0
    3.  
      > nsdiffs(tsp2, 12,test="ch")
    4.  
      [1] 1

    这里我们有相同的结论。第一个没有单位根,但是第二个有单位根。用Osborn-Chui-Smith-Birchenhall检验

    1.  
      > nsdiffs(tsp1, 12,test="ocsb")
    2.  
      [1] 1
    3.  
      > nsdiffs(tsp2, 12,test="ocsb")
    4.  
      [1] 1

    在我们的周期序列中也有一个单位根。

    所以在这里,在低频上,我们拒绝在我们的温度序列中有单位根的假设,甚至是季节性的单位根。


    最受欢迎的见解

    1.在python中使用lstm和pytorch进行时间序列预测

    2.python中利用长短期记忆模型lstm进行时间序列预测分析

    3.使用r语言进行时间序列(arima,指数平滑)分析

    4.r语言多元copula-garch-模型时间序列预测

    5.r语言copulas和金融时间序列案例

    6.使用r语言随机波动模型sv处理时间序列中的随机波动

    7.r语言时间序列tar阈值自回归模型

    8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

    9.python3用arima模型进行时间序列预测

    ▍关注我们 【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。 ▍咨询链接:http://y0.cn/teradat ▍联系邮箱:3025393450@qq.com
  • 相关阅读:
    动态规划专题(二)——树形DP
    动态规划专题(一)——状压DP
    位运算相关(二)——位运算的简单变换操作
    位运算相关(一)——位运算学习笔记
    2018.10.05 TOPOI提高组模拟赛 解题报告
    【BZOJ1088】[SCOI2005] 扫雷Mine(分类讨论)
    【洛谷1273】有线电视网(树上背包)
    【洛谷2264】情书(字符串水题)
    【洛谷4287】[SHOI2011] 双倍回文(Manacher算法经典题)
    【洛谷2051】[AHOI2009] 中国象棋(烦人的动态规划)
  • 原文地址:https://www.cnblogs.com/tecdat/p/14819621.html
Copyright © 2011-2022 走看看