时间序列和线性回归

时间:2019-12-25 11:05:21

标签: r time-series regression

这似乎是一个不寻常的问题,但我确实需要您的帮助。 我是时间序列分析的新手,但对OLS回归有足够的了解。 首先,我设法将一个对象转换为四分之一频率的动物园对象。

  1. 问题:我创建的Zoo对象不是适当的数据集对象,由于某些原因,当我想从Zoo对象中使用Variables时,我不能使用任何$规范。有什么方法可以将Zoo对象转换回数据集对象,还是没有意义?
  2. 问题:我过去常常填写缺少的四分之一行。但是,对于虚拟变量,我得到的值分别为0.25和0.5,这显然没有任何意义。有可能改变它吗?
  3. 问题:Zoo对象删除了四分之一变量,所以我在Zoo对象中没有任何时间维度。是否有任何命令可以解决此问题?
na.approx(as.ts(z)) 
  1. 问题:这可能是最重要的问题。我观看了一些有关如何使用时间序列回归的视频,但我根本不了解在具有高自相关性(时间序列)的变量与不具有自相关性的对象上使用标准lm函数之间的区别( OLS)。我知道,对于OLS,假设是,变量不相关。 但是,假设我要计算GDPGROWTH的回归系数和议会的平均同意投票行为(“ AverageCONS”)。这两个变量的自相关性都很高,我有一个数据框,其中将日期分配给了每个变量。

我不了解的是如何使用标准lm命令获得“时间序列”回归。 特别是因为当我想使用以下命令时:

lm(z$GDPGROWTH~z$APPROVALGOV)

因为$参数不起作用,所以我无法访问Zoo对象(或时间序列对象)。

Fehler in z$GDPGrowth : $ operator is invalid for atomic vectors

所以我不得不求助于使用普通数据集对象中的变量。但是那不会在任何时间维度上都正确吗?

通常来说,我对时间序列以及回归分析如何使时间维复杂化感到困惑。作为分析结果,我想得到的是GDP增长与平均共识投票行为(“ GDPGrowth”和“ AverageCONS”)之间的回归。我知道这两个变量都是通过时间维度自相关的。但是,我不知道如何进行适当的时间序列回归。

我将发布一个dput和其他重现代码,以使您的工作更轻松。感谢您的帮助!

> dput(z)
structure(c(1.2, -0.2, -0.15, -0.1, 0.4, 0.333333333333333, 0.266666666666667, 
0.2, 0.5, 0.8, 1.1, 1.4, 1.3, 2, 2.7, 0.8, 0.9, 1, 0.8, 0.6, 
-0.6, -0.0666666666666667, 0.466666666666667, 1, 1.6, 2.2, 1.9, 
1.6, 1.7, 1.8, 1.5, 1.2, 0.8, 0.4, 0.8, 1.2, 2.1, 0.5, 1.15, 
1.8, 0.65, -0.5, 0.4, 1.3, 0.3, -0.7, -0.5, -0.3, -0.15, 0, 0.6, 
-0.1, 1.4, 0.3, 0.7, 0.2, -0.3, 0.8, 0.2, 0, -0.8, 1.4, 1.05, 
0.7, -0.5, 1.3, 1, 0.7, 0.15, -0.4, -0.4, -0.4, 1.2, 0, 0.4, 
0.8, 1.4, 0.8, 0, -0.3, 2, 0, -0.2, -0.2, -0.5, 0, 0.5, -0.2, 
-1.5, -0.35, 0.8, 0.3, -0.2, 0.5, 0.2, -0.1, 0, 0, 1.17870603993396, 
0.589353019966981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.61936244127144, 
2.01801455396906, 0.416666666666667, 0, 2.16353957620116, 4.32707915240231, 
5.98174400514746, 7.6364088578926, 0.257076257076257, 0.171384171384171, 
0.0856920856920857, 0, 11.2103879729705, 22.4207759459411, 15.2347455885415, 
8.04871523114194, 11.3521305960255, 14.6555459609091, 15.4403121270985, 
16.2250782932878, 8.6979606817534, 1.17084307021898, 3.97895588789713, 
6.78706870557528, 0, 0, 4.87695592673415, 9.7539118534683, 4.87695592673415, 
0, 0, 0, 0, 0, 0.0201047586252623, 0.0402095172505245, 0.0201047586252623, 
0, 0, 0.0636265006342972, 0, 0.171974252305606, 0, 5.57623701563216, 
11.1524740312643, 2.68040672020172, 6.2111801242236, 3.24760735460988, 
28.2976799963101, 0, 3.7866135488981, 7.5732270977962, 0, 0, 
0.747061391598759, 1.49412278319752, 35.8503062293569, 70.2064896755162, 
52.105350122636, 34.0042105697558, 18.5823772614653, 18.0896275972026, 
13.25206168539, 8.41449577357745, 10, 0, 0, 34.7491138493683, 
8.36236933797909, 39.6563615833003, 74.4262295081967, 22.3611248302746, 
10, 16.455880420063, 22.911760840126, 0, 0.0666722800439236, 
0.0333361400219618, 0, 50.3843726943174, 0, 0, 0.864549845643277, 
1.72909969128655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.5, 0.75, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 7.88127469343306, 7.67671239967451, 7.50492078119126, 
7.33312916270801, 7.26681550104175, 7.37045715962304, 7.47409881820433, 
7.57774047678561, 7.54440688341081, 7.511073290036, 7.47773969666119, 
7.44440610328638, 7.51950710910292, 7.47703037780537, 7.43455364650782, 
7.21735906430465, 7.07654252150171, 6.93572597869877, 7.13426907080346, 
7.33281216290814, 7.34110311728404, 7.50058012443653, 7.66005713158903, 
7.81953413874152, 7.80295976635758, 7.78638539397364, 7.67221491798127, 
7.5580444419889, 7.13119115282123, 6.70433786365357, 6.73565901224693, 
6.76698016084029, 6.8801068632748, 6.9932335657093, 7.44235686960608, 
7.89148017350285, 8.24705859843768, 8.20161269191644, 7.1659119101912, 
6.13021112846596, 6.7880423795211, 7.44587363057623, 7.46757903053749, 
7.48928443049876, 7.07702561011456, 6.66476678973035, 6.57551271762131, 
6.48625864551226, 6.31270117005075, 6.13914369458924, 6.05634679973895, 
5.9702909369734, 6.19216550005443, 6.87967122943963, 7.49940214266322, 
7.29465702788788, 7.08991191311255, 7.3351806925688, 7.46762039999888, 
7.22336518577119, 6.75192112299076, 6.61614229895973, 6.50505157543993, 
6.39396085192013, 6.09682321355397, 5.99711627005931, 5.97786567725074, 
5.95861508444216, 6.13656719089965, 6.31451929735713, 6.19389219496854, 
6.07326509257996, 7.58677238161551, 7.24041796080827, 6.96794618067372, 
6.69547440053917, 7.72437292977251, 7.61985191697131, 7.85861327446016, 
7.78974162557168, 8.00182694049075, 7.82019060836613, 7.58946475073855, 
7.89751118735182, 7.14978411180804, 7.30379876152907, 7.4578134112501, 
6.24455242517448, 5.8823776113788, 5.98170501192132, 6.08103241246385, 
5.73879250743035, 5.68128370028589, 5.83312282222293, 6.1665241256249, 
6.49992542902688, 6.45920800878159), .Dim = c(97L, 4L), .Dimnames = list(
    NULL, c("GDPGrowth", "AverageCONS", "BRGOVMEHR", "ApprovalGOV"
    )), .Tsp = c(2482, 2506, 4), class = c("mts", "ts", "matrix"
))

