#r #database #regression #aggregate
#r #База данных #регрессия #агрегировать
Вопрос:
У меня есть набор данных, который включает в себя продажи для компании за данный год (код компании = gvkey, год = fyearq, продажи = реальные продажи), а также темпы ее роста и волатильность этих темпов роста за каждый год. Затем я запускаю объединенную регрессию волатильности для журнала возраста компаний и журнала их продаж по ВВП следующим образом:
pooled_reg1 <- lm(volatility ~ log_realsales_gdp log_age, data = rs)
Что я хочу сделать, так это объединить термин ошибки, чтобы получить временной ряд, соответствующий соответствующим годам (за год). Но я точно не знаю, как поступить. Я знаю, как извлечь все термины ошибки (см. Ниже), но не знаю, как их объединить и сопоставить с годами. Возможно, кто-нибудь может дать мне некоторые рекомендации?
Вот что я сделал, чтобы извлечь остатки:
df_resid <- data.frame(pooled_reg1["residuals"])
пример кода для воспроизведения:
structure(list(gvkey = c(1004L, 1004L, 1004L, 1004L, 1004L, 1004L,
1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L,
1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L,
1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L,
1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1004L, 1009L, 1009L,
1009L, 1009L, 1009L, 1009L, 1009L, 1009L, 1009L, 1009L, 1009L,
1009L, 1009L, 1009L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L,
1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L,
1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L, 1010L,
1010L, 1010L, 1011L, 1011L, 1011L, 1011L, 1011L, 1011L, 1011L,
1011L, 1011L, 1011L, 1011L, 1011L, 1011L, 1012L, 1012L, 1012L,
1012L, 1012L, 1012L, 1012L), fyearq = c(1978L, 1979L, 1980L,
1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1987L, 1988L, 1989L,
1990L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L,
1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L,
2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L,
2017L, 1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1987L, 1988L,
1989L, 1990L, 1991L, 1992L, 1993L, 1994L, 1978L, 1979L, 1980L,
1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1987L, 1988L, 1989L,
1990L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L,
1999L, 2000L, 2001L, 2002L, 2003L, 1982L, 1983L, 1984L, 1985L,
1986L, 1987L, 1988L, 1989L, 1990L, 1991L, 1992L, 1993L, 1994L,
1978L, 1979L, 1980L, 1981L, 1982L, 1983L, 1984L), realsales = c(331.462808301444,
336.893554460808, 313.396257658553, 380.187150173968, 315.488887079704,
348.170636164212, 413.902226927294, 454.475820490737, 535.642177115143,
609.402937979876, 688.057705006858, 724.859060840095, 732.738609414019,
642.091910368401, 568.555514296324, 591.633778293674, 641.258949880668,
702.663215895809, 805.279914734296, 1050.60514473773, 1219.44662141519,
1341.27667932434, 1119.72002356618, 800.502569244266, 748.083946108671,
789.706505808108, 882.10426987497, 1026.39411583029, 1178.21264406102,
1497.4363687477, 1510.28901734104, 1423.25691549829, 1847.63658686311,
2114.28891742596, 2167.1, 1999.90172473097, 1537.71219135802,
1586.61691589766, 1668.57034974277, 1619.57609219254, 95.3190845633523,
73.2923552877961, 36.7302569727358, 39.734961624258, 37.5785673709479,
34.6075085324232, 34.270588647758, 48.1196769332363, 59.2856910092221,
63.642788710716, 55.0277250284846, 76.3564797623468, 104.991294254208,
130.869985225594, 2304.25127789727, 2557.85251863506, 2471.17782035815,
2029.46642750632, 1598.19058861842, 1129.41280162958, 393.050776966993,
390.214582837038, 362.651338243219, 409.53966974021, 487.178922772143,
531.902760126438, 490.504311224891, 461.968856817319, 475.526178982547,
505.55571677307, 540.544380043187, 566.594311793844, 665.181804517443,
674.188998589563, 712.64428888328, 618.567500327354, 568.405953021338,
459.330743200902, 386.541973054335, 2833.31516406846, 6.65961084425629,
7.50156690692573, 8.62414458013536, 10.7511315533892, 8.39051553799174,
4.76983487010483, 4.38375184137896, 5.35568807638414, 5.70903551067205,
6.78313710596278, 6.9275900482733, 9.41671503192107, 25.2003068530515,
29.9265383648501, 29.3079879291223, 25.2383317957088, 34.024160957794,
31.3705935032158, 37.34135067377, 41.6783243222806), volatility = c(NA,
NA, NA, NA, NA, 0.00665816567008701, 0.0324276719081096, 0.0011761305418464,
0.0373049165276953, 0.0226152181777751, 0.0218762758245523, 0.0012925667201047,
0.012111784694849, 0.053640253681283, 0.0560154015587973, 0.00796354785350488,
0.00425711461807538, 0.0135804572895571, 0.0345848107430184,
0.0831895974216554, 0.0371968284679624, 0.0169218179069936, 0.0690514385917552,
0.107027521719637, 0.0365165087945687, 0.00659596088012272, 0.0309824937544606,
0.0310571504387218, 0.0125259197780714, 0.0485690814477484, 0.0301958815208215,
0.0401249106117258, 0.0765562587730122, 0.0309473259041627, 0.00270426776564803,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.0181423079224915, 0.0157836589437877,
0.0874516492044545, 0.0278328374322155, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 0.0605200436913354, 0.173363757329929, 0.0319203280203071,
0.00805233255502984, 0.0636274273545883, 0.0714183125006309,
0.0176928889665883, 0.0377017769049437, 0.0392223624595263, 0.00788488747413858,
0.00699585791401976, 0.0159892018789829, 0.00944642764433993,
0.0534590734296324, 0.00865661592365628, 0.175760113935155, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.145559788349328, 0.0420615646568418,
0.00537514475672203, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
0.0348308867716433, 0.00318295127858273), log_age = c(1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.69897000433602,
1.69897000433602, 1.69897000433602, 1.69897000433602, 1.07918124604762,
1.07918124604762, 1.07918124604762, 1.07918124604762, 1.07918124604762,
1.07918124604762, 1.07918124604762, 1.07918124604762, 1.07918124604762,
1.07918124604762, 1.07918124604762, 1.07918124604762, 1.07918124604762,
1.07918124604762, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.6232492903979,
1.6232492903979, 1.6232492903979, 1.6232492903979, 1.11394335230684,
1.11394335230684, 1.11394335230684, 1.11394335230684, 1.11394335230684,
1.11394335230684, 1.11394335230684, 1.11394335230684, 1.11394335230684,
1.11394335230684, 1.11394335230684, 1.11394335230684, 1.11394335230684,
0.903089986991944, 0.903089986991944, 0.903089986991944, 0.903089986991944,
0.903089986991944, 0.903089986991944, 0.903089986991944), log_realsales_gdp = c(-3.85092846126199,
-3.89202258398861, -3.95986309900425, -3.92610721336975, -4.02525479868339,
-4.01859732325605, -3.98922692698506, -3.97987676584237, -3.93195571993198,
-3.90130392256075, -3.88141110327525, -3.89114717898222, -3.91052622100324,
-3.98185158389712, -4.05949650050273, -4.0641799176444, -4.05552939505513,
-4.03633187127866, -4.00109464846784, -3.91192383639405, -3.87110041585158,
-3.85613781251219, -3.96171385223621, -4.12119772171715, -4.16492476613527,
-4.16165242613348, -4.14132839082574, -4.1038514193103, -4.06911491834599,
-3.98457536898222, -3.98863659543405, -4.00655244449318, -3.9092445263483,
-3.86635883397372, -3.87355581774889, -3.92390883541018, -4.05670234760785,
-4.06005953525173, -4.04966401200689, -4.08030783458173, -4.52692478479852,
-4.65918018655632, -4.99536549750444, -5.0069518921217, -5.06244732898982,
-5.12166015184978, -5.15128690208025, -5.03671326290263, -4.97845086481487,
-4.97172609557892, -5.04886722376997, -4.93142347847181, -4.81507958954762,
-4.74572278116639, -3.00883342982249, -3.0116397858153, -3.0630529077774,
-3.19872277617792, -3.32061029587535, -3.50753675822248, -4.01167603092783,
-4.04608405269173, -4.10134120207404, -4.07391249049084, -4.03134747501897,
-4.02556850705364, -4.08483246805255, -4.12483608322756, -4.13709494552001,
-4.1324638532487, -4.12973147813548, -4.12980688009274, -4.08410115458261,
-4.1045816981461, -4.10439040157307, -4.19226908778151, -4.25616467912613,
-4.36243493795575, -4.45167844188923, -3.60682325599905, -5.70079001292832,
-5.68523747715828, -5.67040866136935, -5.60593337219298, -5.73704184051214,
-6.00770512203238, -6.07719000449261, -6.0225854759125, -6.01891255259848,
-5.95801818678252, -5.973687196852, -5.86233345093503, -5.46115700552331,
-4.89530678240497, -4.95252928201182, -5.05389625964478, -4.97431722334064,
-5.02771612951806, -4.98819944151722, -4.98621444021067)), row.names = c(NA,
100L), class = "data.frame")
Ответ №1:
Вот решение, которое использует dplyr
‘s left_join
.
dplyr::left_join(rs, with(pooled_reg1, cbind(model, residuals)))
Это извлекает остатки и привязывает их к данным, используемым в модели с использованием cbind
. (Обратите внимание, что не все данные используются из-за NA
s в некоторых столбцах.) left_join
затем присоединяет этот фрейм данных к исходному фрейму данных. Это дает,
Joining, by = c("volatility", "log_age", "log_realsales_gdp")
# gvkey fyearq realsales volatility log_age log_realsales_gdp residuals
# 1 1004 1978 331.462808 NA 1.698970 -3.850928 NA
# 2 1004 1979 336.893554 NA 1.698970 -3.892023 NA
# 3 1004 1980 313.396258 NA 1.698970 -3.959863 NA
# 4 1004 1981 380.187150 NA 1.698970 -3.926107 NA
# 5 1004 1982 315.488887 NA 1.698970 -4.025255 NA
# 6 1004 1983 348.170636 0.006658166 1.698970 -4.018597 -3.171299e-02
# 7 1004 1984 413.902227 0.032427672 1.698970 -3.989227 -5.543927e-03
# 8 1004 1985 454.475820 0.001176131 1.698970 -3.979877 -3.666827e-02
# 9 1004 1986 535.642177 0.037304917 1.698970 -3.931956 1.124336e-04
# 10 1004 1987 609.402938 0.022615218 1.698970 -3.901304 -1.416028e-02
# 11 1004 1988 688.057705 0.021876276 1.698970 -3.881411 -1.462860e-02
# 12 1004 1989 724.859061 0.001292567 1.698970 -3.891147 -3.534476e-02
# 13 1004 1990 732.738609 0.012111785 1.698970 -3.910526 -2.478917e-02
# 14 1004 1991 642.091910 0.053640254 1.698970 -3.981852 1.576899e-02
# 15 1004 1992 568.555514 0.056015402 1.698970 -4.059497 1.708786e-02
# 16 1004 1993 591.633778 0.007963548 1.698970 -4.064180 -3.102771e-02
# 17 1004 1994 641.258950 0.004257115 1.698970 -4.055529 -3.461646e-02
# 18 1004 1995 702.663216 0.013580457 1.698970 -4.036332 -2.503196e-02
# 19 1004 1996 805.279915 0.034584811 1.698970 -4.001095 -3.548236e-03
# 20 1004 1997 1050.605145 0.083189597 1.698970 -3.911924 4.626963e-02
# 21 1004 1998 1219.446621 0.037196828 1.698970 -3.871100 8.322195e-04
# 22 1004 1999 1341.276679 0.016921818 1.698970 -3.856138 -1.923924e-02
# 23 1004 2000 1119.720024 0.069051439 1.698970 -3.961714 3.145413e-02
# 24 1004 2001 800.502569 0.107027522 1.698970 -4.121198 6.726060e-02
# 25 1004 2002 748.083946 0.036516509 1.698970 -4.164925 -3.845279e-03
# 26 1004 2003 789.706506 0.006595961 1.698970 -4.161652 -3.372131e-02
# 27 1004 2004 882.104270 0.030982494 1.698970 -4.141328 -9.058290e-03
# 28 1004 2005 1026.394116 0.031057150 1.698970 -4.103851 -8.473797e-03
# 29 1004 2006 1178.212644 0.012525920 1.698970 -4.069115 -2.653247e-02
# 30 1004 2007 1497.436369 0.048569081 1.698970 -3.984575 1.066076e-02
# 31 1004 2008 1510.289017 0.030195882 1.698970 -3.988637 -7.767687e-03
# 32 1004 2009 1423.256915 0.040124911 1.698970 -4.006552 1.917616e-03
# 33 1004 2010 1847.636587 0.076556259 1.698970 -3.909245 3.967274e-02
# 34 1004 2011 2114.288917 0.030947326 1.698970 -3.866359 -5.352779e-03
# 35 1004 2012 2167.100000 0.002704268 1.698970 -3.873556 -3.369374e-02
# 36 1004 2013 1999.901725 NA 1.698970 -3.923909 NA
# 37 1004 2014 1537.712191 NA 1.698970 -4.056702 NA
# 38 1004 2015 1586.616916 NA 1.698970 -4.060060 NA
# 39 1004 2016 1668.570350 NA 1.698970 -4.049664 NA
# 40 1004 2017 1619.576092 NA 1.698970 -4.080308 NA
# 41 1009 1981 95.319085 NA 1.079181 -4.526925 NA
# 42 1009 1982 73.292355 NA 1.079181 -4.659180 NA
# 43 1009 1983 36.730257 NA 1.079181 -4.995365 NA
# 44 1009 1984 39.734962 NA 1.079181 -5.006952 NA
# 45 1009 1985 37.578567 NA 1.079181 -5.062447 NA
# 46 1009 1986 34.607509 0.018142308 1.079181 -5.121660 -2.252609e-02
# 47 1009 1987 34.270589 0.015783659 1.079181 -5.151287 -2.528778e-02
# 48 1009 1988 48.119677 0.087451649 1.079181 -5.036713 4.793887e-02
# 49 1009 1989 59.285691 0.027832837 1.079181 -4.978451 -1.088734e-02
# 50 1009 1990 63.642789 NA 1.079181 -4.971726 NA
# 51 1009 1991 55.027725 NA 1.079181 -5.048867 NA
# 52 1009 1992 76.356480 NA 1.079181 -4.931423 NA
# 53 1009 1993 104.991294 NA 1.079181 -4.815080 NA
# 54 1009 1994 130.869985 NA 1.079181 -4.745723 NA
# 55 1010 1978 2304.251278 NA 1.623249 -3.008833 NA
# 56 1010 1979 2557.852519 NA 1.623249 -3.011640 NA
# 57 1010 1980 2471.177820 NA 1.623249 -3.063053 NA
# 58 1010 1981 2029.466428 NA 1.623249 -3.198723 NA
# 59 1010 1982 1598.190589 NA 1.623249 -3.320610 NA
# 60 1010 1983 1129.412802 0.060520044 1.623249 -3.507537 3.065400e-02
# 61 1010 1984 393.050777 0.173363757 1.623249 -4.011676 1.366394e-01
# 62 1010 1985 390.214583 0.031920328 1.623249 -4.046084 -5.272097e-03
# 63 1010 1986 362.651338 0.008052333 1.623249 -4.101341 -2.989181e-02
# 64 1010 1987 409.539670 0.063627427 1.623249 -4.073912 2.605642e-02
# 65 1010 1988 487.178923 0.071418313 1.623249 -4.031347 3.442636e-02
# 66 1010 1989 531.902760 0.017692889 1.623249 -4.025569 -1.922044e-02
# 67 1010 1990 490.504311 0.037701777 1.623249 -4.084832 -1.778101e-05
# 68 1010 1991 461.968857 0.039222362 1.623249 -4.124836 9.585964e-04
# 69 1010 1992 475.526179 0.007884887 1.623249 -4.137095 -3.054565e-02
# 70 1010 1993 505.555717 0.006995858 1.623249 -4.132464 -3.137168e-02
# 71 1010 1994 540.544380 0.015989202 1.623249 -4.129731 -2.234116e-02
# 72 1010 1995 566.594312 0.009446428 1.623249 -4.129807 -2.888496e-02
# 73 1010 1996 665.181805 0.053459073 1.623249 -4.084101 1.574946e-02
# 74 1010 1997 674.188999 0.008656616 1.623249 -4.104582 -2.933161e-02
# 75 1010 1998 712.644289 0.175760114 1.623249 -4.104390 1.377745e-01
# 76 1010 1999 618.567500 NA 1.623249 -4.192269 NA
# 77 1010 2000 568.405953 NA 1.623249 -4.256165 NA
# 78 1010 2001 459.330743 NA 1.623249 -4.362435 NA
# 79 1010 2002 386.541973 NA 1.623249 -4.451678 NA
# 80 1010 2003 2833.315164 NA 1.623249 -3.606823 NA
# 81 1011 1982 6.659611 NA 1.113943 -5.700790 NA
# 82 1011 1983 7.501567 NA 1.113943 -5.685237 NA
# 83 1011 1984 8.624145 NA 1.113943 -5.670409 NA
# 84 1011 1985 10.751132 NA 1.113943 -5.605933 NA
# 85 1011 1986 8.390516 NA 1.113943 -5.737042 NA
# 86 1011 1987 4.769835 0.145559788 1.113943 -6.007705 9.212486e-02
# 87 1011 1988 4.383752 0.042061565 1.113943 -6.077190 -1.231863e-02
# 88 1011 1989 5.355688 0.005375145 1.113943 -6.022585 -4.826222e-02
# 89 1011 1990 5.709036 NA 1.113943 -6.018913 NA
# 90 1011 1991 6.783137 NA 1.113943 -5.958018 NA
# 91 1011 1992 6.927590 NA 1.113943 -5.973687 NA
# 92 1011 1993 9.416715 NA 1.113943 -5.862333 NA
# 93 1011 1994 25.200307 NA 1.113943 -5.461157 NA
# 94 1012 1978 29.926538 NA 0.903090 -4.895307 NA
# 95 1012 1979 29.307988 NA 0.903090 -4.952529 NA
# 96 1012 1980 25.238332 NA 0.903090 -5.053896 NA
# 97 1012 1981 34.024161 NA 0.903090 -4.974317 NA
# 98 1012 1982 31.370594 NA 0.903090 -5.027716 NA
# 99 1012 1983 37.341351 0.034830887 0.903090 -4.988199 -4.111560e-04
# 100 1012 1984 41.678324 0.003182951 0.903090 -4.986214 -3.203209e-02
Одно предостережение заключается в том, что это зависит от уникальных комбинаций volatility
, log_age
, и log_realsales_gdp
. Если это не гарантия, то более сложным, но более надежным решением является,
library(dplyr)
rs %>%
select(fyearq, volatility, log_age,log_realsales_gdp) %>%
na.omit %>%
cbind(pooled_reg1$residuals) %>%
right_join(rs)