繁体   English   中英

时间序列和线性回归

[英]Time Series and Linear Regression

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

  1. 问题:我创建的 zoo 对象不是正确的数据集对象,由于某些原因,当我想使用 zoo 对象中的变量时,我不能使用任何 $-specification。 有什么方法可以将动物园对象转换回数据集对象还是没有意义?
  2. 问题:我曾经填充缺失的四分之一行。 但是,我得到的虚拟变量的值分别为 0.25 和 0.5,这显然没有任何意义。 有可能改变吗?
  3. 问题:动物园对象删除了四分之一变量,所以动物园对象中不再有任何时间维度。 有什么命令可以解决这个问题吗?
na.approx(as.ts(z)) 
  1. 问:这可能是最重要的问题。 我观看了一些关于如何在时间序列中使用回归的视频,但我真的不明白在具有高自相关(时间序列)的变量和不具有高自相关的对象上使用标准 lm 函数有什么区别( OLS)。 我知道对于 OLS 的假设是,输出变量是不相关的。 但是假设我想计算 GDPGROWTH 的回归系数和议会中的平均共识投票行为(“AverageCONS”)。 两个变量都具有很高的自相关性,我有一个数据框,其中将日期分配给这些变量中的每一个。

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

lm(z$GDPGROWTH~z$APPROVALGOV)

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

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. 不能使用$的原因是问题中显示的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. 您有季度数据,0、0.25、0.5 和 0.75 是ts对象在内部表示 4 个季度的方式。 如果这是指不想将na.approx应用于某些列,那么如果ix是要转换的列名或数字的向量,则zz[, ix] <- na.approx(zz[, ix])应用na.approx只到那些列。

  3. tszoo经由代表索引tspindex所以它们仍然存在分别属性。 time(z)time(zz)将检索索引。

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

     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是大小写敏感所以GDPGrowth一样的GDPGROWTH

  • 不要在没有首先阅读所使用的每个函数的帮助文件的情况下使用您在网上找到的随机代码片段,以便您知道它是否对您的问题有意义。 还要阅读您正在使用的每个包的所有小插图(pdf 或 html 文档)。 特别是,动物园包有 5 个小插曲和一个参考手册。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM