这似乎是一个不寻常的问题,但我确实需要您的帮助。 我是时间序列分析的新手,但对OLS回归有足够的了解。 首先,我设法将一个对象转换为四分之一频率的动物园对象。
na.approx(as.ts(z))
我不了解的是如何使用标准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"))
答案 0 :(得分:3)
不能使用$
的原因是问题中显示的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
时出错。
您有一个季度数据,而ts
对象如何内部表示四个季度,则使用0、0.25、0.5和0.75。如果这是指不想将na.approx
应用于某些列,则如果ix
是要转换的列名或数字的向量,则zz[, ix] <- na.approx(zz[, ix])
仅将na.approx
应用于那些列
ts
和zoo
分别通过tsp
和index
属性表示索引,因此它们仍然存在。 time(z)
和time(zz)
将检索索引。
如果要进行统计检验,计算置信区间等,则需要考虑相关性。但是,如果您只想获取点数估算值,则无需担心。 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.zoo
和fortify.zoo
。
with(zz, lm(GDPGrowth ~ ApprovalGOV))
lm(GDPGrowth ~ ApprovalGOV, fortify.zoo(zz))
要绘制点并绘制回归线:
plot(formula(fm), zz)
abline(fm)
其他要点是:
R区分大小写,因此GDPGrowth
与GDPGROWTH
不相同。
请不要使用您在网上找到的随机代码段,而无需先阅读所使用的每个功能的帮助文件,这样您才能知道对于您的问题是否有意义。还要阅读您使用的每个程序包的所有小插图(pdf或html文档)。尤其是,zoo软件包中有5个小插图和参考手册。