时间序列

Posted yuanzhoulvpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列相关的知识,希望对你有一定的参考价值。

这一次的内容主要是描述、建模和估计时间序列的确定性趋势,最简单方法是通过常数均值函数,估计常数均值的方法待会给出,我们重要的还是研究在不同的条件下对估计量准确度的评估,然后,使用回归的方法来估计时间上的线性或二次的趋势。然后,我们探讨的是关于周期性或季节性趋势建模的方法,然后讨论这些回归方法的可靠性和有效性。在最后,我们展开了研究拟合模型的优良的残差分析工作,并且引入了非常重要的、贯穿接下来学习过程中反复涉及的函数,这个函数叫样本自相关函数。


趋势分为两种,一个是确定性的一个是随机性的。“趋势”是难以捉摸的,同一时间序列在不同的数据分析者看来可能都是不一样的。至于什么是确定性与随机性的区分,以及什么是确定性和什么是随机性的,现在先不讨论,具体的可以看这本书的第三章开头的介绍。


另外,我们也不介绍常数均值的估计,因为介绍起来太麻烦了,还有一些公式要打出来,特别麻烦,如果想学的可以看书第三章的3.2。


对于回归方法的介绍,我们也不介绍了,毕竟这是我的学习笔记,打出来太太太麻烦了,但是一定要看书上的公式。要不然你会看不懂的。具体的在第三章3.3。


我主要是结合示例让各位对一些变量理解的更加清楚一点。

 

程序1:

data(rwalk)

model1 <- lm(rwalk ~ time(rwalk))

summary(model1)

 

运行结果:

 

Call:

lm(formula = rwalk ~ time(rwalk))

 

Residuals:

    Min       1Q   Median      3Q      Max

-2.70045 -0.79782  0.06391 0.63064  2.22128

 

Coefficients:

            Estimate Std. Error t value Pr(>|t|)   

(Intercept) -1.007888   0.297245 -3.391  0.00126 **

time(rwalk) 0.134087   0.008475  15.822 < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

 

Residual standard error: 1.137 on 58degrees of freedom

Multiple R-squared:  0.8119,   Adjusted R-squared:  0.8086

F-statistic: 250.3 on 1 and 58 DF,  p-value: < 2.2e-16

 

表格程序3-2:

> win.graph(width = 4.875,height =2.5,pointsize = 8)

> plot(rwalk,type = "o",ylab ="y",main = "graph3-2")

> abline(model1)

 

周期性或季节性趋势

(他们是什么?我就不解释了,我就直接放上图片吧,这样或许更加直接一点,你可以看书本23面,有个具体的介绍)

我们来建立一个模型来看看我们对季节均值模型的回归的结果:

 

Call:

lm(formula = tempdub ~ month - 1)

 

Residuals:

   Min      1Q  Median     3Q     Max

-8.2750 -2.2479  0.1125 1.8896  9.8250

 

Coefficients:

               Estimate Std. Error t valuePr(>|t|)   

monthJanuary     16.608     0.987   16.83   <2e-16 ***

monthFebruary    20.650     0.987   20.92   <2e-16 ***

monthMarch       32.475      0.987  32.90   <2e-16 ***

monthApril      46.525      0.987  47.14   <2e-16 ***

monthMay         58.092      0.987  58.86   <2e-16 ***

monthJune        67.500      0.987  68.39   <2e-16 ***

monthJuly        71.717      0.987  72.66   <2e-16 ***

monthAugust      69.333      0.987  70.25   <2e-16 ***

monthSeptember   61.025     0.987   61.83   <2e-16 ***

monthOctober     50.975     0.987   51.65   <2e-16 ***

monthNovember    36.650     0.987   37.13   <2e-16 ***

monthDecember    23.642     0.987   23.95   <2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

 

Residual standard error: 3.419 on 132degrees of freedom

Multiple R-squared:  0.9957,   Adjusted R-squared:  0.9953

F-statistic:  2569 on 12 and 132 DF,  p-value: < 2.2e-16

 

这些数据展示了对气温数据拟合的季节均值模型的结果,此时,报告中的t值和Pr(>|t|)值都没有多大的意义,因为他们都与检验零假设贝塔(这个符号难打,我就不打了)有关。忘记说了,这个模型不包含截距项。你需要让r软件也了解这一点。另外,我们可以使用截距项,但是要删去方程(3.3.3)中的任何一个贝塔。


