library(readxl)
datos <- read_excel("historical_state_population_by_year.xlsx")
#View(datos)
colnames(datos)<-c("Estado","Año","Poblacion")
datos$Poblacion <- as.numeric(datos$Poblacion)
str(datos$Poblacion)
## num [1:6020] 135000 158000 189000 205000 215000 222000 224000 231000 224000 224000 ...
df <- datos %>% filter(Estado == "MA")
df2 <- df %>% select(Poblacion)
ts1 <- ts(data=df2, start= 1900, frequency=1)
ts1
## Time Series:
## Start = 1900
## End = 2019
## Frequency = 1
## Poblacion
## [1,] 2788000
## [2,] 2794000
## [3,] 2856000
## [4,] 2924000
## [5,] 2969000
## [6,] 3018000
## [7,] 3107000
## [8,] 3183000
## [9,] 3251000
## [10,] 3316000
## [11,] 3365000
## [12,] 3383000
## [13,] 3440000
## [14,] 3534000
## [15,] 3636000
## [16,] 3705000
## [17,] 3726000
## [18,] 3738000
## [19,] 3695000
## [20,] 3785000
## [21,] 3882000
## [22,] 3951000
## [23,] 4010000
## [24,] 4057000
## [25,] 4102000
## [26,] 4154000
## [27,] 4194000
## [28,] 4223000
## [29,] 4217000
## [30,] 4229000
## [31,] 4250000
## [32,] 4248000
## [33,] 4259000
## [34,] 4282000
## [35,] 4305000
## [36,] 4343000
## [37,] 4355000
## [38,] 4358000
## [39,] 4365000
## [40,] 4347000
## [41,] 4318000
## [42,] 4389000
## [43,] 4370000
## [44,] 4257000
## [45,] 4192000
## [46,] 4201000
## [47,] 4494000
## [48,] 4580000
## [49,] 4674000
## [50,] 4741000
## [51,] 4686000
## [52,] 4654000
## [53,] 4650000
## [54,] 4806000
## [55,] 4910000
## [56,] 4882000
## [57,] 4891000
## [58,] 4929000
## [59,] 5010000
## [60,] 5117000
## [61,] 5160000
## [62,] 5219000
## [63,] 5263000
## [64,] 5344000
## [65,] 5448000
## [66,] 5502000
## [67,] 5535000
## [68,] 5594000
## [69,] 5618000
## [70,] 5650000
## [71,] 5689170
## [72,] 5737580
## [73,] 5760302
## [74,] 5781172
## [75,] 5773548
## [76,] 5757756
## [77,] 5743672
## [78,] 5738199
## [79,] 5736469
## [80,] 5738404
## [81,] 5746075
## [82,] 5768685
## [83,] 5771222
## [84,] 5799407
## [85,] 5840773
## [86,] 5880733
## [87,] 5902678
## [88,] 5935204
## [89,] 5979982
## [90,] 6015478
## [91,] 6018664
## [92,] 5998652
## [93,] 5993474
## [94,] 6010884
## [95,] 6031352
## [96,] 6062335
## [97,] 6085393
## [98,] 6115476
## [99,] 6144407
## [100,] 6175169
## [101,] 6361104
## [102,] 6397634
## [103,] 6417206
## [104,] 6422565
## [105,] 6412281
## [106,] 6403290
## [107,] 6410084
## [108,] 6431559
## [109,] 6468967
## [110,] 6517613
## [111,] 6566307
## [112,] 6613583
## [113,] 6663005
## [114,] 6713315
## [115,] 6762596
## [116,] 6794228
## [117,] 6823608
## [118,] 6859789
## [119,] 6882635
## [120,] 6892503
arimaMA <- auto.arima(ts1)
arimaMA
## Series: ts1
## ARIMA(0,1,1) with drift
##
## Coefficients:
## ma1 drift
## 0.4026 34308.594
## s.e. 0.0838 5577.936
##
## sigma^2 = 1.923e+09: log likelihood = -1439.88
## AIC=2885.77 AICc=2885.98 BIC=2894.1
summary(arimaMA)
## Series: ts1
## ARIMA(0,1,1) with drift
##
## Coefficients:
## ma1 drift
## 0.4026 34308.594
## s.e. 0.0838 5577.936
##
## sigma^2 = 1.923e+09: log likelihood = -1439.88
## AIC=2885.77 AICc=2885.98 BIC=2894.1
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 111.988 43304.41 26800.86 0.02741526 0.5808001 0.6240271
## ACF1
## Training set 0.01917487
pronosticoMA <- forecast(arimaMA, level = c(95),h=51)
pronosticoMA
## Point Forecast Lo 95 Hi 95
## 2020 6919008 6833052 7004965
## 2021 6953317 6805247 7101387
## 2022 6987625 6796678 7178573
## 2023 7021934 6796108 7247760
## 2024 7056243 6800248 7312238
## 2025 7090551 6807585 7373517
## 2026 7124860 6817279 7432440
## 2027 7159168 6828802 7489535
## 2028 7193477 6841798 7545156
## 2029 7227786 6856013 7599558
## 2030 7262094 6871261 7652928
## 2031 7296403 6887395 7705410
## 2032 7330711 6904304 7757119
## 2033 7365020 6921895 7808145
## 2034 7399329 6940095 7858562
## 2035 7433637 6958840 7908434
## 2036 7467946 6978080 7957811
## 2037 7502254 6997770 8006739
## 2038 7536563 7017872 8055254
## 2039 7570872 7038352 8103391
## 2040 7605180 7059183 8151177
## 2041 7639489 7080338 8198639
## 2042 7673797 7101796 8245799
## 2043 7708106 7123536 8292676
## 2044 7742414 7145541 8339288
## 2045 7776723 7167794 8385652
## 2046 7811032 7190282 8431782
## 2047 7845340 7212990 8477690
## 2048 7879649 7235908 8523390
## 2049 7913957 7259023 8568892
## 2050 7948266 7282327 8614205
## 2051 7982575 7305809 8659340
## 2052 8016883 7329462 8704304
## 2053 8051192 7353278 8749106
## 2054 8085500 7377249 8793752
## 2055 8119809 7401369 8838249
## 2056 8154118 7425631 8882604
## 2057 8188426 7450030 8926822
## 2058 8222735 7474560 8970909
## 2059 8257043 7499217 9014870
## 2060 8291352 7523994 9058710
## 2061 8325661 7548889 9102432
## 2062 8359969 7573897 9146042
## 2063 8394278 7599013 9189543
## 2064 8428586 7624234 9232939
## 2065 8462895 7649557 9276233
## 2066 8497204 7674978 9319429
## 2067 8531512 7700494 9362530
## 2068 8565821 7726102 9405539
## 2069 8600129 7751799 9448459
## 2070 8634438 7777583 9491293
plot(pronosticoMA,main="Poblacion MA")