“最终”是我要从中进行时间序列分析的总体聚合数据帧。

> dput(FINAL)
structure(list(Quarter.y = c(1981.1, 1981.2, 1981.4, 1982.1, 
1982.4, 1983.4, 1984.1, 1984.3, 1984.4, 1985.2, 1985.4, 1986.1, 
1986.4, 1987.2, 1987.4, 1988.2, 1988.4, 1989.2, 1989.4, 1990.1, 
1990.2, 1990.4, 1991.2, 1991.4, 1992.2, 1992.4, 1993.2, 1993.3, 
1993.4, 1994.1, 1994.2, 1994.3, 1995.1, 1995.2, 1995.3, 1995.4, 
1996.1, 1996.2, 1996.4, 1997.1, 1997.2, 1997.4, 1998.2, 1998.4, 
1999.1, 1999.2, 1999.4, 2000.1, 2000.2, 2000.3, 2000.4, 2001.1, 
2001.2, 2001.3, 2001.4, 2002.1, 2002.3, 2002.4, 2003.1, 2003.3, 
2003.4, 2004.1, 2004.2, 2004.4, 2005.1), GDPGrowth = c(1.2, -0.2, 
-0.1, 0.4, 0.2, 1.4, 1.3, 2.7, 0.8, 1, 0.6, -0.6, 1, 2.2, 1.6, 
1.8, 1.2, 0.4, 1.2, 2.1, 0.5, 1.8, -0.5, 1.3, -0.7, -0.3, 0, 
0.6, -0.1, 1.4, 0.3, 0.7, -0.3, 0.8, 0.2, 0, -0.8, 1.4, 0.7, 
-0.5, 1.3, 0.7, -0.4, -0.4, 1.2, 0, 0.8, 1.4, 0.8, 0, -0.3, 2, 
0, -0.2, -0.2, -0.5, 0.5, -0.2, -1.5, 0.8, 0.3, -0.2, 0.5, -0.1, 
0), AverageCONS = c(0, 1.17870603993396, 0, 0, 0, 0, 3.61936244127144, 
0.416666666666667, 0, 4.32707915240231, 7.6364088578926, 0.257076257076257, 
0, 22.4207759459411, 8.04871523114194, 14.6555459609091, 16.2250782932878, 
1.17084307021898, 6.78706870557528, 0, 0, 9.7539118534683, 0, 
0, 0, 0.0402095172505245, 0, 0, 0.0636265006342972, 0, 0.171974252305606, 
0, 11.1524740312643, 2.68040672020172, 6.2111801242236, 3.24760735460988, 
28.2976799963101, 0, 7.5732270977962, 0, 0, 1.49412278319752, 
70.2064896755162, 34.0042105697558, 18.5823772614653, 18.0896275972026, 
8.41449577357745, 10, 0, 0, 34.7491138493683, 8.36236933797909, 
39.6563615833003, 74.4262295081967, 22.3611248302746, 10, 22.911760840126, 
0, 0.0666722800439236, 0, 50.3843726943174, 0, 0, 1.72909969128655, 
0), BRGOVMEHR = c(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0), ApprovalGOV = c(7.88127469343306, 7.67671239967451, 
7.33312916270801, 7.26681550104175, 7.57774047678561, 7.44440610328638, 
7.51950710910292, 7.43455364650782, 7.21735906430465, 6.93572597869877, 
7.33281216290814, 7.34110311728404, 7.81953413874152, 7.78638539397364, 
7.5580444419889, 6.70433786365357, 6.76698016084029, 6.9932335657093, 
7.89148017350285, 8.24705859843768, 8.20161269191644, 6.13021112846596, 
7.44587363057623, 7.48928443049876, 6.66476678973035, 6.48625864551226, 
6.13914369458924, 6.05634679973895, 5.9702909369734, 6.19216550005443, 
6.87967122943963, 7.49940214266322, 7.08991191311255, 7.3351806925688, 
7.46762039999888, 7.22336518577119, 6.75192112299076, 6.61614229895973, 
6.39396085192013, 6.09682321355397, 5.99711627005931, 5.95861508444216, 
6.31451929735713, 6.07326509257996, 7.58677238161551, 7.24041796080827, 
6.69547440053917, 7.72437292977251, 7.61985191697131, 7.85861327446016, 
7.78974162557168, 8.00182694049075, 7.82019060836613, 7.58946475073855, 
7.89751118735182, 7.14978411180804, 7.4578134112501, 6.24455242517448, 
5.8823776113788, 6.08103241246385, 5.73879250743035, 5.68128370028589, 
5.83312282222293, 6.49992542902688, 6.45920800878159)), row.names = c(NA, 
-65L), class = c("tbl_df", "tbl", "data.frame"))