为了对比,我们来比较一下如果包含截距项,这个结果会是什么样的。

代码如下:

model3 <- lm(tempdub ~ month) # Januaryis dropped automatically

summary(model3)

 

结果如下:

 

Call:

lm(formula = tempdub ~ month)

 

Residuals:

   Min      1Q  Median     3Q     Max

-8.2750 -2.2479  0.1125 1.8896  9.8250

 

Coefficients:

               Estimate Std. Error t valuePr(>|t|)   

(Intercept)      16.608      0.987 16.828  < 2e-16 ***

monthFebruary     4.042     1.396   2.896  0.00443 **

monthMarch       15.867      1.396 11.368  < 2e-16 ***

monthApril       29.917      1.396 21.434  < 2e-16 ***

monthMay         41.483      1.396 29.721  < 2e-16 ***

monthJune        50.892      1.396 36.461  < 2e-16 ***

monthJuly        55.108      1.396 39.482  < 2e-16 ***

monthAugust      52.725      1.396 37.775  < 2e-16 ***

monthSeptember   44.417     1.396  31.822  < 2e-16 ***

monthOctober     34.367     1.396  24.622  < 2e-16 ***

monthNovember    20.042     1.396  14.359  < 2e-16 ***

monthDecember     7.033     1.396   5.039 1.51e-06 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

 

Residual standard error: 3.419 on 132degrees of freedom

Multiple R-squared:  0.9712,   Adjusted R-squared:  0.9688

F-statistic: 405.1 on 11 and 132 DF,  p-value: < 2.2e-16

 

这时候我们可以看出这个二月份系数表示的是与一月份的系数的差异,也就是说现在这个二月份实际的系数=16.608+4.042=20.650.。同样的来说,三月的实际系数就是=16.608+15.867=32.475.以此类推,想必大家应该懂了吧。

 

接下来我们来讨论余弦趋势:在某些情况下,季节趋势可以简地用余弦曲线来模型化,余弦曲线能在反映从一个时期到另一个时期的平滑变化的同时仍然保留季节性。(具体的希望大家可以看书,尽量看看真实的书,不要看电子书,这个余弦趋势在书本的25面)


我们用一个例子来解释一下。


代码如下:

har <- harmonic(tempdub,1)

model4 <- lm(tempdub ~ har)

summary(model4)

 

结果如下:

Call:

lm(formula = tempdub ~ har)

 

Residuals:

    Min       1Q   Median      3Q      Max

-11.1580 -2.2756  -0.1457   2.3754 11.2671

 

Coefficients:

               Estimate Std. Error t valuePr(>|t|)   

(Intercept)     46.2660    0.3088 149.816  < 2e-16 ***

harcos(2*pi*t) -26.7079     0.4367 -61.154  < 2e-16 ***

harsin(2*pi*t)  -2.1697    0.4367  -4.968 1.93e-06 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

 

Residual standard error: 3.706 on 141degrees of freedom

Multiple R-squared:  0.9639,   Adjusted R-squared:  0.9634

F-statistic:  1882 on 2 and 141 DF,  p-value: < 2.2e-16

在这个输出结果中,时间是以年度量的,以1964年,一年为频率,时间序列值与这里的拟合的余弦曲线一起展示在图3-6中,趋势对数据拟合相当好,除了多数1月份的值,这里的一月份观测值低于模型的预测值。

代码如下:

win.graph(width = 4.875,height =2.5,pointsize = 8)

plot(ts(fitted(model4),freq = 12,start =c(1964,1)),

ylab = "Temperature",type ="l",);points(tempdub)

 


算了,今天就写到这里,因为网络问题,emmmmmm,在最后,想要说一下,就是今天太匆忙了,然后写的不好,希望大家见谅。不过,细想,这东西谁看呀,哈哈哈。

 


以上是关于时间序列的主要内容,如果未能解决你的问题,请参考以下文章

时间序列分析:平稳时间序列分析之数据准备

(19)时间序列分析

时间序列分析概述

时间序列

90-预测分析-R语言实现-时间序列1

时间序列模型讲座回顾