datos$Poblacion <- as.numeric(datos$Poblacion)
str(datos$Poblacion)
## num [1:6020] 135000 158000 189000 205000 215000 222000 224000 231000 224000 224000 ...
df <- datos %>% filter(Estado == "NY")
df2 <- df %>% select(Poblacion)
ts1 <- ts(data=df2, start= 1900, frequency=1)
ts1
## Time Series:
## Start = 1900
## End = 2019
## Frequency = 1
## Poblacion
## [1,] 7283000
## [2,] 7449000
## [3,] 7612000
## [4,] 7771000
## [5,] 7927000
## [6,] 8084000
## [7,] 8289000
## [8,] 8499000
## [9,] 8714000
## [10,] 8935000
## [11,] 9137000
## [12,] 9249000
## [13,] 9361000
## [14,] 9473000
## [15,] 9585000
## [16,] 9700000
## [17,] 9848000
## [18,] 9993000
## [19,] 9936000
## [20,] 10252000
## [21,] 10282000
## [22,] 10416000
## [23,] 10589000
## [24,] 10752000
## [25,] 10953000
## [26,] 11186000
## [27,] 11257000
## [28,] 11174000
## [29,] 11599000
## [30,] 12171000
## [31,] 12647000
## [32,] 12848000
## [33,] 13001000
## [34,] 13126000
## [35,] 13253000
## [36,] 13375000
## [37,] 13481000
## [38,] 13511000
## [39,] 13512000
## [40,] 13523000
## [41,] 13456000
## [42,] 13267000
## [43,] 13002000
## [44,] 12807000
## [45,] 12628000
## [46,] 12495000
## [47,] 13398000
## [48,] 13982000
## [49,] 14497000
## [50,] 14892000
## [51,] 14865000
## [52,] 14890000
## [53,] 15192000
## [54,] 15527000
## [55,] 15814000
## [56,] 15966000
## [57,] 16112000
## [58,] 16374000
## [59,] 16601000
## [60,] 16685000
## [61,] 16838000
## [62,] 17061000
## [63,] 17301000
## [64,] 17461000
## [65,] 17589000
## [66,] 17734000
## [67,] 17843000
## [68,] 17935000
## [69,] 18051000
## [70,] 18105000
## [71,] 18241391
## [72,] 18357982
## [73,] 18339400
## [74,] 18177063
## [75,] 18049775
## [76,] 18003485
## [77,] 17940541
## [78,] 17812602
## [79,] 17680589
## [80,] 17583838
## [81,] 17566754
## [82,] 17567734
## [83,] 17589738
## [84,] 17686905
## [85,] 17745684
## [86,] 17791672
## [87,] 17833419
## [88,] 17868848
## [89,] 17941309
## [90,] 17983086
## [91,] 18002855
## [92,] 18029532
## [93,] 18082032
## [94,] 18140894
## [95,] 18156652
## [96,] 18150928
## [97,] 18143805
## [98,] 18143184
## [99,] 18159175
## [100,] 18196601
## [101,] 19001780
## [102,] 19082838
## [103,] 19137800
## [104,] 19175939
## [105,] 19171567
## [106,] 19132610
## [107,] 19104631
## [108,] 19132335
## [109,] 19212436
## [110,] 19307066
## [111,] 19399878
## [112,] 19499241
## [113,] 19572932
## [114,] 19624447
## [115,] 19651049
## [116,] 19654666
## [117,] 19633428
## [118,] 19589572
## [119,] 19530351
## [120,] 19453561
arimaMA <- auto.arima(ts1)
arimaMA
## Series: ts1
## ARIMA(1,2,1)
##
## Coefficients:
## ar1 ma1
## 0.5065 -0.9697
## s.e. 0.0855 0.0271
##
## sigma^2 = 2.326e+10: log likelihood = -1575.62
## AIC=3157.25 AICc=3157.46 BIC=3165.56
summary(arimaMA)
## Series: ts1
## ARIMA(1,2,1)
##
## Coefficients:
## ar1 ma1
## 0.5065 -0.9697
## s.e. 0.0855 0.0271
##
## sigma^2 = 2.326e+10: log likelihood = -1575.62
## AIC=3157.25 AICc=3157.46 BIC=3165.56
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -14563.74 149933.4 82036.53 -0.08319142 0.5752184 0.5840548
## ACF1
## Training set -0.009336835
pronosticoMA <- forecast(arimaMA, level = c(95),h=51)
pronosticoMA
## Point Forecast Lo 95 Hi 95
## 2020 19441372 19142479 19740265
## 2021 19461901 18913884 20009918
## 2022 19499001 18722834 20275168
## 2023 19544494 18560730 20528257
## 2024 19594237 18419928 20768546
## 2025 19646134 18294652 20997616
## 2026 19699121 18180758 21217483
## 2027 19752660 18075313 21430006
## 2028 19806478 17976225 21636732
## 2029 19860439 17881980 21838897
## 2030 19914471 17791466 22037476
## 2031 19968539 17703845 22233234
## 2032 20022626 17618478 22426774
## 2033 20076722 17534869 22618576
## 2034 20130823 17452622 22809025
## 2035 20184927 17371422 22998431
## 2036 20239031 17291010 23187052
## 2037 20293136 17211176 23375097
## 2038 20347242 17131741 23562742
## 2039 20401347 17052559 23750136
## 2040 20455453 16973503 23937403
## 2041 20509559 16894467 24124650
## 2042 20563664 16815359 24311970
## 2043 20617770 16736100 24499440
## 2044 20671876 16656621 24687131
## 2045 20725982 16576862 24875101
## 2046 20780087 16496771 25063404
## 2047 20834193 16416303 25252084
## 2048 20888299 16335416 25441182
## 2049 20942405 16254076 25630733
## 2050 20996510 16172251 25820770
## 2051 21050616 16089912 26011320
## 2052 21104722 16007036 26202407
## 2053 21158828 15923601 26394055
## 2054 21212933 15839586 26586281
## 2055 21267039 15754974 26779104
## 2056 21321145 15669750 26972540
## 2057 21375251 15583900 27166601
## 2058 21429356 15497412 27361301
## 2059 21483462 15410274 27556650
## 2060 21537568 15322477 27752659
## 2061 21591674 15234012 27949335
## 2062 21645780 15144871 28146688
## 2063 21699885 15055048 28344722
## 2064 21753991 14964536 28543446
## 2065 21808097 14873330 28742864
## 2066 21862203 14781425 28942980
## 2067 21916308 14688817 29143799
## 2068 21970414 14595503 29345325
## 2069 22024520 14501479 29547561
## 2070 22078626 14406742 29750509
plot(pronosticoMA,main="Poblacion NY")