1 个答案:

答案 0 :(得分:3)

  1. 不能使用$的原因是问题中显示的z对象不是动物园对象。它是ts对象。您可以使用class(z)str(z)dput(z)来确定您拥有什么。另外,$适用于zoo对象,但不适用于ts对象。将其转换为zoo,然后$将起作用。

    library(zoo)
    zz <- zoo(z, as.yearqtr(time(z)))
    zz$GDPGrowth
    ##     2482 Q1     2482 Q2     2482 Q3     2482 Q4     2483 Q1     2483 Q2 
    ##  1.20000000 -0.20000000 -0.15000000 -0.10000000  0.40000000  0.33333333 
    ##     2483 Q3     2483 Q4     2484 Q1     2484 Q2     2484 Q3     2484 Q4 
    ##  0.26666667  0.20000000  0.50000000  0.80000000  1.10000000  1.40000000 
    ## # ... snip ...
    

    对象中的时间是未来的方式,但是除非我们知道您如何创建它们,否则我们将不知道这种情况如何发生。您可能正在玩Date对象,并将它们转换为ts时出错。

  2. 您有一个季度数据,而ts对象如何内部表示四个季度,则使用0、0.25、0.5和0.75。如果这是指不想将na.approx应用于某些列,则如果ix是要转换的列名或数字的向量,则zz[, ix] <- na.approx(zz[, ix])仅将na.approx应用于那些列

  3. tszoo分别通过tspindex属性表示索引,因此它们仍然存在。 time(z)time(zz)将检索索引。

  4. 如果要进行统计检验,计算置信区间等,则需要考虑相关性。但是,如果您只想获取点数估算值,则无需担心。 dyn包(也是dynlm包)可用于促进对动物园对象运行lm

    library(dyn)
    fm <- dyn$lm(GDPGrowth ~ ApprovalGOV, zz)
    fm
    
    ## Call:
    ## lm(formula = dyn(GDPGrowth ~ ApprovalGOV), data = zz)
    ##
    ## Coefficients:
    ## (Intercept)  ApprovalGOV  
    ##     -1.9717       0.3575
    

    这些方法中的任何一种都可以使用with.zoofortify.zoo

    with(zz, lm(GDPGrowth ~ ApprovalGOV))
    
    lm(GDPGrowth ~ ApprovalGOV, fortify.zoo(zz))
    

    要绘制点并绘制回归线:

    plot(formula(fm), zz)
    abline(fm)
    

其他要点是:

  • R区分大小写,因此GDPGrowthGDPGROWTH 不相同。

  • 请不要使用您在网上找到的随机代码段,而无需先阅读所使用的每个功能的帮助文件,这样您才能知道对于您的问题是否有意义。还要阅读您使用的每个程序包的所有小插图(pdf或html文档)。尤其是,zoo软件包中有5个小插图和参考手册。