datos$Poblacion <- as.numeric(datos$Poblacion)
str(datos$Poblacion)
## num [1:6020] 135000 158000 189000 205000 215000 222000 224000 231000 224000 224000 ...
df <- datos %>% filter(Estado == "CA")
df2 <- df %>% select(Poblacion)
ts1 <- ts(data=df2, start= 1900, frequency=1)
ts1
## Time Series:
## Start = 1900
## End = 2019
## Frequency = 1
## Poblacion
## [1,] 1490000
## [2,] 1550000
## [3,] 1623000
## [4,] 1702000
## [5,] 1792000
## [6,] 1893000
## [7,] 1976000
## [8,] 2054000
## [9,] 2161000
## [10,] 2282000
## [11,] 2406000
## [12,] 2534000
## [13,] 2668000
## [14,] 2811000
## [15,] 2934000
## [16,] 3008000
## [17,] 3071000
## [18,] 3171000
## [19,] 3262000
## [20,] 3339000
## [21,] 3554000
## [22,] 3795000
## [23,] 3991000
## [24,] 4270000
## [25,] 4541000
## [26,] 4730000
## [27,] 4929000
## [28,] 5147000
## [29,] 5344000
## [30,] 5531000
## [31,] 5711000
## [32,] 5824000
## [33,] 5894000
## [34,] 5963000
## [35,] 6060000
## [36,] 6175000
## [37,] 6341000
## [38,] 6528000
## [39,] 6656000
## [40,] 6785000
## [41,] 6950000
## [42,] 7237000
## [43,] 7735000
## [44,] 8506000
## [45,] 8945000
## [46,] 9344000
## [47,] 9559000
## [48,] 9832000
## [49,] 10064000
## [50,] 10337000
## [51,] 10677000
## [52,] 11134000
## [53,] 11635000
## [54,] 12251000
## [55,] 12746000
## [56,] 13133000
## [57,] 13713000
## [58,] 14264000
## [59,] 14880000
## [60,] 15467000
## [61,] 15870000
## [62,] 16497000
## [63,] 17072000
## [64,] 17668000
## [65,] 18151000
## [66,] 18585000
## [67,] 18858000
## [68,] 19176000
## [69,] 19394000
## [70,] 19711000
## [71,] 19971069
## [72,] 20345939
## [73,] 20585469
## [74,] 20868728
## [75,] 21173865
## [76,] 21537849
## [77,] 21935909
## [78,] 22352396
## [79,] 22835958
## [80,] 23256880
## [81,] 23800800
## [82,] 24285933
## [83,] 24820009
## [84,] 25360026
## [85,] 25844393
## [86,] 26441109
## [87,] 27102237
## [88,] 27777158
## [89,] 28464249
## [90,] 29218164
## [91,] 29950111
## [92,] 30414114
## [93,] 30875920
## [94,] 31147208
## [95,] 31317179
## [96,] 31493525
## [97,] 31780829
## [98,] 32217708
## [99,] 32682794
## [100,] 33145121
## [101,] 33987977
## [102,] 34479458
## [103,] 34871843
## [104,] 35253159
## [105,] 35574576
## [106,] 35827943
## [107,] 36021202
## [108,] 36250311
## [109,] 36604337
## [110,] 36961229
## [111,] 37319502
## [112,] 37638369
## [113,] 37948800
## [114,] 38260787
## [115,] 38596972
## [116,] 38918045
## [117,] 39167117
## [118,] 39358497
## [119,] 39461588
## [120,] 39512223
arimaMA <- auto.arima(ts1)
arimaMA
## Series: ts1
## ARIMA(0,2,0)
##
## sigma^2 = 9.971e+09: log likelihood = -1525.79
## AIC=3053.57 AICc=3053.61 BIC=3056.34
summary(arimaMA)
## Series: ts1
## ARIMA(0,2,0)
##
## sigma^2 = 9.971e+09: log likelihood = -1525.79
## AIC=3053.57 AICc=3053.61 BIC=3056.34
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -88.02939 99017.45 65793.72 0.06388803 0.560492 0.2059178
## ACF1
## Training set -0.1174913
pronosticoMA <- forecast(arimaMA, level = c(95),h=51)
pronosticoMA
## Point Forecast Lo 95 Hi 95
## 2020 39562858 39367149.6 39758566
## 2021 39613493 39175875.8 40051110
## 2022 39664128 38931854.3 40396402
## 2023 39714763 38642824.0 40786702
## 2024 39765398 38313985.8 41216810
## 2025 39816033 37949094.0 41682972
## 2026 39866668 37551015.2 42182321
## 2027 39917303 37122028.2 42712578
## 2028 39967938 36664000.2 43271876
## 2029 40018573 36178497.2 43858649
## 2030 40069208 35666856.8 44471559
## 2031 40119843 35130238.7 45109447
## 2032 40170478 34569661.1 45771295
## 2033 40221113 33986027.0 46456199
## 2034 40271748 33380144.7 47163351
## 2035 40322383 32752743.0 47892023
## 2036 40373018 32104483.6 48641552
## 2037 40423653 31435970.6 49411335
## 2038 40474288 30747758.6 50200817
## 2039 40524923 30040359.0 51009487
## 2040 40575558 29314245.3 51836871
## 2041 40626193 28569857.7 52682528
## 2042 40676828 27807606.7 53546049
## 2043 40727463 27027876.2 54427050
## 2044 40778098 26231026.6 55325169
## 2045 40828733 25417396.8 56240069
## 2046 40879368 24587306.3 57171430
## 2047 40930003 23741057.1 58118949
## 2048 40980638 22878935.0 59082341
## 2049 41031273 22001211.4 60061335
## 2050 41081908 21108144.0 61055672
## 2051 41132543 20199978.4 62065108
## 2052 41183178 19276948.5 63089407
## 2053 41233813 18339277.9 64128348
## 2054 41284448 17387180.2 65181716
## 2055 41335083 16420860.1 66249306
## 2056 41385718 15440513.7 67330922
## 2057 41436353 14446329.2 68426377
## 2058 41486988 13438487.6 69535488
## 2059 41537623 12417162.7 70658083
## 2060 41588258 11382522.0 71793994
## 2061 41638893 10334727.0 72943059
## 2062 41689528 9273933.2 74105123
## 2063 41740163 8200291.0 75280035
## 2064 41790798 7113945.5 76467651
## 2065 41841433 6015037.0 77667829
## 2066 41892068 4903701.4 78880435
## 2067 41942703 3780070.2 80105336
## 2068 41993338 2644270.7 81342405
## 2069 42043973 1496426.6 82591519
## 2070 42094608 336657.5 83852558
plot(pronosticoMA,main="Poblacion CA")

datos$Poblacion <- as.numeric(datos$Poblacion)
str(datos$Poblacion)
## num [1:6020] 135000 158000 189000 205000 215000 222000 224000 231000 224000 224000 ...
df <- datos %>% filter(Estado == "TX")
df2 <- df %>% select(Poblacion)
ts1 <- ts(data=df2, start= 1900, frequency=1)
ts1
## Time Series:
## Start = 1900
## End = 2019
## Frequency = 1
## Poblacion
## [1,] 3055000
## [2,] 3132000
## [3,] 3210000
## [4,] 3291000
## [5,] 3374000
## [6,] 3459000
## [7,] 3546000
## [8,] 3636000
## [9,] 3727000
## [10,] 3821000
## [11,] 3922000
## [12,] 4016000
## [13,] 4107000
## [14,] 4207000
## [15,] 4300000
## [16,] 4368000
## [17,] 4444000
## [18,] 4563000
## [19,] 4666000
## [20,] 4631000
## [21,] 4723000
## [22,] 4853000
## [23,] 4955000
## [24,] 5077000
## [25,] 5210000
## [26,] 5332000
## [27,] 5453000
## [28,] 5577000
## [29,] 5675000
## [30,] 5762000
## [31,] 5844000
## [32,] 5907000
## [33,] 5961000
## [34,] 6014000
## [35,] 6053000
## [36,] 6123000
## [37,] 6192000
## [38,] 6250000
## [39,] 6301000
## [40,] 6360000
## [41,] 6425000
## [42,] 6585000
## [43,] 6711000
## [44,] 7012000
## [45,] 6876000
## [46,] 6826000
## [47,] 7197000
## [48,] 7388000
## [49,] 7626000
## [50,] 7623000
## [51,] 7776000
## [52,] 8111000
## [53,] 8314000
## [54,] 8336000
## [55,] 8382000
## [56,] 8660000
## [57,] 8830000
## [58,] 9070000
## [59,] 9252000
## [60,] 9405000
## [61,] 9624000
## [62,] 9820000
## [63,] 10053000
## [64,] 10159000
## [65,] 10270000
## [66,] 10378000
## [67,] 10492000
## [68,] 10599000
## [69,] 10819000
## [70,] 11045000
## [71,] 11198655
## [72,] 11509848
## [73,] 11759148
## [74,] 12019543
## [75,] 12268629
## [76,] 12568843
## [77,] 12904089
## [78,] 13193050
## [79,] 13500429
## [80,] 13888371
## [81,] 14338208
## [82,] 14746318
## [83,] 15331415
## [84,] 15751676
## [85,] 16007086
## [86,] 16272734
## [87,] 16561113
## [88,] 16621791
## [89,] 16667022
## [90,] 16806735
## [91,] 17044714
## [92,] 17339904
## [93,] 17650479
## [94,] 17996764
## [95,] 18338319
## [96,] 18679706
## [97,] 19006240
## [98,] 19355427
## [99,] 19712389
## [100,] 20044141
## [101,] 20944499
## [102,] 21319622
## [103,] 21690325
## [104,] 22030931
## [105,] 22394023
## [106,] 22778123
## [107,] 23359580
## [108,] 23831983
## [109,] 24309039
## [110,] 24801761
## [111,] 25241971
## [112,] 25645629
## [113,] 26084481
## [114,] 26480266
## [115,] 26964333
## [116,] 27470056
## [117,] 27914410
## [118,] 28295273
## [119,] 28628666
## [120,] 28995881
arimaMA <- auto.arima(ts1)
arimaMA
## Series: ts1
## ARIMA(0,2,2)
##
## Coefficients:
## ma1 ma2
## -0.5950 -0.1798
## s.e. 0.0913 0.0951
##
## sigma^2 = 1.031e+10: log likelihood = -1527.14
## AIC=3060.28 AICc=3060.5 BIC=3068.6
summary(arimaMA)
## Series: ts1
## ARIMA(0,2,2)
##
## Coefficients:
## ma1 ma2
## -0.5950 -0.1798
## s.e. 0.0913 0.0951
##
## sigma^2 = 1.031e+10: log likelihood = -1527.14
## AIC=3060.28 AICc=3060.5 BIC=3068.6
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 12147.62 99818.31 59257.39 0.1046163 0.5686743 0.2672197
## ACF1
## Training set -0.02136734
pronosticoMA <- forecast(arimaMA, level = c(95),h=51)
pronosticoMA
## Point Forecast Lo 95 Hi 95
## 2020 29398472 29199487 29597457
## 2021 29806827 29463665 30149990
## 2022 30215183 29742956 30687410
## 2023 30623538 30024100 31222977
## 2024 31031894 30303359 31760429
## 2025 31440249 30579246 32301253
## 2026 31848605 30851090 32846119
## 2027 32256960 31118581 33395339
## 2028 32665316 31381587 33949044
## 2029 33073671 31640070 34507272
## 2030 33482027 31894047 35070007
## 2031 33890382 32143561 35637204
## 2032 34298738 32388674 36208801
## 2033 34707093 32629456 36784730
## 2034 35115449 32865983 37364914
## 2035 35523804 33098330 37949278
## 2036 35932160 33326573 38537746
## 2037 36340515 33550788 39130242
## 2038 36748871 33771046 39726695
## 2039 37157226 33987418 40327034
## 2040 37565581 34199972 40931191
## 2041 37973937 34408774 41539100
## 2042 38382292 34613887 42150698
## 2043 38790648 34815371 42765925
## 2044 39199003 35013284 43384723
## 2045 39607359 35207682 44007036
## 2046 40015714 35398618 44632810
## 2047 40424070 35586145 45261995
## 2048 40832425 35770311 45894540
## 2049 41240781 35951163 46530399
## 2050 41649136 36128748 47169524
## 2051 42057492 36303110 47811874
## 2052 42465847 36474290 48457405
## 2053 42874203 36642330 49106076
## 2054 43282558 36807269 49757848
## 2055 43690914 36969145 50412683
## 2056 44099269 37127994 51070544
## 2057 44507625 37283853 51731396
## 2058 44915980 37436755 52395205
## 2059 45324336 37586734 53061937
## 2060 45732691 37733822 53731560
## 2061 46141047 37878050 54404044
## 2062 46549402 38019447 55079357
## 2063 46957758 38158044 55757471
## 2064 47366113 38293868 56438358
## 2065 47774469 38426948 57121989
## 2066 48182824 38557310 57808338
## 2067 48591180 38684979 58497380
## 2068 48999535 38809982 59189088
## 2069 49407891 38932343 59883438
## 2070 49816246 39052086 60580406
plot(pronosticoMA,main="Poblacion TX")

datos$Poblacion <- as.numeric(datos$Poblacion)
str(datos$Poblacion)
## num [1:6020] 135000 158000 189000 205000 215000 222000 224000 231000 224000 224000 ...
df <- datos %>% filter(Estado == "NV")
df2 <- df %>% select(Poblacion)
ts1 <- ts(data=df2, start= 1900, frequency=1)
ts1
## Time Series:
## Start = 1900
## End = 2019
## Frequency = 1
## Poblacion
## [1,] 43000
## [2,] 45000
## [3,] 49000
## [4,] 52000
## [5,] 56000
## [6,] 59000
## [7,] 64000
## [8,] 68000
## [9,] 73000
## [10,] 78000
## [11,] 82000
## [12,] 81000
## [13,] 81000
## [14,] 82000
## [15,] 83000
## [16,] 82000
## [17,] 82000
## [18,] 81000
## [19,] 77000
## [20,] 77000
## [21,] 78000
## [22,] 80000
## [23,] 81000
## [24,] 82000
## [25,] 84000
## [26,] 85000
## [27,] 87000
## [28,] 88000
## [29,] 89000
## [30,] 90000
## [31,] 92000
## [32,] 94000
## [33,] 96000
## [34,] 96000
## [35,] 98000
## [36,] 100000
## [37,] 101000
## [38,] 103000
## [39,] 105000
## [40,] 107000
## [41,] 113000
## [42,] 120000
## [43,] 137000
## [44,] 151000
## [45,] 153000
## [46,] 149000
## [47,] 143000
## [48,] 149000
## [49,] 156000
## [50,] 157000
## [51,] 162000
## [52,] 168000
## [53,] 181000
## [54,] 195000
## [55,] 213000
## [56,] 237000
## [57,] 250000
## [58,] 260000
## [59,] 269000
## [60,] 279000
## [61,] 291000
## [62,] 315000
## [63,] 352000
## [64,] 397000
## [65,] 426000
## [66,] 444000
## [67,] 446000
## [68,] 449000
## [69,] 464000
## [70,] 480000
## [71,] 488738
## [72,] 520018
## [73,] 546789
## [74,] 568991
## [75,] 596822
## [76,] 619972
## [77,] 646975
## [78,] 678333
## [79,] 719436
## [80,] 765367
## [81,] 810215
## [82,] 847655
## [83,] 881537
## [84,] 901977
## [85,] 924922
## [86,] 951030
## [87,] 980613
## [88,] 1023376
## [89,] 1075022
## [90,] 1137382
## [91,] 1218629
## [92,] 1285046
## [93,] 1330694
## [94,] 1380197
## [95,] 1456388
## [96,] 1525777
## [97,] 1596476
## [98,] 1675581
## [99,] 1743772
## [100,] 1809253
## [101,] 2018741
## [102,] 2098399
## [103,] 2173791
## [104,] 2248850
## [105,] 2346222
## [106,] 2432143
## [107,] 2522658
## [108,] 2601072
## [109,] 2653630
## [110,] 2684665
## [111,] 2702405
## [112,] 2712730
## [113,] 2743996
## [114,] 2775970
## [115,] 2817628
## [116,] 2866939
## [117,] 2917563
## [118,] 2969905
## [119,] 3027341
## [120,] 3080156
arimaMA <- auto.arima(ts1)
arimaMA
## Series: ts1
## ARIMA(0,2,1)
##
## Coefficients:
## ma1
## -0.5476
## s.e. 0.0879
##
## sigma^2 = 312757986: log likelihood = -1321.21
## AIC=2646.41 AICc=2646.52 BIC=2651.95
summary(arimaMA)
## Series: ts1
## ARIMA(0,2,1)
##
## Coefficients:
## ma1
## -0.5476
## s.e. 0.0879
##
## sigma^2 = 312757986: log likelihood = -1321.21
## AIC=2646.41 AICc=2646.52 BIC=2651.95
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 927.0664 17462.5 8548.911 0.2684665 1.668587 0.33125 0.04030084
pronosticoMA <- forecast(arimaMA, level = c(95),h=51)
pronosticoMA
## Point Forecast Lo 95 Hi 95
## 2020 3132873 3098211 3167535
## 2021 3185590 3124468 3246713
## 2022 3238308 3148333 3328282
## 2023 3291025 3169486 3412564
## 2024 3343742 3187997 3499487
## 2025 3396459 3203996 3588922
## 2026 3449176 3217617 3680736
## 2027 3501894 3228980 3774807
## 2028 3554611 3238193 3871028
## 2029 3607328 3245352 3969304
## 2030 3660045 3250543 4069548
## 2031 3712762 3253840 4171685
## 2032 3765480 3255312 4275647
## 2033 3818197 3255020 4381373
## 2034 3870914 3253021 4488807
## 2035 3923631 3249365 4597897
## 2036 3976348 3244099 4708597
## 2037 4029066 3237267 4820865
## 2038 4081783 3228907 4934659
## 2039 4134500 3219057 5049943
## 2040 4187217 3207752 5166682
## 2041 4239934 3195024 5284845
## 2042 4292652 3180902 5404401
## 2043 4345369 3165415 5525323
## 2044 4398086 3148590 5647582
## 2045 4450803 3130452 5771154
## 2046 4503520 3111025 5896016
## 2047 4556238 3090332 6022144
## 2048 4608955 3068393 6149517
## 2049 4661672 3045229 6278115
## 2050 4714389 3020860 6407918
## 2051 4767106 2995304 6538909
## 2052 4819824 2968579 6671068
## 2053 4872541 2940702 6804380
## 2054 4925258 2911689 6938828
## 2055 4977975 2881555 7074396
## 2056 5030692 2850316 7211069
## 2057 5083410 2817985 7348834
## 2058 5136127 2784578 7487676
## 2059 5188844 2750106 7627582
## 2060 5241561 2714583 7768540
## 2061 5294278 2678021 7910536
## 2062 5346996 2640432 8053559
## 2063 5399713 2601828 8197598
## 2064 5452430 2562219 8342641
## 2065 5505147 2521617 8488677
## 2066 5557864 2480032 8635697
## 2067 5610582 2437475 8783689
## 2068 5663299 2393954 8932644
## 2069 5716016 2349480 9082552
## 2070 5768733 2304061 9233405
plot(pronosticoMA,main="Poblacion NV")

selected_states <- c("MA", "NY", "CA", "TX", "NV")
forecasted_population <- data.frame()
for (state in selected_states) {
df <- datos %>% filter(Estado == state)
df2 <- df %>% select(Año, Poblacion)
ts1 <- ts(data = df2$Poblacion, start = min(df2$Año), frequency = 1)
arima_model <- auto.arima(ts1)
forecast_result <- forecast(arima_model, level = c(95), h = 51)
forecast_data <- data.frame(
Estado = state,
Year = seq(2023, 2073),
Forecasted_Population = forecast_result$mean
)
forecasted_population <- bind_rows(forecasted_population, forecast_data)
}
average_population <- forecasted_population %>%
mutate(Decade = as.numeric(cut(Year, breaks = seq(2020, 2070, by = 10), labels = FALSE))) %>%
group_by(Estado, Decade) %>%
summarise(Avg_Population = mean(Forecasted_Population, na.rm = TRUE))
## `summarise()` has grouped output by 'Estado'. You can override using the
## `.groups` argument.
print(average_population)
## # A tibble: 30 × 3
## # Groups: Estado [5]
## Estado Decade Avg_Population
## <chr> <dbl> <dbl>
## 1 CA 1 39740080.
## 2 CA 2 40195796.
## 3 CA 3 40702146.
## 4 CA 4 41208496.
## 5 CA 5 41714846.
## 6 CA NA 42043973
## 7 MA 1 7039088.
## 8 MA 2 7347866.
## 9 MA 3 7690952.
## 10 MA 4 8034038.
## # ℹ 20 more rows
decade_datasets <- split(average_population, f = average_population$Decade)
for (i in seq_along(decade_datasets)) {
assign(paste0("decade_", i), decade_datasets[[i]])
}
decade_datasets_list <- lapply(seq_along(decade_datasets), function(i) {
return(decade_datasets[[i]])
})
abbreviation_to_fullname <- c("MA" = "Massachusetts", "NV" = "Nevada", "NY" = "New York", "CA" = "California", "TX" = "Texas")
decade_1$Estado <- abbreviation_to_fullname[decade_1$Estado]
Mapa decada 1
map(database = "state")
color_vector <- heat.colors(unique(decade_1$Avg_Population))
grupo1 <- decade_1$Estado
for (i in seq_along(grupo1)) {
state <- grupo1[i]
population <- unique(decade_1$Avg_Population[decade_1$Estado == state])
color <- color_vector[findInterval(population, seq(min(decade_1$Avg_Population), max(decade_1$Avg_Population), length.out = length(color_vector) + 1))]
map(database = "state", regions = state, col = color, fill = TRUE, add = TRUE)
}

abbreviation_to_fullname_2 <- c("MA" = "Massachusetts", "NV" = "Nevada", "NY" = "New York", "CA" = "California", "TX" = "Texas")
decade_2$Estado <- abbreviation_to_fullname_2[decade_2$Estado]
Mapa decada 2
map(database = "state")
color_vector <- heat.colors(length(unique(decade_2$Avg_Population)))
grupo2 <- unique(decade_2$Estado)
for (i in seq_along(grupo1)) {
state <- grupo2[i]
population <- max(decade_2$Avg_Population[decade_2$Estado == state])
color <- color_vector[findInterval(population, seq(min(decade_2$Avg_Population), max(decade_2$Avg_Population), length.out = length(color_vector) + 1))]
map(database = "state", regions = state, col = color, fill = TRUE, add = TRUE)
}

abbreviation_to_fullname_3 <- c("MA" = "Massachusetts", "NV" = "Nevada", "NY" = "New York", "CA" = "California", "TX" = "Texas")
decade_3$Estado <- abbreviation_to_fullname_3[decade_3$Estado]
Mapa decada 3
map(database = "state")
color_vector <- heat.colors(length(unique(decade_3$Avg_Population)))
grupo3 <- unique(decade_3$Estado)
for (i in seq_along(grupo3)) {
state <- grupo3[i]
population <- max(decade_3$Avg_Population[decade_3$Estado == state])
color <- color_vector[findInterval(population, seq(min(decade_3$Avg_Population), max(decade_3$Avg_Population), length.out = length(color_vector) + 1))]
map(database = "state", regions = state, col = color, fill = TRUE, add = TRUE)
}

abbreviation_to_fullname_4 <- c("MA" = "Massachusetts", "NV" = "Nevada", "NY" = "New York", "CA" = "California", "TX" = "Texas")
decade_4$Estado <- abbreviation_to_fullname_4[decade_4$Estado]
Mapa decada 4
map(database = "state")
color_vector <- heat.colors(length(unique(decade_4$Avg_Population)))
grupo4 <- unique(decade_4$Estado)
for (i in seq_along(grupo4)) {
state <- grupo4[i]
population <- max(decade_4$Avg_Population[decade_4$Estado == state])
color <- color_vector[findInterval(population, seq(min(decade_4$Avg_Population), max(decade_4$Avg_Population), length.out = length(color_vector) + 1))]
map(database = "state", regions = state, col = color, fill = TRUE, add = TRUE)
}

abbreviation_to_fullname_5 <- c("MA" = "Massachusetts", "NV" = "Nevada", "NY" = "New York", "CA" = "California", "TX" = "Texas")
decade_5$Estado <- abbreviation_to_fullname_5[decade_5$Estado]
Mapa decada 5
map(database = "state")
color_vector <- heat.colors(length(unique(decade_5$Avg_Population)))
grupo5 <- unique(decade_4$Estado)
for (i in seq_along(grupo5)) {
state <- grupo4[i]
population <- unique(decade_4$Avg_Population[decade_5$Estado == state])
color <- color_vector[findInterval(population, seq(min(decade_5$Avg_Population), max(decade_5$Avg_Population), length.out = length(color_vector) + 1))]
map(database = "state", regions = state, col = color, fill = TRUE, add = TRUE)
}

LS0tDQp0aXRsZTogIkFjdC5JbnRlZ3JhZG9yYSINCmF1dGhvcjogIlBhdHJpY2lvIEEwMDgzMTc1NCwgWGltZW5hIEEwMDgzMTcyNSwgTWVsaXNzYSBBMDE1Njg1MTQiDQpkYXRlOiAiMjAyNC0wMi0yMSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeShmb3JlY2FzdCkNCmxpYnJhcnkocGxtKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobWFwcykNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKQ0KZGF0b3MgPC0gcmVhZF9leGNlbCgiaGlzdG9yaWNhbF9zdGF0ZV9wb3B1bGF0aW9uX2J5X3llYXIueGxzeCIpDQojVmlldyhkYXRvcykNCmNvbG5hbWVzKGRhdG9zKTwtYygiRXN0YWRvIiwiQcOxbyIsIlBvYmxhY2lvbiIpDQpgYGANCg0KDQpgYGB7cn0NCmRhdG9zJFBvYmxhY2lvbiA8LSBhcy5udW1lcmljKGRhdG9zJFBvYmxhY2lvbikNCnN0cihkYXRvcyRQb2JsYWNpb24pDQpkZiA8LSBkYXRvcyAlPiUgZmlsdGVyKEVzdGFkbyA9PSAiTUEiKQ0KZGYyIDwtIGRmICU+JSBzZWxlY3QoUG9ibGFjaW9uKQ0KdHMxIDwtIHRzKGRhdGE9ZGYyLCBzdGFydD0gMTkwMCwgZnJlcXVlbmN5PTEpDQp0czENCmFyaW1hTUEgPC0gYXV0by5hcmltYSh0czEpDQphcmltYU1BDQpzdW1tYXJ5KGFyaW1hTUEpDQpwcm9ub3N0aWNvTUEgPC0gZm9yZWNhc3QoYXJpbWFNQSwgbGV2ZWwgPSBjKDk1KSxoPTUxKQ0KcHJvbm9zdGljb01BIA0KcGxvdChwcm9ub3N0aWNvTUEsbWFpbj0iUG9ibGFjaW9uIE1BIikNCmBgYA0KDQoNCmBgYHtyfQ0KZGF0b3MkUG9ibGFjaW9uIDwtIGFzLm51bWVyaWMoZGF0b3MkUG9ibGFjaW9uKQ0Kc3RyKGRhdG9zJFBvYmxhY2lvbikNCmRmIDwtIGRhdG9zICU+JSBmaWx0ZXIoRXN0YWRvID09ICJOWSIpDQpkZjIgPC0gZGYgJT4lIHNlbGVjdChQb2JsYWNpb24pDQp0czEgPC0gdHMoZGF0YT1kZjIsIHN0YXJ0PSAxOTAwLCBmcmVxdWVuY3k9MSkNCnRzMQ0KYXJpbWFNQSA8LSBhdXRvLmFyaW1hKHRzMSkNCmFyaW1hTUENCnN1bW1hcnkoYXJpbWFNQSkNCnByb25vc3RpY29NQSA8LSBmb3JlY2FzdChhcmltYU1BLCBsZXZlbCA9IGMoOTUpLGg9NTEpDQpwcm9ub3N0aWNvTUEgDQpwbG90KHByb25vc3RpY29NQSxtYWluPSJQb2JsYWNpb24gTlkiKQ0KYGBgDQoNCmBgYHtyfQ0KZGF0b3MkUG9ibGFjaW9uIDwtIGFzLm51bWVyaWMoZGF0b3MkUG9ibGFjaW9uKQ0Kc3RyKGRhdG9zJFBvYmxhY2lvbikNCmRmIDwtIGRhdG9zICU+JSBmaWx0ZXIoRXN0YWRvID09ICJDQSIpDQpkZjIgPC0gZGYgJT4lIHNlbGVjdChQb2JsYWNpb24pDQp0czEgPC0gdHMoZGF0YT1kZjIsIHN0YXJ0PSAxOTAwLCBmcmVxdWVuY3k9MSkNCnRzMQ0KYXJpbWFNQSA8LSBhdXRvLmFyaW1hKHRzMSkNCmFyaW1hTUENCnN1bW1hcnkoYXJpbWFNQSkNCnByb25vc3RpY29NQSA8LSBmb3JlY2FzdChhcmltYU1BLCBsZXZlbCA9IGMoOTUpLGg9NTEpDQpwcm9ub3N0aWNvTUEgDQpwbG90KHByb25vc3RpY29NQSxtYWluPSJQb2JsYWNpb24gQ0EiKQ0KYGBgDQoNCmBgYHtyfQ0KZGF0b3MkUG9ibGFjaW9uIDwtIGFzLm51bWVyaWMoZGF0b3MkUG9ibGFjaW9uKQ0Kc3RyKGRhdG9zJFBvYmxhY2lvbikNCmRmIDwtIGRhdG9zICU+JSBmaWx0ZXIoRXN0YWRvID09ICJUWCIpDQpkZjIgPC0gZGYgJT4lIHNlbGVjdChQb2JsYWNpb24pDQp0czEgPC0gdHMoZGF0YT1kZjIsIHN0YXJ0PSAxOTAwLCBmcmVxdWVuY3k9MSkNCnRzMQ0KYXJpbWFNQSA8LSBhdXRvLmFyaW1hKHRzMSkNCmFyaW1hTUENCnN1bW1hcnkoYXJpbWFNQSkNCnByb25vc3RpY29NQSA8LSBmb3JlY2FzdChhcmltYU1BLCBsZXZlbCA9IGMoOTUpLGg9NTEpDQpwcm9ub3N0aWNvTUEgDQpwbG90KHByb25vc3RpY29NQSxtYWluPSJQb2JsYWNpb24gVFgiKQ0KYGBgDQoNCmBgYHtyfQ0KZGF0b3MkUG9ibGFjaW9uIDwtIGFzLm51bWVyaWMoZGF0b3MkUG9ibGFjaW9uKQ0Kc3RyKGRhdG9zJFBvYmxhY2lvbikNCmRmIDwtIGRhdG9zICU+JSBmaWx0ZXIoRXN0YWRvID09ICJOViIpDQpkZjIgPC0gZGYgJT4lIHNlbGVjdChQb2JsYWNpb24pDQp0czEgPC0gdHMoZGF0YT1kZjIsIHN0YXJ0PSAxOTAwLCBmcmVxdWVuY3k9MSkNCnRzMQ0KYXJpbWFNQSA8LSBhdXRvLmFyaW1hKHRzMSkNCmFyaW1hTUENCnN1bW1hcnkoYXJpbWFNQSkNCnByb25vc3RpY29NQSA8LSBmb3JlY2FzdChhcmltYU1BLCBsZXZlbCA9IGMoOTUpLGg9NTEpDQpwcm9ub3N0aWNvTUEgDQpwbG90KHByb25vc3RpY29NQSxtYWluPSJQb2JsYWNpb24gTlYiKQ0KYGBgDQoNCmBgYHtyfQ0Kc2VsZWN0ZWRfc3RhdGVzIDwtIGMoIk1BIiwgIk5ZIiwgIkNBIiwgIlRYIiwgIk5WIikNCmZvcmVjYXN0ZWRfcG9wdWxhdGlvbiA8LSBkYXRhLmZyYW1lKCkNCg0KZm9yIChzdGF0ZSBpbiBzZWxlY3RlZF9zdGF0ZXMpIHsNCiAgZGYgPC0gZGF0b3MgJT4lIGZpbHRlcihFc3RhZG8gPT0gc3RhdGUpDQogIGRmMiA8LSBkZiAlPiUgc2VsZWN0KEHDsW8sIFBvYmxhY2lvbikNCiAgdHMxIDwtIHRzKGRhdGEgPSBkZjIkUG9ibGFjaW9uLCBzdGFydCA9IG1pbihkZjIkQcOxbyksIGZyZXF1ZW5jeSA9IDEpDQogIGFyaW1hX21vZGVsIDwtIGF1dG8uYXJpbWEodHMxKQ0KICBmb3JlY2FzdF9yZXN1bHQgPC0gZm9yZWNhc3QoYXJpbWFfbW9kZWwsIGxldmVsID0gYyg5NSksIGggPSA1MSkNCg0KICBmb3JlY2FzdF9kYXRhIDwtIGRhdGEuZnJhbWUoDQogICAgRXN0YWRvID0gc3RhdGUsDQogICAgWWVhciA9IHNlcSgyMDIzLCAyMDczKSwNCiAgICBGb3JlY2FzdGVkX1BvcHVsYXRpb24gPSBmb3JlY2FzdF9yZXN1bHQkbWVhbg0KICApDQoNCiAgZm9yZWNhc3RlZF9wb3B1bGF0aW9uIDwtIGJpbmRfcm93cyhmb3JlY2FzdGVkX3BvcHVsYXRpb24sIGZvcmVjYXN0X2RhdGEpDQp9DQoNCmF2ZXJhZ2VfcG9wdWxhdGlvbiA8LSBmb3JlY2FzdGVkX3BvcHVsYXRpb24gJT4lDQogIG11dGF0ZShEZWNhZGUgPSBhcy5udW1lcmljKGN1dChZZWFyLCBicmVha3MgPSBzZXEoMjAyMCwgMjA3MCwgYnkgPSAxMCksIGxhYmVscyA9IEZBTFNFKSkpICU+JQ0KICBncm91cF9ieShFc3RhZG8sIERlY2FkZSkgJT4lDQogIHN1bW1hcmlzZShBdmdfUG9wdWxhdGlvbiA9IG1lYW4oRm9yZWNhc3RlZF9Qb3B1bGF0aW9uLCBuYS5ybSA9IFRSVUUpKQ0KDQpwcmludChhdmVyYWdlX3BvcHVsYXRpb24pDQpgYGANCg0KYGBge3J9DQpkZWNhZGVfZGF0YXNldHMgPC0gc3BsaXQoYXZlcmFnZV9wb3B1bGF0aW9uLCBmID0gYXZlcmFnZV9wb3B1bGF0aW9uJERlY2FkZSkNCg0KZm9yIChpIGluIHNlcV9hbG9uZyhkZWNhZGVfZGF0YXNldHMpKSB7DQogIGFzc2lnbihwYXN0ZTAoImRlY2FkZV8iLCBpKSwgZGVjYWRlX2RhdGFzZXRzW1tpXV0pDQp9DQoNCmRlY2FkZV9kYXRhc2V0c19saXN0IDwtIGxhcHBseShzZXFfYWxvbmcoZGVjYWRlX2RhdGFzZXRzKSwgZnVuY3Rpb24oaSkgew0KICByZXR1cm4oZGVjYWRlX2RhdGFzZXRzW1tpXV0pDQp9KQ0KYGBgDQoNCmBgYHtyfQ0KYWJicmV2aWF0aW9uX3RvX2Z1bGxuYW1lIDwtIGMoIk1BIiA9ICJNYXNzYWNodXNldHRzIiwgIk5WIiA9ICJOZXZhZGEiLCAiTlkiID0gIk5ldyBZb3JrIiwgIkNBIiA9ICJDYWxpZm9ybmlhIiwgIlRYIiA9ICJUZXhhcyIpDQpkZWNhZGVfMSRFc3RhZG8gPC0gYWJicmV2aWF0aW9uX3RvX2Z1bGxuYW1lW2RlY2FkZV8xJEVzdGFkb10NCmBgYA0KDQojIE1hcGEgZGVjYWRhIDENCmBgYHtyfQ0KbWFwKGRhdGFiYXNlID0gInN0YXRlIikNCmNvbG9yX3ZlY3RvciA8LSBoZWF0LmNvbG9ycyh1bmlxdWUoZGVjYWRlXzEkQXZnX1BvcHVsYXRpb24pKQ0KZ3J1cG8xIDwtIGRlY2FkZV8xJEVzdGFkbw0KZm9yIChpIGluIHNlcV9hbG9uZyhncnVwbzEpKSB7DQogIHN0YXRlIDwtIGdydXBvMVtpXQ0KICBwb3B1bGF0aW9uIDwtIHVuaXF1ZShkZWNhZGVfMSRBdmdfUG9wdWxhdGlvbltkZWNhZGVfMSRFc3RhZG8gPT0gc3RhdGVdKQ0KICBjb2xvciA8LSBjb2xvcl92ZWN0b3JbZmluZEludGVydmFsKHBvcHVsYXRpb24sIHNlcShtaW4oZGVjYWRlXzEkQXZnX1BvcHVsYXRpb24pLCBtYXgoZGVjYWRlXzEkQXZnX1BvcHVsYXRpb24pLCBsZW5ndGgub3V0ID0gbGVuZ3RoKGNvbG9yX3ZlY3RvcikgKyAxKSldDQogIG1hcChkYXRhYmFzZSA9ICJzdGF0ZSIsIHJlZ2lvbnMgPSBzdGF0ZSwgY29sID0gY29sb3IsIGZpbGwgPSBUUlVFLCBhZGQgPSBUUlVFKQ0KfQ0KYGBgDQoNCmBgYHtyfQ0KYWJicmV2aWF0aW9uX3RvX2Z1bGxuYW1lXzIgPC0gYygiTUEiID0gIk1hc3NhY2h1c2V0dHMiLCAiTlYiID0gIk5ldmFkYSIsICJOWSIgPSAiTmV3IFlvcmsiLCAiQ0EiID0gIkNhbGlmb3JuaWEiLCAiVFgiID0gIlRleGFzIikNCmRlY2FkZV8yJEVzdGFkbyA8LSBhYmJyZXZpYXRpb25fdG9fZnVsbG5hbWVfMltkZWNhZGVfMiRFc3RhZG9dDQpgYGANCg0KIyBNYXBhIGRlY2FkYSAyDQpgYGB7cn0NCm1hcChkYXRhYmFzZSA9ICJzdGF0ZSIpDQpjb2xvcl92ZWN0b3IgPC0gaGVhdC5jb2xvcnMobGVuZ3RoKHVuaXF1ZShkZWNhZGVfMiRBdmdfUG9wdWxhdGlvbikpKQ0KZ3J1cG8yIDwtIHVuaXF1ZShkZWNhZGVfMiRFc3RhZG8pDQpmb3IgKGkgaW4gc2VxX2Fsb25nKGdydXBvMSkpIHsNCiAgc3RhdGUgPC0gZ3J1cG8yW2ldDQogIHBvcHVsYXRpb24gPC0gbWF4KGRlY2FkZV8yJEF2Z19Qb3B1bGF0aW9uW2RlY2FkZV8yJEVzdGFkbyA9PSBzdGF0ZV0pDQogIGNvbG9yIDwtIGNvbG9yX3ZlY3RvcltmaW5kSW50ZXJ2YWwocG9wdWxhdGlvbiwgc2VxKG1pbihkZWNhZGVfMiRBdmdfUG9wdWxhdGlvbiksIG1heChkZWNhZGVfMiRBdmdfUG9wdWxhdGlvbiksIGxlbmd0aC5vdXQgPSBsZW5ndGgoY29sb3JfdmVjdG9yKSArIDEpKV0NCiAgbWFwKGRhdGFiYXNlID0gInN0YXRlIiwgcmVnaW9ucyA9IHN0YXRlLCBjb2wgPSBjb2xvciwgZmlsbCA9IFRSVUUsIGFkZCA9IFRSVUUpDQp9DQpgYGANCg0KYGBge3J9DQphYmJyZXZpYXRpb25fdG9fZnVsbG5hbWVfMyA8LSBjKCJNQSIgPSAiTWFzc2FjaHVzZXR0cyIsICJOViIgPSAiTmV2YWRhIiwgIk5ZIiA9ICJOZXcgWW9yayIsICJDQSIgPSAiQ2FsaWZvcm5pYSIsICJUWCIgPSAiVGV4YXMiKQ0KZGVjYWRlXzMkRXN0YWRvIDwtIGFiYnJldmlhdGlvbl90b19mdWxsbmFtZV8zW2RlY2FkZV8zJEVzdGFkb10NCmBgYA0KDQojIE1hcGEgZGVjYWRhIDMNCmBgYHtyfQ0KbWFwKGRhdGFiYXNlID0gInN0YXRlIikNCmNvbG9yX3ZlY3RvciA8LSBoZWF0LmNvbG9ycyhsZW5ndGgodW5pcXVlKGRlY2FkZV8zJEF2Z19Qb3B1bGF0aW9uKSkpDQpncnVwbzMgPC0gdW5pcXVlKGRlY2FkZV8zJEVzdGFkbykNCmZvciAoaSBpbiBzZXFfYWxvbmcoZ3J1cG8zKSkgew0KICBzdGF0ZSA8LSBncnVwbzNbaV0NCiAgcG9wdWxhdGlvbiA8LSBtYXgoZGVjYWRlXzMkQXZnX1BvcHVsYXRpb25bZGVjYWRlXzMkRXN0YWRvID09IHN0YXRlXSkNCiAgY29sb3IgPC0gY29sb3JfdmVjdG9yW2ZpbmRJbnRlcnZhbChwb3B1bGF0aW9uLCBzZXEobWluKGRlY2FkZV8zJEF2Z19Qb3B1bGF0aW9uKSwgbWF4KGRlY2FkZV8zJEF2Z19Qb3B1bGF0aW9uKSwgbGVuZ3RoLm91dCA9IGxlbmd0aChjb2xvcl92ZWN0b3IpICsgMSkpXQ0KICBtYXAoZGF0YWJhc2UgPSAic3RhdGUiLCByZWdpb25zID0gc3RhdGUsIGNvbCA9IGNvbG9yLCBmaWxsID0gVFJVRSwgYWRkID0gVFJVRSkNCn0NCmBgYA0KDQpgYGB7cn0NCmFiYnJldmlhdGlvbl90b19mdWxsbmFtZV80IDwtIGMoIk1BIiA9ICJNYXNzYWNodXNldHRzIiwgIk5WIiA9ICJOZXZhZGEiLCAiTlkiID0gIk5ldyBZb3JrIiwgIkNBIiA9ICJDYWxpZm9ybmlhIiwgIlRYIiA9ICJUZXhhcyIpDQpkZWNhZGVfNCRFc3RhZG8gPC0gYWJicmV2aWF0aW9uX3RvX2Z1bGxuYW1lXzRbZGVjYWRlXzQkRXN0YWRvXQ0KYGBgDQoNCiMgTWFwYSBkZWNhZGEgNA0KYGBge3J9DQptYXAoZGF0YWJhc2UgPSAic3RhdGUiKQ0KY29sb3JfdmVjdG9yIDwtIGhlYXQuY29sb3JzKGxlbmd0aCh1bmlxdWUoZGVjYWRlXzQkQXZnX1BvcHVsYXRpb24pKSkNCmdydXBvNCA8LSB1bmlxdWUoZGVjYWRlXzQkRXN0YWRvKQ0KZm9yIChpIGluIHNlcV9hbG9uZyhncnVwbzQpKSB7DQogIHN0YXRlIDwtIGdydXBvNFtpXQ0KICBwb3B1bGF0aW9uIDwtIG1heChkZWNhZGVfNCRBdmdfUG9wdWxhdGlvbltkZWNhZGVfNCRFc3RhZG8gPT0gc3RhdGVdKQ0KICBjb2xvciA8LSBjb2xvcl92ZWN0b3JbZmluZEludGVydmFsKHBvcHVsYXRpb24sIHNlcShtaW4oZGVjYWRlXzQkQXZnX1BvcHVsYXRpb24pLCBtYXgoZGVjYWRlXzQkQXZnX1BvcHVsYXRpb24pLCBsZW5ndGgub3V0ID0gbGVuZ3RoKGNvbG9yX3ZlY3RvcikgKyAxKSldDQogIG1hcChkYXRhYmFzZSA9ICJzdGF0ZSIsIHJlZ2lvbnMgPSBzdGF0ZSwgY29sID0gY29sb3IsIGZpbGwgPSBUUlVFLCBhZGQgPSBUUlVFKQ0KfQ0KYGBgDQoNCmBgYHtyfQ0KYWJicmV2aWF0aW9uX3RvX2Z1bGxuYW1lXzUgPC0gYygiTUEiID0gIk1hc3NhY2h1c2V0dHMiLCAiTlYiID0gIk5ldmFkYSIsICJOWSIgPSAiTmV3IFlvcmsiLCAiQ0EiID0gIkNhbGlmb3JuaWEiLCAiVFgiID0gIlRleGFzIikNCmRlY2FkZV81JEVzdGFkbyA8LSBhYmJyZXZpYXRpb25fdG9fZnVsbG5hbWVfNVtkZWNhZGVfNSRFc3RhZG9dDQpgYGANCg0KIyBNYXBhIGRlY2FkYSA1DQpgYGB7cn0NCm1hcChkYXRhYmFzZSA9ICJzdGF0ZSIpDQpjb2xvcl92ZWN0b3IgPC0gaGVhdC5jb2xvcnMobGVuZ3RoKHVuaXF1ZShkZWNhZGVfNSRBdmdfUG9wdWxhdGlvbikpKQ0KZ3J1cG81IDwtIHVuaXF1ZShkZWNhZGVfNCRFc3RhZG8pDQpmb3IgKGkgaW4gc2VxX2Fsb25nKGdydXBvNSkpIHsNCiAgc3RhdGUgPC0gZ3J1cG80W2ldDQogIHBvcHVsYXRpb24gPC0gdW5pcXVlKGRlY2FkZV80JEF2Z19Qb3B1bGF0aW9uW2RlY2FkZV81JEVzdGFkbyA9PSBzdGF0ZV0pDQogIGNvbG9yIDwtIGNvbG9yX3ZlY3RvcltmaW5kSW50ZXJ2YWwocG9wdWxhdGlvbiwgc2VxKG1pbihkZWNhZGVfNSRBdmdfUG9wdWxhdGlvbiksIG1heChkZWNhZGVfNSRBdmdfUG9wdWxhdGlvbiksIGxlbmd0aC5vdXQgPSBsZW5ndGgoY29sb3JfdmVjdG9yKSArIDEpKV0NCiAgbWFwKGRhdGFiYXNlID0gInN0YXRlIiwgcmVnaW9ucyA9IHN0YXRlLCBjb2wgPSBjb2xvciwgZmlsbCA9IFRSVUUsIGFkZCA9IFRSVUUpDQp9DQpgYGANCg==