1. Contexto

En este reporte analizaremos la base de datos de “Avocado” la cual contiene registros de ventas en un periodo semanal empezando en 2015 y terminando en 2018 en los Estados Unidos de America, esta base tiene informacion como el tipo de aguacate el cual puede ser convencial u organico, al igual que las ventas de los diferentes tipos de aguacate con PLUs de 4046, 4225, 4770. Durante este reporte realizaremos un analisis de los datos para entender mas alla los datos, al igual que mapearemos los aguacate en el mapa de los Estados Unidos y una vez entendido y visualizado los aguacates sobre este pais, realizaremos un pronostico de ventas para los proximos 3 an~os despues del ultimo registro semanal que tiene la base de datos para conocer como podria estar la industria en los an~os siguientes si es que factores externos no afectan y permite que el analisis sea satisfactorio y preciso.

2. Analisis de Datos

2.1 Analisis de base de datos

2.1.1 Librerias

2.1.2 Carga de datos

avocado <- read.csv("C:\\Users\\erick\\OneDrive\\Escritorio\\TEC\\Semestre 4 LIT (8 semestre)\\Generacion\\avocado.csv")
bd = avocado
bd = bd %>%  rename(Total_Bags = "Total.Bags") %>% 
  rename(Small_Bags = "Small.Bags") %>% 
  rename(Large_Bags = "Large.Bags") %>% 
  rename(XLarge_Bags = "XLarge.Bags") %>%
  rename(date = fecha)

tibble(bd)
## # A tibble: 18,249 x 14
##    ï..fechaa  Avera~1 Total~2 X4046  X4225 X4770 Total~3 Small~4 Large~5 XLarg~6
##    <chr>        <dbl>   <dbl> <dbl>  <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 27/12/2015    1.33  64237. 1037. 5.45e4  48.2   8697.   8604.    93.2       0
##  2 20/12/2015    1.35  54877.  674. 4.46e4  58.3   9506.   9408.    97.5       0
##  3 13/12/2015    0.93 118220.  795. 1.09e5 130.    8145.   8042.   103.        0
##  4 06/12/2015    1.08  78992. 1132  7.20e4  72.6   5811.   5677.   134.        0
##  5 29/11/2015    1.28  51040.  941. 4.38e4  75.8   6184.   5986.   198.        0
##  6 22/11/2015    1.26  55980. 1184. 4.81e4  43.6   6684.   6556.   127.        0
##  7 15/11/2015    0.99  83454. 1369. 7.37e4  93.3   8319.   8197.   122.        0
##  8 08/11/2015    0.98 109428.  704. 1.02e5  80     6829.   6267.   562.        0
##  9 01/11/2015    1.02  99811. 1022. 8.73e4  85.3  11388.  11105.   284.        0
## 10 25/10/2015    1.07  74339.  842. 6.48e4 113     8626.   8061.   564.        0
## # ... with 18,239 more rows, 4 more variables: type <chr>, year <int>,
## #   region <chr>, date <chr>, and abbreviated variable names 1: AveragePrice,
## #   2: Total.Volume, 3: Total_Bags, 4: Small_Bags, 5: Large_Bags,
## #   6: XLarge_Bags
bd2 = bd
bd2$date <- as.Date(bd2$date, '%d/%m/%Y')
bd2$X4046 = as.integer(bd2$X4046)
bd2$X4225 = as.integer(bd2$X4225)
bd2$X4770 = as.integer(bd2$X4770)
bd2$Total.Volume = as.integer(bd2$Total.Volume)
tibble(bd2)
## # A tibble: 18,249 x 14
##    ï..fechaa  Avera~1 Total~2 X4046  X4225 X4770 Total~3 Small~4 Large~5 XLarg~6
##    <chr>        <dbl>   <int> <int>  <int> <int>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 27/12/2015    1.33   64236  1036  54454    48   8697.   8604.    93.2       0
##  2 20/12/2015    1.35   54876   674  44638    58   9506.   9408.    97.5       0
##  3 13/12/2015    0.93  118220   794 109149   130   8145.   8042.   103.        0
##  4 06/12/2015    1.08   78992  1132  71976    72   5811.   5677.   134.        0
##  5 29/11/2015    1.28   51039   941  43838    75   6184.   5986.   198.        0
##  6 22/11/2015    1.26   55979  1184  48067    43   6684.   6556.   127.        0
##  7 15/11/2015    0.99   83453  1368  73672    93   8319.   8197.   122.        0
##  8 08/11/2015    0.98  109428   703 101815    80   6829.   6267.   562.        0
##  9 01/11/2015    1.02   99811  1022  87315    85  11388.  11105.   284.        0
## 10 25/10/2015    1.07   74338   842  64757   113   8626.   8061.   564.        0
## # ... with 18,239 more rows, 4 more variables: type <chr>, year <int>,
## #   region <chr>, date <date>, and abbreviated variable names 1: AveragePrice,
## #   2: Total.Volume, 3: Total_Bags, 4: Small_Bags, 5: Large_Bags,
## #   6: XLarge_Bags
#Estos numeros indican unidades

2.2.1 Base de datos Time series

A continuacion, filtraremos la base de datos a datos Totales de Estados Unidos, al igual que crearemos una columna que sea el Total de ventas y la fecha para poder realizar el modelo de series de tiempo y su pronositco

bd3 = bd2
bd3 = subset(bd3, select = c (date, AveragePrice, Total.Volume, region))
bd3 = bd3 %>%
  add_column(total_sales = (bd3$AveragePrice * bd3$Total.Volume)) %>% filter(region=='TotalUS')

bd3
##           date AveragePrice Total.Volume  region total_sales
## 1   2015-12-27         0.95     27297983 TotalUS  25933083.8
## 2   2015-12-20         0.98     25083647 TotalUS  24581974.1
## 3   2015-12-13         0.93     28041335 TotalUS  26078441.6
## 4   2015-12-06         0.89     28800396 TotalUS  25632352.4
## 5   2015-11-29         0.99     22617999 TotalUS  22391819.0
## 6   2015-11-22         0.96     25114228 TotalUS  24109658.9
## 7   2015-11-15         0.92     28597756 TotalUS  26309935.5
## 8   2015-11-08         0.97     28485715 TotalUS  27631143.6
## 9   2015-11-01         0.97     31047484 TotalUS  30116059.5
## 10  2015-10-25         1.04     26240072 TotalUS  27289674.9
## 11  2015-10-18         0.99     29375123 TotalUS  29081371.8
## 12  2015-10-11         1.00     29216198 TotalUS  29216198.0
## 13  2015-10-04         1.02     28243505 TotalUS  28808375.1
## 14  2015-09-27         1.03     27753508 TotalUS  28586113.2
## 15  2015-09-20         1.02     29569086 TotalUS  30160467.7
## 16  2015-09-13         1.03     31245835 TotalUS  32183210.1
## 17  2015-09-06         1.02     33526480 TotalUS  34197009.6
## 18  2015-08-30         1.07     29761638 TotalUS  31844952.7
## 19  2015-08-23         1.08     29699845 TotalUS  32075832.6
## 20  2015-08-16         1.05     31936856 TotalUS  33533698.8
## 21  2015-08-09         1.05     33254911 TotalUS  34917656.6
## 22  2015-08-02         1.09     30358467 TotalUS  33090729.0
## 23  2015-07-26         1.07     30652211 TotalUS  32797865.8
## 24  2015-07-19         1.07     32324647 TotalUS  34587372.3
## 25  2015-07-12         1.07     31660031 TotalUS  33876233.2
## 26  2015-07-05         1.04     37943670 TotalUS  39461416.8
## 27  2015-06-28         1.06     32408705 TotalUS  34353227.3
## 28  2015-06-21         1.02     35734613 TotalUS  36449305.3
## 29  2015-06-14         0.98     37026085 TotalUS  36285563.3
## 30  2015-06-07         1.00     36549995 TotalUS  36549995.0
## 31  2015-05-31         1.03     33720159 TotalUS  34731763.8
## 32  2015-05-24         1.04     35344183 TotalUS  36757950.3
## 33  2015-05-17         1.06     32027686 TotalUS  33949347.2
## 34  2015-05-10         1.02     36400886 TotalUS  37128903.7
## 35  2015-05-03         0.96     41291704 TotalUS  39640035.8
## 36  2015-04-26         1.07     30894157 TotalUS  33056748.0
## 37  2015-04-19         1.03     33091256 TotalUS  34083993.7
## 38  2015-04-12         1.02     32046401 TotalUS  32687329.0
## 39  2015-04-05         1.06     31500669 TotalUS  33390709.1
## 40  2015-03-29         1.04     29982648 TotalUS  31181953.9
## 41  2015-03-22         1.01     32513550 TotalUS  32838685.5
## 42  2015-03-15         1.04     29572225 TotalUS  30755114.0
## 43  2015-03-08         1.02     30094698 TotalUS  30696592.0
## 44  2015-03-01         0.97     32994014 TotalUS  32004193.6
## 45  2015-02-22         1.02     29936729 TotalUS  30535463.6
## 46  2015-02-15         1.03     28012520 TotalUS  28852895.6
## 47  2015-02-08         0.95     32137333 TotalUS  30530466.3
## 48  2015-02-01         0.89     44655461 TotalUS  39743360.3
## 49  2015-01-25         1.04     28470310 TotalUS  29609122.4
## 50  2015-01-18         1.03     29043458 TotalUS  29914761.7
## 51  2015-01-11         1.01     29063542 TotalUS  29354177.4
## 52  2015-01-04         0.95     31324277 TotalUS  29758063.1
## 53  2016-12-25         1.00     30287853 TotalUS  30287853.0
## 54  2016-12-18         0.96     29583882 TotalUS  28400526.7
## 55  2016-12-11         0.98     30093540 TotalUS  29491669.2
## 56  2016-12-04         1.00     31621221 TotalUS  31621221.0
## 57  2016-11-27         1.21     22923062 TotalUS  27736905.0
## 58  2016-11-20         1.27     24989702 TotalUS  31736921.5
## 59  2016-11-13         1.36     24075126 TotalUS  32742171.4
## 60  2016-11-06         1.44     22534698 TotalUS  32449965.1
## 61  2016-10-30         1.43     21009730 TotalUS  30043913.9
## 62  2016-10-23         1.34     24753513 TotalUS  33169707.4
## 63  2016-10-16         1.30     27707046 TotalUS  36019159.8
## 64  2016-10-09         1.27     28857581 TotalUS  36649127.9
## 65  2016-10-02         1.23     29615008 TotalUS  36426459.8
## 66  2016-09-25         1.22     30305112 TotalUS  36972236.6
## 67  2016-09-18         1.15     31346091 TotalUS  36048004.6
## 68  2016-09-11         1.08     34126730 TotalUS  36856868.4
## 69  2016-09-04         1.04     37130688 TotalUS  38615915.5
## 70  2016-08-28         1.09     33993931 TotalUS  37053384.8
## 71  2016-08-21         1.10     33592097 TotalUS  36951306.7
## 72  2016-08-14         1.12     34386177 TotalUS  38512518.2
## 73  2016-08-07         1.15     33819909 TotalUS  38892895.3
## 74  2016-07-31         1.23     31201590 TotalUS  38377955.7
## 75  2016-07-24         1.20     32339377 TotalUS  38807252.4
## 76  2016-07-17         1.15     32656123 TotalUS  37554541.4
## 77  2016-07-10         1.10     35567568 TotalUS  39124324.8
## 78  2016-07-03         1.06     39993186 TotalUS  42392777.2
## 79  2016-06-26         1.04     36617023 TotalUS  38081703.9
## 80  2016-06-19         1.02     38489936 TotalUS  39259734.7
## 81  2016-06-12         1.04     35580820 TotalUS  37004052.8
## 82  2016-06-05         0.97     40231259 TotalUS  39024321.2
## 83  2016-05-29         0.94     40019075 TotalUS  37617930.5
## 84  2016-05-22         0.93     36958035 TotalUS  34370972.6
## 85  2016-05-15         0.89     39914996 TotalUS  35524346.4
## 86  2016-05-08         0.82     46324529 TotalUS  37986113.8
## 87  2016-05-01         0.84     42867608 TotalUS  36008790.7
## 88  2016-04-24         0.87     39607695 TotalUS  34458694.6
## 89  2016-04-17         0.90     37467885 TotalUS  33721096.5
## 90  2016-04-10         0.90     36584029 TotalUS  32925626.1
## 91  2016-04-03         0.94     33668450 TotalUS  31648343.0
## 92  2016-03-27         0.94     35930195 TotalUS  33774383.3
## 93  2016-03-20         0.93     36335483 TotalUS  33791999.2
## 94  2016-03-13         0.93     36374516 TotalUS  33828299.9
## 95  2016-03-06         0.95     35064506 TotalUS  33311280.7
## 96  2016-02-28         0.91     36801817 TotalUS  33489653.5
## 97  2016-02-21         0.94     32804733 TotalUS  30836449.0
## 98  2016-02-14         0.88     36476441 TotalUS  32099268.1
## 99  2016-02-07         0.76     52288697 TotalUS  39739409.7
## 100 2016-01-31         0.93     34721249 TotalUS  32290761.6
## 101 2016-01-24         0.95     32787079 TotalUS  31147725.0
## 102 2016-01-17         0.94     34426341 TotalUS  32360760.5
## 103 2016-01-10         0.93     35264336 TotalUS  32795832.5
## 104 2016-01-03         0.86     38142088 TotalUS  32802195.7
## 105 2017-12-31         0.98     38267341 TotalUS  37501994.2
## 106 2017-12-24         1.18     29102349 TotalUS  34340771.8
## 107 2017-12-17         1.07     30757767 TotalUS  32910810.7
## 108 2017-12-10         1.03     35634913 TotalUS  36703960.4
## 109 2017-12-03         1.09     33824253 TotalUS  36868435.8
## 110 2017-11-26         1.24     24686675 TotalUS  30611477.0
## 111 2017-11-19         1.17     29253484 TotalUS  34226576.3
## 112 2017-11-12         1.15     32336225 TotalUS  37186658.8
## 113 2017-11-05         1.19     32051594 TotalUS  38141396.9
## 114 2017-10-29         1.29     30237911 TotalUS  39006905.2
## 115 2017-10-22         1.44     26706971 TotalUS  38458038.2
## 116 2017-10-15         1.58     25031589 TotalUS  39549910.6
## 117 2017-10-08         1.65     24397166 TotalUS  40255323.9
## 118 2017-10-01         1.64     24610645 TotalUS  40361457.8
## 119 2017-09-24         1.62     24637148 TotalUS  39912179.8
## 120 2017-09-17         1.57     25394902 TotalUS  39869996.1
## 121 2017-09-10         1.56     26385081 TotalUS  41160726.4
## 122 2017-09-03         1.57     26808410 TotalUS  42089203.7
## 123 2017-08-27         1.47     28785279 TotalUS  42314360.1
## 124 2017-08-20         1.41     29913744 TotalUS  42178379.0
## 125 2017-08-13         1.33     32817254 TotalUS  43646947.8
## 126 2017-08-06         1.33     32529920 TotalUS  43264793.6
## 127 2017-07-30         1.32     31756097 TotalUS  41918048.0
## 128 2017-07-23         1.31     32608301 TotalUS  42716874.3
## 129 2017-07-16         1.33     32455047 TotalUS  43165212.5
## 130 2017-07-09         1.17     39367336 TotalUS  46059783.1
## 131 2017-07-02         1.21     38010426 TotalUS  45992615.5
## 132 2017-06-25         1.17     37305307 TotalUS  43647209.2
## 133 2017-06-18         1.18     38247669 TotalUS  45132249.4
## 134 2017-06-11         1.21     37039853 TotalUS  44818222.1
## 135 2017-06-04         1.24     37352360 TotalUS  46316926.4
## 136 2017-05-28         1.28     37030893 TotalUS  47399543.0
## 137 2017-05-21         1.26     34397651 TotalUS  43341040.3
## 138 2017-05-14         1.19     36634269 TotalUS  43594780.1
## 139 2017-05-07         1.09     47293921 TotalUS  51550373.9
## 140 2017-04-30         1.18     38315500 TotalUS  45212290.0
## 141 2017-04-23         1.18     35729013 TotalUS  42160235.3
## 142 2017-04-16         1.23     35182320 TotalUS  43274253.6
## 143 2017-04-09         1.21     34785712 TotalUS  42090711.5
## 144 2017-04-02         1.21     34468017 TotalUS  41706300.6
## 145 2017-03-26         1.24     32555119 TotalUS  40368347.6
## 146 2017-03-19         1.25     31595125 TotalUS  39493906.2
## 147 2017-03-12         1.22     32020573 TotalUS  39065099.1
## 148 2017-03-05         1.13     33684175 TotalUS  38063117.8
## 149 2017-02-26         0.99     37007797 TotalUS  36637719.0
## 150 2017-02-19         0.99     33905854 TotalUS  33566795.5
## 151 2017-02-12         0.87     41077470 TotalUS  35737398.9
## 152 2017-02-05         0.77     61034457 TotalUS  46996531.9
## 153 2017-01-29         0.96     39373579 TotalUS  37798635.8
## 154 2017-01-22         0.94     42140393 TotalUS  39611969.4
## 155 2017-01-15         0.98     38295488 TotalUS  37529578.2
## 156 2017-01-08         0.99     38049802 TotalUS  37669304.0
## 157 2017-01-01         0.89     38879716 TotalUS  34602947.2
## 158 2018-03-25         1.03     43409835 TotalUS  44712130.1
## 159 2018-03-18         1.05     41386314 TotalUS  43455629.7
## 160 2018-03-11         1.09     40449603 TotalUS  44090067.3
## 161 2018-03-04         1.07     40741214 TotalUS  43593099.0
## 162 2018-02-25         1.06     40021528 TotalUS  42422819.7
## 163 2018-02-18         1.08     36709887 TotalUS  39646678.0
## 164 2018-02-11         0.97     43167806 TotalUS  41872771.8
## 165 2018-02-04         0.87     62505646 TotalUS  54379912.0
## 166 2018-01-28         1.09     40171640 TotalUS  43787087.6
## 167 2018-01-21         1.08     42939821 TotalUS  46375006.7
## 168 2018-01-14         1.20     37299945 TotalUS  44759934.0
## 169 2018-01-07         1.13     36703156 TotalUS  41474566.3
## 170 2015-12-27         1.52       549787 TotalUS    835676.2
## 171 2015-12-20         1.53       531478 TotalUS    813161.3
## 172 2015-12-13         1.43       624300 TotalUS    892749.0
## 173 2015-12-06         1.52       514112 TotalUS    781450.2
## 174 2015-11-29         1.50       507830 TotalUS    761745.0
## 175 2015-11-22         1.49       584276 TotalUS    870571.2
## 176 2015-11-15         1.60       511347 TotalUS    818155.2
## 177 2015-11-08         1.54       605197 TotalUS    932003.4
## 178 2015-11-01         1.47       647789 TotalUS    952249.8
## 179 2015-10-25         1.62       560830 TotalUS    908544.6
## 180 2015-10-18         1.71       518034 TotalUS    885838.1
## 181 2015-10-11         1.69       519892 TotalUS    878617.5
## 182 2015-10-04         1.72       557392 TotalUS    958714.2
## 183 2015-09-27         1.75       501814 TotalUS    878174.5
## 184 2015-09-20         1.77       515240 TotalUS    911974.8
## 185 2015-09-13         1.80       552059 TotalUS    993706.2
## 186 2015-09-06         1.78       593797 TotalUS   1056958.7
## 187 2015-08-30         1.66       670005 TotalUS   1112208.3
## 188 2015-08-23         1.72       666276 TotalUS   1145994.7
## 189 2015-08-16         1.75       644689 TotalUS   1128205.8
## 190 2015-08-09         1.00       625259 TotalUS    625259.0
## 191 2015-08-02         1.00       573873 TotalUS    573873.0
## 192 2015-07-26         1.00       580826 TotalUS    580826.0
## 193 2015-07-19         1.00       650389 TotalUS    650389.0
## 194 2015-07-12         1.00       608845 TotalUS    608845.0
## 195 2015-07-05         1.00       668233 TotalUS    668233.0
## 196 2015-06-28         1.64       659947 TotalUS   1082313.1
## 197 2015-06-21         1.66       638192 TotalUS   1059398.7
## 198 2015-06-14         1.68       646098 TotalUS   1085444.6
## 199 2015-06-07         1.67       640448 TotalUS   1069548.2
## 200 2015-05-31         1.58       716942 TotalUS   1132768.4
## 201 2015-05-24         1.59       714266 TotalUS   1135682.9
## 202 2015-05-17         1.50       761972 TotalUS   1142958.0
## 203 2015-05-10         1.42       861671 TotalUS   1223572.8
## 204 2015-05-03         1.37       912681 TotalUS   1250373.0
## 205 2015-04-26         1.45       872239 TotalUS   1264746.6
## 206 2015-04-19         1.59       675907 TotalUS   1074692.1
## 207 2015-04-12         1.53       810018 TotalUS   1239327.5
## 208 2015-04-05         1.63       661842 TotalUS   1078802.5
## 209 2015-03-29         1.60       674551 TotalUS   1079281.6
## 210 2015-03-22         1.49       682640 TotalUS   1017133.6
## 211 2015-03-15         1.50       644584 TotalUS    966876.0
## 212 2015-03-08         1.49       783913 TotalUS   1168030.4
## 213 2015-03-01         1.40       814484 TotalUS   1140277.6
## 214 2015-02-22         1.51       673446 TotalUS   1016903.5
## 215 2015-02-15         1.58       616177 TotalUS    973559.7
## 216 2015-02-08         1.48       730874 TotalUS   1081693.5
## 217 2015-02-01         1.36       740896 TotalUS   1007618.6
## 218 2015-01-25         1.53       556368 TotalUS    851243.0
## 219 2015-01-18         1.42       713120 TotalUS   1012630.4
## 220 2015-01-11         1.42       669528 TotalUS    950729.8
## 221 2015-01-04         1.46       612910 TotalUS    894848.6
## 222 2016-12-25         1.34       914035 TotalUS   1224806.9
## 223 2016-12-18         1.43       797042 TotalUS   1139770.1
## 224 2016-12-11         1.42       856795 TotalUS   1216648.9
## 225 2016-12-04         1.56       832767 TotalUS   1299116.5
## 226 2016-11-27         1.64       761675 TotalUS   1249147.0
## 227 2016-11-20         1.63       860320 TotalUS   1402321.6
## 228 2016-11-13         1.70       863948 TotalUS   1468711.6
## 229 2016-11-06         1.68       897671 TotalUS   1508087.3
## 230 2016-10-30         1.93       647723 TotalUS   1250105.4
## 231 2016-10-23         1.63       699763 TotalUS   1140613.7
## 232 2016-10-16         1.50       815859 TotalUS   1223788.5
## 233 2016-10-09         1.52       878367 TotalUS   1335117.8
## 234 2016-10-02         1.71       790926 TotalUS   1352483.5
## 235 2016-09-25         1.69       808891 TotalUS   1367025.8
## 236 2016-09-18         1.67       871627 TotalUS   1455617.1
## 237 2016-09-11         1.52      1103488 TotalUS   1677301.8
## 238 2016-09-04         1.54      1052088 TotalUS   1620215.5
## 239 2016-08-28         1.49       948530 TotalUS   1413309.7
## 240 2016-08-21         1.51      1033169 TotalUS   1560085.2
## 241 2016-08-14         1.48      1093287 TotalUS   1618064.8
## 242 2016-08-07         1.55      1012237 TotalUS   1568967.4
## 243 2016-07-31         1.58       946087 TotalUS   1494817.5
## 244 2016-07-24         1.65       919489 TotalUS   1517156.8
## 245 2016-07-17         1.63      1018118 TotalUS   1659532.3
## 246 2016-07-10         1.51      1043428 TotalUS   1575576.3
## 247 2016-07-03         1.47      1073595 TotalUS   1578184.6
## 248 2016-06-26         1.50      1007378 TotalUS   1511067.0
## 249 2016-06-19         1.45      1071066 TotalUS   1553045.7
## 250 2016-06-12         1.45       975275 TotalUS   1414148.8
## 251 2016-06-05         1.43      1012717 TotalUS   1448185.3
## 252 2016-05-29         1.41      1085152 TotalUS   1530064.3
## 253 2016-05-22         1.36      1165715 TotalUS   1585372.4
## 254 2016-05-15         1.45      1023252 TotalUS   1483715.4
## 255 2016-05-08         1.30      1137940 TotalUS   1479322.0
## 256 2016-05-01         1.28      1317867 TotalUS   1686869.8
## 257 2016-04-24         1.25      1475457 TotalUS   1844321.2
## 258 2016-04-17         1.38      1022217 TotalUS   1410659.5
## 259 2016-04-10         1.26      1179603 TotalUS   1486299.8
## 260 2016-04-03         1.44       930722 TotalUS   1340239.7
## 261 2016-03-27         1.44       900644 TotalUS   1296927.4
## 262 2016-03-20         1.27      1045450 TotalUS   1327721.5
## 263 2016-03-13         1.29      1023655 TotalUS   1320514.9
## 264 2016-03-06         1.28      1012415 TotalUS   1295891.2
## 265 2016-02-28         1.44       845011 TotalUS   1216815.8
## 266 2016-02-21         1.45       738856 TotalUS   1071341.2
## 267 2016-02-14         1.37       852463 TotalUS   1167874.3
## 268 2016-02-07         1.44       758795 TotalUS   1092664.8
## 269 2016-01-31         1.43       772077 TotalUS   1104070.1
## 270 2016-01-24         1.41       776964 TotalUS   1095519.2
## 271 2016-01-17         1.44       695341 TotalUS   1001291.0
## 272 2016-01-10         1.35       828670 TotalUS   1118704.5
## 273 2016-01-03         1.43       704100 TotalUS   1006863.0
## 274 2017-12-31         1.52      1243940 TotalUS   1890788.8
## 275 2017-12-24         1.64      1179930 TotalUS   1935085.2
## 276 2017-12-17         1.57      1148617 TotalUS   1803328.7
## 277 2017-12-10         1.54      1217680 TotalUS   1875227.2
## 278 2017-12-03         1.62      1119325 TotalUS   1813306.5
## 279 2017-11-26         1.72       957800 TotalUS   1647416.0
## 280 2017-11-19         1.77       967886 TotalUS   1713158.2
## 281 2017-11-12         1.81      1044591 TotalUS   1890709.7
## 282 2017-11-05         1.82      1068530 TotalUS   1944724.6
## 283 2017-10-29         1.84      1123703 TotalUS   2067613.5
## 284 2017-10-22         1.82      1180823 TotalUS   2149097.9
## 285 2017-10-15         1.85      1172057 TotalUS   2168305.5
## 286 2017-10-08         1.90      1164140 TotalUS   2211866.0
## 287 2017-10-01         1.95      1072521 TotalUS   2091415.9
## 288 2017-09-24         1.94      1125443 TotalUS   2183359.4
## 289 2017-09-17         2.00      1074567 TotalUS   2149134.0
## 290 2017-09-10         2.03      1093955 TotalUS   2220728.6
## 291 2017-09-03         2.06      1075538 TotalUS   2215608.3
## 292 2017-08-27         2.09      1045992 TotalUS   2186123.3
## 293 2017-08-20         1.96      1071538 TotalUS   2100214.5
## 294 2017-08-13         1.88      1014709 TotalUS   1907652.9
## 295 2017-08-06         1.83      1059971 TotalUS   1939746.9
## 296 2017-07-30         1.78      1091590 TotalUS   1943030.2
## 297 2017-07-23         1.76      1214158 TotalUS   2136918.1
## 298 2017-07-16         1.78      1148354 TotalUS   2044070.1
## 299 2017-07-09         1.71      1130374 TotalUS   1932939.5
## 300 2017-07-02         1.74      1173393 TotalUS   2041703.8
## 301 2017-06-25         1.77      1101009 TotalUS   1948785.9
## 302 2017-06-18         1.71      1304554 TotalUS   2230787.3
## 303 2017-06-11         1.56      1397448 TotalUS   2180018.9
## 304 2017-06-04         1.64      1352960 TotalUS   2218854.4
## 305 2017-05-28         1.69      1302205 TotalUS   2200726.4
## 306 2017-05-21         1.71      1210560 TotalUS   2070057.6
## 307 2017-05-14         1.55      1375125 TotalUS   2131443.8
## 308 2017-05-07         1.57      1394126 TotalUS   2188777.8
## 309 2017-04-30         1.68      1248175 TotalUS   2096934.0
## 310 2017-04-23         1.61      1190461 TotalUS   1916642.2
## 311 2017-04-16         1.49      1493331 TotalUS   2225063.2
## 312 2017-04-09         1.43      1387436 TotalUS   1984033.5
## 313 2017-04-02         1.42      1492167 TotalUS   2118877.1
## 314 2017-03-26         1.29      1581127 TotalUS   2039653.8
## 315 2017-03-19         1.50      1284018 TotalUS   1926027.0
## 316 2017-03-12         1.38      1337596 TotalUS   1845882.5
## 317 2017-03-05         1.16      1619398 TotalUS   1878501.7
## 318 2017-02-26         1.21      1436663 TotalUS   1738362.2
## 319 2017-02-19         1.31      1634877 TotalUS   2141688.9
## 320 2017-02-12         1.41      1060775 TotalUS   1495692.8
## 321 2017-02-05         1.36      1015621 TotalUS   1381244.6
## 322 2017-01-29         1.43       953206 TotalUS   1363084.6
## 323 2017-01-22         1.37       994282 TotalUS   1362166.3
## 324 2017-01-15         1.44       975724 TotalUS   1405042.6
## 325 2017-01-08         1.43       990721 TotalUS   1416731.0
## 326 2017-01-01         1.48       808971 TotalUS   1197277.1
## 327 2018-03-25         1.55      1559967 TotalUS   2417948.9
## 328 2018-03-18         1.54      1675804 TotalUS   2580738.2
## 329 2018-03-11         1.52      1664234 TotalUS   2529635.7
## 330 2018-03-04         1.52      1634430 TotalUS   2484333.6
## 331 2018-02-25         1.57      1459852 TotalUS   2291967.6
## 332 2018-02-18         1.52      1814929 TotalUS   2758692.1
## 333 2018-02-11         1.56      1317000 TotalUS   2054520.0
## 334 2018-02-04         1.53      1384683 TotalUS   2118565.0
## 335 2018-01-28         1.61      1336979 TotalUS   2152536.2
## 336 2018-01-21         1.63      1283987 TotalUS   2092898.8
## 337 2018-01-14         1.59      1476651 TotalUS   2347875.1
## 338 2018-01-07         1.51      1517332 TotalUS   2291171.3
bd4 = bd3

Looking for NAs

sum(is.na(bd4))
## [1] 0

Podemos observar que en nuestra base de datos no existen datos vacios

Looking for duplicates

sum(duplicated(bd4))
## [1] 0

Podemos observar que en nuestra base de datos no existen datos duplicados

Outliers

boxplot(bd4$Total.Volume, horizontal = TRUE)

plot(bd4$date, bd4$Total.Volume)

Segun las graficas si existen outliers, pero al tener en cuenta que el aguacate es un producto que se produce por temporada, y que hay eventos que igual aumentan significativamnete sus ventas (como el Super Bowl) procederemos a considerarlos normales.

Top_5 <- bd2 %>% 
  filter(region!='TotalUS') %>% 
  select(Total.Volume, region) %>% 
  group_by(region) %>% 
  summarise(suma_volumen_total = sum(Total.Volume)) %>% 
  arrange(desc(suma_volumen_total))

head(Top_5,5)
## # A tibble: 5 x 2
##   region       suma_volumen_total
##   <chr>                     <int>
## 1 West                 1086778994
## 2 California           1028981489
## 3 SouthCentral         1011279447
## 4 Northeast             713280743
## 5 Southeast             615238242

En esta tabla podemos ver aquellas regiones que en total tienen mas volumen. Es interesante ver como California compite contra regiones enteras.

Top_5_ventas <- bd2 %>% 
  add_column(total_sales = (bd2$AveragePrice * bd2$Total.Volume)) %>% 
  filter(region!='TotalUS') %>% 
  select(total_sales, region) %>% 
  group_by(region) %>% 
  summarise(suma_sales_total = sum(total_sales)) %>% 
  arrange(desc(suma_sales_total))


head(Top_5_ventas,5)
## # A tibble: 5 x 2
##   region       suma_sales_total
##   <chr>                   <dbl>
## 1 California        1121413796.
## 2 West              1066833452.
## 3 Northeast          960007605.
## 4 SouthCentral       874059097.
## 5 Southeast          703630348.

Y mas interesante es ver como California es la numero uno en ventas totales

Precios <- bd2 %>% 
  filter(region =='California' | region == 'West') %>% 
  select(AveragePrice, region) %>% 
  group_by(region) %>% 
  summarise(mean = mean(AveragePrice))

Precios
## # A tibble: 2 x 2
##   region      mean
##   <chr>      <dbl>
## 1 California  1.40
## 2 West        1.27

Esto se explica mejor cuanod vemos que el precio promedio de California es mayor a West

2.2 Mapa

El siguiente codigo arroja una lista de las ciudades que se encuentran en el dataframe y de las cuales se quitaron aquellas observaciones queran subtotales o tales como “West” o “Total_US”

avocado %>% 
  distinct(region)
##                 region
## 1               Albany
## 2              Atlanta
## 3  BaltimoreWashington
## 4                Boise
## 5               Boston
## 6     BuffaloRochester
## 7           California
## 8            Charlotte
## 9              Chicago
## 10    CincinnatiDayton
## 11            Columbus
## 12       DallasFtWorth
## 13              Denver
## 14             Detroit
## 15         GrandRapids
## 16          GreatLakes
## 17  HarrisburgScranton
## 18 HartfordSpringfield
## 19             Houston
## 20        Indianapolis
## 21        Jacksonville
## 22            LasVegas
## 23          LosAngeles
## 24          Louisville
## 25   MiamiFtLauderdale
## 26            Midsouth
## 27           Nashville
## 28    NewOrleansMobile
## 29             NewYork
## 30           Northeast
## 31  NorthernNewEngland
## 32             Orlando
## 33        Philadelphia
## 34       PhoenixTucson
## 35          Pittsburgh
## 36              Plains
## 37            Portland
## 38   RaleighGreensboro
## 39     RichmondNorfolk
## 40             Roanoke
## 41          Sacramento
## 42            SanDiego
## 43        SanFrancisco
## 44             Seattle
## 45       SouthCarolina
## 46        SouthCentral
## 47           Southeast
## 48             Spokane
## 49             StLouis
## 50            Syracuse
## 51               Tampa
## 52             TotalUS
## 53                West
## 54    WestTexNewMexico

Despues, dicha lista se cargo en una inteligencia artificial para darle formato de vector y facilitar nuestro trabajo. Despues se le pidio a dicha IA que creara un vector que contuviera los estados correspondientes y estos dos vectores los unimos en un dataframe.

# Crear un vector con los nombres de las ciudades
ciudades <- c("Albany", "Atlanta", "BaltimoreWashington", "Boise", "Boston", "BuffaloRochester", 
              "California", "Charlotte", "Chicago", "CincinnatiDayton", "Columbus", "DallasFtWorth",
              "Denver", "Detroit", "GrandRapids", "GreatLakes", "HarrisburgScranton", "HartfordSpringfield", "Houston", "Indianapolis", "Jacksonville", "LasVegas", "LosAngeles", "Louisville", "MiamiFtLauderdale", "Nashville", "NewOrleansMobile", "NewYork", "NorthernNewEngland", "Orlando", "Philadelphia", "PhoenixTucson",  "Pittsburgh", "Plains", "Portland", "RaleighGreensboro", "RichmondNorfolk", "Roanoke","Sacramento", "SanDiego", "SanFrancisco", "Seattle", "SouthCarolina", "Spokane", "StLouis", "Syracuse", "WestTexNewMexico")


# Crear un vector con los estados correspondientes en el mismo orden que las ciudades
estados <- c("New York", "Georgia", "Maryland", "Idaho", "Massachusetts", "New York", "California", 
             "North Carolina", "Illinois", "Ohio", "Ohio", "Texas", "Colorado", "Michigan", 
             "Michigan", "Ohaio", "Pennsylvania", "Connecticut", "Texas", "Indiana", 
             "Florida", "Nevada", "California", "Kentucky", "Florida", "Tennessee", 
             "Louisiana", "New York", "New England", "Florida", "Pennsylvania", "Arizona", 
             "Pennsylvania", "Plains", "Oregon", "North Carolina", "Virginia", "Virginia", 
             "California", "California", "California", "Washington", "South Carolina", 
             "Washington", "Missouri", "New York", "Texas")


estados <- tolower(estados)

# Crear un data frame con dos columnas: ciudad y estado
df <- data.frame(ciudad = ciudades, estado = estados)

El dataframe de ciudad y estado se utilizo para agregar el estado al dataframe principal a traves de la funcion merge.

bd5 <- merge(avocado, df, by.x = "region", by.y = "ciudad")

Se creo una nueva tabla que resume el total de volumen por estado y por an~o

bd6 <- bd5 %>% group_by(estado, year) %>% summarize(vol = sum(Total.Volume))
## `summarise()` has grouped output by 'estado'. You can override using the
## `.groups` argument.

Se crea una tabla que incluye la informacion geografica de cada estado

datos_estados <- map_data("state")

Se junta la tabla anterior con la base de datos resumida

datos_combinados <- merge(datos_estados, bd6, by.x = "region",by.y = "estado")

Utilizando ggplot2 se crea una visualizacion que incluye 4 mapas donde cada uno representa un an~o y se esta graficando el volumen vendido por cada estado de forma que podamos ver el cambio por an~o.

ggplot(datos_combinados, aes(x = long, y = lat, map_id = region, fill = vol)) + 
  geom_map(map = datos_estados) + 
  expand_limits(datos_estados) + 
  ggtitle("Volumen por an~o y por estado") +
  theme(plot.title = element_text(hjust = 0.5))+  #opcional, para centrar el titulo 
  facet_wrap(~ year)

2.3 Pronostico de Ventas

A continuacion haremos el modelo y pronostico de las ventas de aguacate para conocer cual ser? el aproximado de ventas dentro de 5 a?os ### 2.3.1 Creacion de la base de datos de series de tiempo

bd_ts = ts(data = bd4$total_sales, start = c(2015,1), end = c(2018,3),frequency = 52)
plot(bd_ts)

2.3.2 Definicion de Modelos

2.3.2.1 Modelo Automatico

Definimos el modelo calculado autom?ticamente por la funcion auto.arima y con una diferenciacion de 1

modelo01 = auto.arima(bd_ts, d=1) #funcion de arima
modelo01
## Series: bd_ts 
## ARIMA(0,1,1)(0,1,0)[52] 
## 
## Coefficients:
##           ma1
##       -0.7823
## s.e.   0.0610
## 
## sigma^2 estimated as 1.055e+13:  log likelihood=-1739.69
## AIC=3483.37   AICc=3483.49   BIC=3488.7

Como podemos observar el modelo nos da una formula que se compone de los siguientes valores: (0,1,1) (0,1,0)

2.3.2.2 Modelo Manual

Definimos ahora el modelo que es calculado de manera manual cambiando los valores y dejando una formula de modelo que es (1,1,2)(0,1,1)

modelo02 = arima(bd_ts, order=c(1,1,2), seasonal=c(0,1,1))
modelo02
## 
## Call:
## arima(x = bd_ts, order = c(1, 1, 2), seasonal = c(0, 1, 1))
## 
## Coefficients:
##           ar1      ma1      ma2     sma1
##       -0.5146  -0.2575  -0.4339  -0.9987
## s.e.   0.7747   0.7508   0.5835   0.3173
## 
## sigma^2 estimated as 4.491e+12:  log likelihood = -1723.73,  aic = 3457.45

2.3.2.3 Comparacion de Modelos

Una vez realizados los dos modelos, pasaremos a compararlos y buscar el que tenga un error de MAPE menor, ya que este error contempla m?s factores por lo tanto para este caso es el m?s indicado

accuracy(modelo01)
##                    ME    RMSE     MAE         MPE     MAPE      MASE
## Training set 58663.05 2639248 1495835 -0.07380228 3.975245 0.2990386
##                     ACF1
## Training set -0.03198297
accuracy(modelo02)
##                   ME    RMSE     MAE         MPE     MAPE      MASE        ACF1
## Training set 24109.2 1730356 1015359 -0.07291565 2.708496 0.5137858 -0.03511192

Al observar el valor del MAPE de ambos modelos, podemos concluir que el mejor modelo fue el segundo (calculado manualmente) con un MAPE menor en 1.27 puntos, por lo que para seguir con el pronostico utilizaremos este modelo.

2.3.3 Pronosticos

En esta seccion realizaremos el pronostico para el modelo seleccionado:

pronostico02 <- forecast(modelo02, level = c(95), h=(52*3))
head(pronostico02)
## $method
## [1] "ARIMA(1,1,2)(0,1,1)[52]"
## 
## $model
## 
## Call:
## arima(x = bd_ts, order = c(1, 1, 2), seasonal = c(0, 1, 1))
## 
## Coefficients:
##           ar1      ma1      ma2     sma1
##       -0.5146  -0.2575  -0.4339  -0.9987
## s.e.   0.7747   0.7508   0.5835   0.3173
## 
## sigma^2 estimated as 4.491e+12:  log likelihood = -1723.73,  aic = 3457.45
## 
## $level
## [1] 95
## 
## $mean
## Time Series:
## Start = c(2018, 4) 
## End = c(2021, 3) 
## Frequency = 52 
##   [1] 41797319 39536316 39326191 41615388 42937032 43285712 43671890 45037082
##   [9] 45655411 45680680 45823751 45890779 46820550 48508434 47513062 47631059
##  [17] 48592094 49669736 48761737 48358306 48803521 49239191 53155265 49993136
##  [25] 50302709 49991260 50648160 50072868 50026828 48122261 50087291 52917109
##  [33] 48093301 47172507 46813154 46227346 46071663 46183787 45209936 44875097
##  [41] 45036582 43187215 42024202 45852627 50195773 43366849 44485089 43734462
##  [49] 43946320 45102173 46029570 46004853 46959427 44654087 44466775 46744233
##  [57] 48071918 48417490 48805268 50169637 50788388 50813440 50956623 51023594
##  [65] 51953394 53641263 52645898 52763892 53724928 54802570 53894571 53491140
##  [73] 53936355 54372025 58288099 55125970 55435543 55124094 55780994 55205702
##  [81] 55159662 53255095 55220125 58049943 53226135 52305341 51945987 51360180
##  [89] 51204497 51316621 50342770 50007931 50169416 48320049 47157036 50985461
##  [97] 55328607 48499683 49617922 48867296 49079154 50235007 51162404 51137687
## [105] 52092261 49786920 49599609 51877067 53204752 53550324 53938102 55302471
## [113] 55921222 55946274 56089457 56156428 57086228 58774096 57778732 57896726
## [121] 58857762 59935404 59027405 58623974 59069189 59504858 63420933 60258804
## [129] 60568377 60256928 60913828 60338536 60292496 58387929 60352959 63182777
## [137] 58358969 57438175 57078821 56493014 56337330 56449455 55475604 55140765
## [145] 55302250 53452883 52289870 56118295 60461441 53632517 54750756 54000130
## [153] 54211988 55367840 56295237 56270521
## 
## $lower
## Time Series:
## Start = c(2018, 4) 
## End = c(2021, 3) 
## Frequency = 52 
##             95%
##   [1,] 36979096
##   [2,] 34593944
##   [3,] 34300392
##   [4,] 36489156
##   [5,] 37721756
##   [6,] 37978149
##   [7,] 38276027
##   [8,] 39553123
##   [9,] 40085366
##  [10,] 40025548
##  [11,] 40084952
##  [12,] 40069434
##  [13,] 40917855
##  [14,] 42525473
##  [15,] 41450909
##  [16,] 41490731
##  [17,] 42374574
##  [18,] 43375972
##  [19,] 42392641
##  [20,] 41914759
##  [21,] 42286373
##  [22,] 42649264
##  [23,] 46493354
##  [24,] 43260011
##  [25,] 43499115
##  [26,] 43117920
##  [27,] 43705774
##  [28,] 43062116
##  [29,] 42948371
##  [30,] 40976740
##  [31,] 42875330
##  [32,] 45639314
##  [33,] 40750262
##  [34,] 39764799
##  [35,] 39341336
##  [36,] 38691965
##  [37,] 38473249
##  [38,] 38522862
##  [39,] 37487001
##  [40,] 37090652
##  [41,] 37191098
##  [42,] 35281186
##  [43,] 34058045
##  [44,] 37826874
##  [45,] 42110708
##  [46,] 35223205
##  [47,] 36282706
##  [48,] 35474890
##  [49,] 35627822
##  [50,] 36736141
##  [51,] 37610260
##  [52,] 37532599
##  [53,] 38197440
##  [54,] 35806121
##  [55,] 35540677
##  [56,] 37737126
##  [57,] 38986344
##  [58,] 39253195
##  [59,] 39563395
##  [60,] 40850590
##  [61,] 41392926
##  [62,] 41342114
##  [63,] 41410070
##  [64,] 41402385
##  [65,] 42258113
##  [66,] 43872466
##  [67,] 42804138
##  [68,] 42849703
##  [69,] 43738837
##  [70,] 44745090
##  [71,] 43766206
##  [72,] 43292383
##  [73,] 43667688
##  [74,] 44033921
##  [75,] 47881021
##  [76,] 44650373
##  [77,] 44891872
##  [78,] 44512785
##  [79,] 45102476
##  [80,] 44460395
##  [81,] 44347978
##  [82,] 42377440
##  [83,] 44276897
##  [84,] 47041532
##  [85,] 42152924
##  [86,] 41167709
##  [87,] 40744303
##  [88,] 40094809
##  [89,] 39875795
##  [90,] 39924944
##  [91,] 38888460
##  [92,] 38491335
##  [93,] 38590855
##  [94,] 36679881
##  [95,] 35455531
##  [96,] 39223044
##  [97,] 43505390
##  [98,] 36616368
##  [99,] 37674058
## [100,] 36864655
## [101,] 37015223
## [102,] 38090512
## [103,] 38966471
## [104,] 38890532
## [105,] 39596525
## [106,] 37210923
## [107,] 36950085
## [108,] 39151274
## [109,] 40404770
## [110,] 40675750
## [111,] 40989790
## [112,] 42280622
## [113,] 42826361
## [114,] 42778748
## [115,] 42849694
## [116,] 42844805
## [117,] 43703140
## [118,] 45319917
## [119,] 44253839
## [120,] 44301484
## [121,] 45192535
## [122,] 46200548
## [123,] 45223271
## [124,] 44750909
## [125,] 45127533
## [126,] 45494947
## [127,] 49343098
## [128,] 46113371
## [129,] 46355668
## [130,] 45977259
## [131,] 46567513
## [132,] 45925882
## [133,] 45813807
## [134,] 43843505
## [135,] 45743097
## [136,] 48507768
## [137,] 43619100
## [138,] 42633731
## [139,] 42210083
## [140,] 41560258
## [141,] 41340829
## [142,] 41389481
## [143,] 40352419
## [144,] 39954640
## [145,] 40053429
## [146,] 38141654
## [147,] 36916426
## [148,] 40683004
## [149,] 44964323
## [150,] 38074257
## [151,] 39130745
## [152,] 38320262
## [153,] 38469323
## [154,] 39526785
## [155,] 40403454
## [156,] 40328170
## 
## $upper
## Time Series:
## Start = c(2018, 4) 
## End = c(2021, 3) 
## Frequency = 52 
##             95%
##   [1,] 46615542
##   [2,] 44478688
##   [3,] 44351989
##   [4,] 46741619
##   [5,] 48152308
##   [6,] 48593276
##   [7,] 49067754
##   [8,] 50521042
##   [9,] 51225455
##  [10,] 51335812
##  [11,] 51562551
##  [12,] 51712125
##  [13,] 52723246
##  [14,] 54491395
##  [15,] 53575215
##  [16,] 53771388
##  [17,] 54809613
##  [18,] 55963500
##  [19,] 55130833
##  [20,] 54801854
##  [21,] 55320669
##  [22,] 55829118
##  [23,] 59817176
##  [24,] 56726261
##  [25,] 57106303
##  [26,] 56864600
##  [27,] 57590547
##  [28,] 57083620
##  [29,] 57105285
##  [30,] 55267782
##  [31,] 57299253
##  [32,] 60194905
##  [33,] 55436340
##  [34,] 54580215
##  [35,] 54284971
##  [36,] 53762727
##  [37,] 53670076
##  [38,] 53844713
##  [39,] 52932872
##  [40,] 52659542
##  [41,] 52882065
##  [42,] 51093244
##  [43,] 49990359
##  [44,] 53878379
##  [45,] 58280838
##  [46,] 51510493
##  [47,] 52687471
##  [48,] 51994035
##  [49,] 52264818
##  [50,] 53468204
##  [51,] 54448880
##  [52,] 54477107
##  [53,] 55721414
##  [54,] 53502053
##  [55,] 53392873
##  [56,] 55751340
##  [57,] 57157492
##  [58,] 57581785
##  [59,] 58047141
##  [60,] 59488683
##  [61,] 60183851
##  [62,] 60284765
##  [63,] 60503176
##  [64,] 60644803
##  [65,] 61648676
##  [66,] 63410059
##  [67,] 62487659
##  [68,] 62678081
##  [69,] 63711019
##  [70,] 64860049
##  [71,] 64022935
##  [72,] 63689897
##  [73,] 64205022
##  [74,] 64710128
##  [75,] 68695177
##  [76,] 65601567
##  [77,] 65979215
##  [78,] 65735403
##  [79,] 66459513
##  [80,] 65951009
##  [81,] 65971345
##  [82,] 64132750
##  [83,] 66163354
##  [84,] 69058354
##  [85,] 64299345
##  [86,] 63442973
##  [87,] 63147671
##  [88,] 62625551
##  [89,] 62533198
##  [90,] 62708298
##  [91,] 61797081
##  [92,] 61524527
##  [93,] 61747977
##  [94,] 59960217
##  [95,] 58858540
##  [96,] 62747878
##  [97,] 67151824
##  [98,] 60382998
##  [99,] 61561787
## [100,] 60869937
## [101,] 61143086
## [102,] 62379501
## [103,] 63358336
## [104,] 63384842
## [105,] 64587997
## [106,] 62362918
## [107,] 62249133
## [108,] 64602860
## [109,] 66004734
## [110,] 66424898
## [111,] 66886413
## [112,] 68324319
## [113,] 69016083
## [114,] 69113800
## [115,] 69329220
## [116,] 69468050
## [117,] 70469317
## [118,] 72228275
## [119,] 71303626
## [120,] 71491967
## [121,] 72522989
## [122,] 73670260
## [123,] 72831538
## [124,] 72497039
## [125,] 73010845
## [126,] 73514769
## [127,] 77498768
## [128,] 74404237
## [129,] 74781086
## [130,] 74536596
## [131,] 75260143
## [132,] 74751190
## [133,] 74771184
## [134,] 72932352
## [135,] 74962821
## [136,] 77857786
## [137,] 73098837
## [138,] 72242619
## [139,] 71947560
## [140,] 71425770
## [141,] 71333831
## [142,] 71509429
## [143,] 70598789
## [144,] 70326889
## [145,] 70551070
## [146,] 68764112
## [147,] 67663314
## [148,] 71553585
## [149,] 75958559
## [150,] 69190776
## [151,] 70370767
## [152,] 69679998
## [153,] 69954653
## [154,] 71208896
## [155,] 72187021
## [156,] 72212872
plot(pronostico02, main = 'Pronostico de Ventas a 3 a?os', xlab = 'Fecha', ylab = 'Ventas Totales')

Y como podemos observar el pronostico sigue la misma tendencia de los datos, este va incrementando pero presenta picos similare a lo largo de los an~os como lo son en las fechas de superbowl que es a mediados de febrero.

3. Recomendaciones

Como podemos observar, la venta de aguacates esta estrechamente relacionado con las fechas de los Super Bowls. El modelo SARIMA tambien demuestra que en las epocas festivas de fin de an~o, alrededor de Navidad. Estos son periodos en donde pareciera que sin importar que, se van a vender mas aguacates. Es por esto que recomendamos que se realicen promociones en las temporadas bajas, con el fin de promover mas el consumo de aguacate durante el verano.

LS0tDQp0aXRsZTogIkF2b2NhZG9zIg0KYXV0aG9yOiAiRXJpY2sgZGUgbGEgQ3J1eiwgQW5nZWxhIGRlIGxhIEdhcnphLCBDaGFyaXZlbCBGZXJtaW4sIERhbmllbCBRdWludGFuaWxsYSINCmRhdGU6ICcyMDIzLTAyLTIzJw0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCiMgMS4gQ29udGV4dG8NCg0KYGBge3IgZWNobz1GQUxTRX0NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJDOlxcVXNlcnNcXGVyaWNrXFxPbmVEcml2ZVxcRXNjcml0b3Jpb1xcVEVDXFxTZW1lc3RyZSA0IExJVCAoOCBzZW1lc3RyZSlcXEdlbmVyYWNpb25cXGF2b2NhZG9ubi5qcGciKQ0KYGBgDQoNCg0KRW4gZXN0ZSByZXBvcnRlIGFuYWxpemFyZW1vcyBsYSBiYXNlIGRlIGRhdG9zIGRlICJBdm9jYWRvIiBsYSBjdWFsIGNvbnRpZW5lIHJlZ2lzdHJvcyBkZSB2ZW50YXMgZW4gdW4gcGVyaW9kbyBzZW1hbmFsIGVtcGV6YW5kbyBlbiAyMDE1IHkgdGVybWluYW5kbyBlbiAyMDE4IGVuIGxvcyBFc3RhZG9zIFVuaWRvcyBkZSBBbWVyaWNhLCBlc3RhIGJhc2UgdGllbmUgaW5mb3JtYWNpb24gY29tbyBlbCB0aXBvIGRlIGFndWFjYXRlIGVsIGN1YWwgcHVlZGUgc2VyIGNvbnZlbmNpYWwgdSBvcmdhbmljbywgYWwgaWd1YWwgcXVlIGxhcyB2ZW50YXMgZGUgbG9zIGRpZmVyZW50ZXMgdGlwb3MgZGUgYWd1YWNhdGUgY29uIFBMVXMgZGUgNDA0NiwgNDIyNSwgNDc3MC4gRHVyYW50ZSBlc3RlIHJlcG9ydGUgcmVhbGl6YXJlbW9zIHVuIGFuYWxpc2lzIGRlIGxvcyBkYXRvcyBwYXJhIGVudGVuZGVyIG1hcyBhbGxhIGxvcyBkYXRvcywgYWwgaWd1YWwgcXVlIG1hcGVhcmVtb3MgbG9zIGFndWFjYXRlIGVuIGVsIG1hcGEgZGUgbG9zIEVzdGFkb3MgVW5pZG9zIHkgdW5hIHZleiBlbnRlbmRpZG8geSB2aXN1YWxpemFkbyBsb3MgYWd1YWNhdGVzIHNvYnJlIGVzdGUgcGFpcywgcmVhbGl6YXJlbW9zIHVuIHByb25vc3RpY28gZGUgdmVudGFzIHBhcmEgbG9zIHByb3hpbW9zIDMgYW5+b3MgZGVzcHVlcyBkZWwgdWx0aW1vIHJlZ2lzdHJvIHNlbWFuYWwgcXVlIHRpZW5lIGxhIGJhc2UgZGUgZGF0b3MgcGFyYSBjb25vY2VyIGNvbW8gcG9kcmlhIGVzdGFyIGxhIGluZHVzdHJpYSBlbiBsb3MgYW5+b3Mgc2lndWllbnRlcyBzaSBlcyBxdWUgZmFjdG9yZXMgZXh0ZXJub3Mgbm8gYWZlY3RhbiB5IHBlcm1pdGUgcXVlIGVsIGFuYWxpc2lzIHNlYSBzYXRpc2ZhY3RvcmlvIHkgcHJlY2lzby4NCg0KIyAyLiBBbmFsaXNpcyBkZSBEYXRvcw0KDQojIyAyLjEgQW5hbGlzaXMgZGUgYmFzZSBkZSBkYXRvcw0KIyMjIDIuMS4xIExpYnJlcmlhcw0KYGBge3IgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkoZm9yZWNhc3QpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeSh0ZXJyYSkNCmxpYnJhcnkoc3BEYXRhKQ0KbGlicmFyeSh0bWFwKQ0KbGlicmFyeShsZWFmbGV0KQ0KbGlicmFyeShnZ21hcCkNCmxpYnJhcnkobWFwcykNCmBgYA0KDQojIyMgMi4xLjIgQ2FyZ2EgZGUgZGF0b3MNCmBgYHtyfQ0KYXZvY2FkbyA8LSByZWFkLmNzdigiQzpcXFVzZXJzXFxlcmlja1xcT25lRHJpdmVcXEVzY3JpdG9yaW9cXFRFQ1xcU2VtZXN0cmUgNCBMSVQgKDggc2VtZXN0cmUpXFxHZW5lcmFjaW9uXFxhdm9jYWRvLmNzdiIpDQpiZCA9IGF2b2NhZG8NCmBgYA0KDQpgYGB7cn0NCmJkID0gYmQgJT4lICByZW5hbWUoVG90YWxfQmFncyA9ICJUb3RhbC5CYWdzIikgJT4lIA0KICByZW5hbWUoU21hbGxfQmFncyA9ICJTbWFsbC5CYWdzIikgJT4lIA0KICByZW5hbWUoTGFyZ2VfQmFncyA9ICJMYXJnZS5CYWdzIikgJT4lIA0KICByZW5hbWUoWExhcmdlX0JhZ3MgPSAiWExhcmdlLkJhZ3MiKSAlPiUNCiAgcmVuYW1lKGRhdGUgPSBmZWNoYSkNCg0KdGliYmxlKGJkKQ0KYGBgDQoNCg0KYGBge3J9DQpiZDIgPSBiZA0KYmQyJGRhdGUgPC0gYXMuRGF0ZShiZDIkZGF0ZSwgJyVkLyVtLyVZJykNCmJkMiRYNDA0NiA9IGFzLmludGVnZXIoYmQyJFg0MDQ2KQ0KYmQyJFg0MjI1ID0gYXMuaW50ZWdlcihiZDIkWDQyMjUpDQpiZDIkWDQ3NzAgPSBhcy5pbnRlZ2VyKGJkMiRYNDc3MCkNCmJkMiRUb3RhbC5Wb2x1bWUgPSBhcy5pbnRlZ2VyKGJkMiRUb3RhbC5Wb2x1bWUpDQp0aWJibGUoYmQyKQ0KI0VzdG9zIG51bWVyb3MgaW5kaWNhbiB1bmlkYWRlcw0KYGBgDQoNCiMjIyAyLjIuMSBCYXNlIGRlIGRhdG9zIFRpbWUgc2VyaWVzDQpBIGNvbnRpbnVhY2lvbiwgZmlsdHJhcmVtb3MgbGEgYmFzZSBkZSBkYXRvcyBhIGRhdG9zIFRvdGFsZXMgZGUgRXN0YWRvcyBVbmlkb3MsIGFsIGlndWFsIHF1ZSBjcmVhcmVtb3MgdW5hIGNvbHVtbmEgcXVlIHNlYSBlbCBUb3RhbCBkZSB2ZW50YXMgeSBsYSBmZWNoYSBwYXJhIHBvZGVyIHJlYWxpemFyIGVsIG1vZGVsbyBkZSBzZXJpZXMgZGUgdGllbXBvIHkgc3UgcHJvbm9zaXRjbw0KYGBge3J9DQpiZDMgPSBiZDINCmJkMyA9IHN1YnNldChiZDMsIHNlbGVjdCA9IGMgKGRhdGUsIEF2ZXJhZ2VQcmljZSwgVG90YWwuVm9sdW1lLCByZWdpb24pKQ0KYmQzID0gYmQzICU+JQ0KICBhZGRfY29sdW1uKHRvdGFsX3NhbGVzID0gKGJkMyRBdmVyYWdlUHJpY2UgKiBiZDMkVG90YWwuVm9sdW1lKSkgJT4lIGZpbHRlcihyZWdpb249PSdUb3RhbFVTJykNCg0KYmQzDQpgYGANCg0KYGBge3J9DQpiZDQgPSBiZDMNCmBgYA0KDQojIyMjIExvb2tpbmcgZm9yIE5Bcw0KYGBge3J9DQpzdW0oaXMubmEoYmQ0KSkNCmBgYA0KUG9kZW1vcyBvYnNlcnZhciBxdWUgZW4gbnVlc3RyYSBiYXNlIGRlIGRhdG9zIG5vIGV4aXN0ZW4gZGF0b3MgdmFjaW9zDQoNCiMjIyMgTG9va2luZyBmb3IgZHVwbGljYXRlcw0KYGBge3J9DQpzdW0oZHVwbGljYXRlZChiZDQpKQ0KYGBgDQpQb2RlbW9zIG9ic2VydmFyIHF1ZSBlbiBudWVzdHJhIGJhc2UgZGUgZGF0b3Mgbm8gZXhpc3RlbiBkYXRvcyBkdXBsaWNhZG9zDQoNCiMjIyMgT3V0bGllcnMNCmBgYHtyfQ0KYm94cGxvdChiZDQkVG90YWwuVm9sdW1lLCBob3Jpem9udGFsID0gVFJVRSkNCnBsb3QoYmQ0JGRhdGUsIGJkNCRUb3RhbC5Wb2x1bWUpDQpgYGANClNlZ3VuIGxhcyBncmFmaWNhcyBzaSBleGlzdGVuIG91dGxpZXJzLCBwZXJvIGFsIHRlbmVyIGVuIGN1ZW50YSBxdWUgZWwgYWd1YWNhdGUgZXMgdW4gcHJvZHVjdG8gcXVlIHNlIHByb2R1Y2UgcG9yIHRlbXBvcmFkYSwgeSBxdWUgaGF5IGV2ZW50b3MgcXVlIGlndWFsIGF1bWVudGFuIHNpZ25pZmljYXRpdmFtbmV0ZSBzdXMgdmVudGFzIChjb21vIGVsIFN1cGVyIEJvd2wpIHByb2NlZGVyZW1vcyBhIGNvbnNpZGVyYXJsb3Mgbm9ybWFsZXMuDQoNCmBgYHtyfQ0KVG9wXzUgPC0gYmQyICU+JSANCiAgZmlsdGVyKHJlZ2lvbiE9J1RvdGFsVVMnKSAlPiUgDQogIHNlbGVjdChUb3RhbC5Wb2x1bWUsIHJlZ2lvbikgJT4lIA0KICBncm91cF9ieShyZWdpb24pICU+JSANCiAgc3VtbWFyaXNlKHN1bWFfdm9sdW1lbl90b3RhbCA9IHN1bShUb3RhbC5Wb2x1bWUpKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhzdW1hX3ZvbHVtZW5fdG90YWwpKQ0KDQpoZWFkKFRvcF81LDUpDQpgYGANCkVuIGVzdGEgdGFibGEgcG9kZW1vcyB2ZXIgYXF1ZWxsYXMgcmVnaW9uZXMgcXVlIGVuIHRvdGFsIHRpZW5lbiBtYXMgdm9sdW1lbi4gRXMgaW50ZXJlc2FudGUgdmVyIGNvbW8gQ2FsaWZvcm5pYSBjb21waXRlIGNvbnRyYSByZWdpb25lcyBlbnRlcmFzLg0KDQpgYGB7cn0NClRvcF81X3ZlbnRhcyA8LSBiZDIgJT4lIA0KICBhZGRfY29sdW1uKHRvdGFsX3NhbGVzID0gKGJkMiRBdmVyYWdlUHJpY2UgKiBiZDIkVG90YWwuVm9sdW1lKSkgJT4lIA0KICBmaWx0ZXIocmVnaW9uIT0nVG90YWxVUycpICU+JSANCiAgc2VsZWN0KHRvdGFsX3NhbGVzLCByZWdpb24pICU+JSANCiAgZ3JvdXBfYnkocmVnaW9uKSAlPiUgDQogIHN1bW1hcmlzZShzdW1hX3NhbGVzX3RvdGFsID0gc3VtKHRvdGFsX3NhbGVzKSkgJT4lIA0KICBhcnJhbmdlKGRlc2Moc3VtYV9zYWxlc190b3RhbCkpDQoNCg0KaGVhZChUb3BfNV92ZW50YXMsNSkNCg0KYGBgDQpZIG1hcyBpbnRlcmVzYW50ZSBlcyB2ZXIgY29tbyBDYWxpZm9ybmlhIGVzIGxhIG51bWVybyB1bm8gZW4gdmVudGFzIHRvdGFsZXMNCg0KYGBge3J9DQpQcmVjaW9zIDwtIGJkMiAlPiUgDQogIGZpbHRlcihyZWdpb24gPT0nQ2FsaWZvcm5pYScgfCByZWdpb24gPT0gJ1dlc3QnKSAlPiUgDQogIHNlbGVjdChBdmVyYWdlUHJpY2UsIHJlZ2lvbikgJT4lIA0KICBncm91cF9ieShyZWdpb24pICU+JSANCiAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKEF2ZXJhZ2VQcmljZSkpDQoNClByZWNpb3MNCmBgYA0KDQpFc3RvIHNlIGV4cGxpY2EgbWVqb3IgY3Vhbm9kIHZlbW9zIHF1ZSBlbCBwcmVjaW8gcHJvbWVkaW8gZGUgQ2FsaWZvcm5pYSBlcyBtYXlvciBhIFdlc3QNCg0KDQoNCiMjIDIuMiBNYXBhDQpFbCBzaWd1aWVudGUgY29kaWdvIGFycm9qYSB1bmEgbGlzdGEgZGUgbGFzIGNpdWRhZGVzIHF1ZSBzZSBlbmN1ZW50cmFuIGVuIGVsIGRhdGFmcmFtZSB5IGRlIGxhcyBjdWFsZXMgc2UgcXVpdGFyb24gYXF1ZWxsYXMgb2JzZXJ2YWNpb25lcyBxdWVyYW4gc3VidG90YWxlcyBvIHRhbGVzIGNvbW8gIldlc3QiIG8gIlRvdGFsX1VTIg0KDQpgYGB7cn0NCmF2b2NhZG8gJT4lIA0KICBkaXN0aW5jdChyZWdpb24pDQpgYGANCg0KRGVzcHVlcywgZGljaGEgbGlzdGEgc2UgY2FyZ28gZW4gdW5hIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHBhcmEgZGFybGUgZm9ybWF0byBkZSB2ZWN0b3IgeSBmYWNpbGl0YXIgbnVlc3RybyB0cmFiYWpvLiBEZXNwdWVzIHNlIGxlIHBpZGlvIGEgZGljaGEgSUEgcXVlIGNyZWFyYSB1biB2ZWN0b3IgcXVlIGNvbnR1dmllcmEgbG9zIGVzdGFkb3MgY29ycmVzcG9uZGllbnRlcyB5IGVzdG9zIGRvcyB2ZWN0b3JlcyBsb3MgdW5pbW9zIGVuIHVuIGRhdGFmcmFtZS4NCg0KYGBge3J9DQojIENyZWFyIHVuIHZlY3RvciBjb24gbG9zIG5vbWJyZXMgZGUgbGFzIGNpdWRhZGVzDQpjaXVkYWRlcyA8LSBjKCJBbGJhbnkiLCAiQXRsYW50YSIsICJCYWx0aW1vcmVXYXNoaW5ndG9uIiwgIkJvaXNlIiwgIkJvc3RvbiIsICJCdWZmYWxvUm9jaGVzdGVyIiwgDQogICAgICAgICAgICAgICJDYWxpZm9ybmlhIiwgIkNoYXJsb3R0ZSIsICJDaGljYWdvIiwgIkNpbmNpbm5hdGlEYXl0b24iLCAiQ29sdW1idXMiLCAiRGFsbGFzRnRXb3J0aCIsDQogICAgICAgICAgICAgICJEZW52ZXIiLCAiRGV0cm9pdCIsICJHcmFuZFJhcGlkcyIsICJHcmVhdExha2VzIiwgIkhhcnJpc2J1cmdTY3JhbnRvbiIsICJIYXJ0Zm9yZFNwcmluZ2ZpZWxkIiwgIkhvdXN0b24iLCAiSW5kaWFuYXBvbGlzIiwgIkphY2tzb252aWxsZSIsICJMYXNWZWdhcyIsICJMb3NBbmdlbGVzIiwgIkxvdWlzdmlsbGUiLCAiTWlhbWlGdExhdWRlcmRhbGUiLCAiTmFzaHZpbGxlIiwgIk5ld09ybGVhbnNNb2JpbGUiLCAiTmV3WW9yayIsICJOb3J0aGVybk5ld0VuZ2xhbmQiLCAiT3JsYW5kbyIsICJQaGlsYWRlbHBoaWEiLCAiUGhvZW5peFR1Y3NvbiIsICAiUGl0dHNidXJnaCIsICJQbGFpbnMiLCAiUG9ydGxhbmQiLCAiUmFsZWlnaEdyZWVuc2Jvcm8iLCAiUmljaG1vbmROb3Jmb2xrIiwgIlJvYW5va2UiLCJTYWNyYW1lbnRvIiwgIlNhbkRpZWdvIiwgIlNhbkZyYW5jaXNjbyIsICJTZWF0dGxlIiwgIlNvdXRoQ2Fyb2xpbmEiLCAiU3Bva2FuZSIsICJTdExvdWlzIiwgIlN5cmFjdXNlIiwgIldlc3RUZXhOZXdNZXhpY28iKQ0KDQoNCiMgQ3JlYXIgdW4gdmVjdG9yIGNvbiBsb3MgZXN0YWRvcyBjb3JyZXNwb25kaWVudGVzIGVuIGVsIG1pc21vIG9yZGVuIHF1ZSBsYXMgY2l1ZGFkZXMNCmVzdGFkb3MgPC0gYygiTmV3IFlvcmsiLCAiR2VvcmdpYSIsICJNYXJ5bGFuZCIsICJJZGFobyIsICJNYXNzYWNodXNldHRzIiwgIk5ldyBZb3JrIiwgIkNhbGlmb3JuaWEiLCANCiAgICAgICAgICAgICAiTm9ydGggQ2Fyb2xpbmEiLCAiSWxsaW5vaXMiLCAiT2hpbyIsICJPaGlvIiwgIlRleGFzIiwgIkNvbG9yYWRvIiwgIk1pY2hpZ2FuIiwgDQogICAgICAgICAgICAgIk1pY2hpZ2FuIiwgIk9oYWlvIiwgIlBlbm5zeWx2YW5pYSIsICJDb25uZWN0aWN1dCIsICJUZXhhcyIsICJJbmRpYW5hIiwgDQogICAgICAgICAgICAgIkZsb3JpZGEiLCAiTmV2YWRhIiwgIkNhbGlmb3JuaWEiLCAiS2VudHVja3kiLCAiRmxvcmlkYSIsICJUZW5uZXNzZWUiLCANCiAgICAgICAgICAgICAiTG91aXNpYW5hIiwgIk5ldyBZb3JrIiwgIk5ldyBFbmdsYW5kIiwgIkZsb3JpZGEiLCAiUGVubnN5bHZhbmlhIiwgIkFyaXpvbmEiLCANCiAgICAgICAgICAgICAiUGVubnN5bHZhbmlhIiwgIlBsYWlucyIsICJPcmVnb24iLCAiTm9ydGggQ2Fyb2xpbmEiLCAiVmlyZ2luaWEiLCAiVmlyZ2luaWEiLCANCiAgICAgICAgICAgICAiQ2FsaWZvcm5pYSIsICJDYWxpZm9ybmlhIiwgIkNhbGlmb3JuaWEiLCAiV2FzaGluZ3RvbiIsICJTb3V0aCBDYXJvbGluYSIsIA0KICAgICAgICAgICAgICJXYXNoaW5ndG9uIiwgIk1pc3NvdXJpIiwgIk5ldyBZb3JrIiwgIlRleGFzIikNCg0KDQplc3RhZG9zIDwtIHRvbG93ZXIoZXN0YWRvcykNCg0KIyBDcmVhciB1biBkYXRhIGZyYW1lIGNvbiBkb3MgY29sdW1uYXM6IGNpdWRhZCB5IGVzdGFkbw0KZGYgPC0gZGF0YS5mcmFtZShjaXVkYWQgPSBjaXVkYWRlcywgZXN0YWRvID0gZXN0YWRvcykNCmBgYA0KDQpFbCBkYXRhZnJhbWUgZGUgY2l1ZGFkIHkgZXN0YWRvIHNlIHV0aWxpem8gcGFyYSBhZ3JlZ2FyIGVsIGVzdGFkbyBhbCBkYXRhZnJhbWUgcHJpbmNpcGFsIGEgdHJhdmVzIGRlIGxhIGZ1bmNpb24gbWVyZ2UuDQoNCmBgYHtyfQ0KYmQ1IDwtIG1lcmdlKGF2b2NhZG8sIGRmLCBieS54ID0gInJlZ2lvbiIsIGJ5LnkgPSAiY2l1ZGFkIikNCg0KYGBgDQpTZSBjcmVvIHVuYSBudWV2YSB0YWJsYSBxdWUgcmVzdW1lIGVsIHRvdGFsIGRlIHZvbHVtZW4gcG9yIGVzdGFkbyB5IHBvciBhbn5vDQoNCmBgYHtyfQ0KYmQ2IDwtIGJkNSAlPiUgZ3JvdXBfYnkoZXN0YWRvLCB5ZWFyKSAlPiUgc3VtbWFyaXplKHZvbCA9IHN1bShUb3RhbC5Wb2x1bWUpKQ0KYGBgDQpTZSBjcmVhIHVuYSB0YWJsYSBxdWUgaW5jbHV5ZSBsYSBpbmZvcm1hY2lvbiBnZW9ncmFmaWNhIGRlIGNhZGEgZXN0YWRvDQoNCmBgYHtyfQ0KZGF0b3NfZXN0YWRvcyA8LSBtYXBfZGF0YSgic3RhdGUiKQ0KYGBgDQoNClNlIGp1bnRhIGxhIHRhYmxhIGFudGVyaW9yIGNvbiBsYSBiYXNlIGRlIGRhdG9zIHJlc3VtaWRhDQoNCmBgYHtyfQ0KZGF0b3NfY29tYmluYWRvcyA8LSBtZXJnZShkYXRvc19lc3RhZG9zLCBiZDYsIGJ5LnggPSAicmVnaW9uIixieS55ID0gImVzdGFkbyIpDQpgYGANCg0KVXRpbGl6YW5kbyBnZ3Bsb3QyIHNlIGNyZWEgdW5hIHZpc3VhbGl6YWNpb24gcXVlIGluY2x1eWUgNCBtYXBhcyBkb25kZSBjYWRhIHVubyByZXByZXNlbnRhIHVuIGFufm8geSBzZSBlc3RhIGdyYWZpY2FuZG8gZWwgdm9sdW1lbiB2ZW5kaWRvIHBvciBjYWRhIGVzdGFkbyBkZSBmb3JtYSBxdWUgcG9kYW1vcyB2ZXIgZWwgY2FtYmlvIHBvciBhbn5vLg0KDQpgYGB7cn0NCmdncGxvdChkYXRvc19jb21iaW5hZG9zLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIG1hcF9pZCA9IHJlZ2lvbiwgZmlsbCA9IHZvbCkpICsgDQogIGdlb21fbWFwKG1hcCA9IGRhdG9zX2VzdGFkb3MpICsgDQogIGV4cGFuZF9saW1pdHMoZGF0b3NfZXN0YWRvcykgKyANCiAgZ2d0aXRsZSgiVm9sdW1lbiBwb3IgYW5+byB5IHBvciBlc3RhZG8iKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSsgICNvcGNpb25hbCwgcGFyYSBjZW50cmFyIGVsIHRpdHVsbyANCiAgZmFjZXRfd3JhcCh+IHllYXIpDQpgYGANCg0KDQojIyAyLjMgUHJvbm9zdGljbyBkZSBWZW50YXMNCkEgY29udGludWFjaW9uIGhhcmVtb3MgZWwgbW9kZWxvIHkgcHJvbm9zdGljbyBkZSBsYXMgdmVudGFzIGRlIGFndWFjYXRlIHBhcmEgY29ub2NlciBjdWFsIHNlcj8gZWwgYXByb3hpbWFkbyBkZSB2ZW50YXMgZGVudHJvIGRlIDUgYT9vcw0KIyMjIDIuMy4xIENyZWFjaW9uIGRlIGxhIGJhc2UgZGUgZGF0b3MgZGUgc2VyaWVzIGRlIHRpZW1wbw0KYGBge3J9DQpiZF90cyA9IHRzKGRhdGEgPSBiZDQkdG90YWxfc2FsZXMsIHN0YXJ0ID0gYygyMDE1LDEpLCBlbmQgPSBjKDIwMTgsMyksZnJlcXVlbmN5ID0gNTIpDQpwbG90KGJkX3RzKQ0KYGBgDQoNCg0KIyMjIDIuMy4yIERlZmluaWNpb24gZGUgTW9kZWxvcw0KIyMjIyAyLjMuMi4xIE1vZGVsbyBBdXRvbWF0aWNvDQpEZWZpbmltb3MgZWwgbW9kZWxvIGNhbGN1bGFkbyBhdXRvbT90aWNhbWVudGUgcG9yIGxhIGZ1bmNpb24gYXV0by5hcmltYSB5IGNvbiB1bmEgZGlmZXJlbmNpYWNpb24gZGUgMQ0KYGBge3J9DQptb2RlbG8wMSA9IGF1dG8uYXJpbWEoYmRfdHMsIGQ9MSkgI2Z1bmNpb24gZGUgYXJpbWENCm1vZGVsbzAxDQpgYGANCkNvbW8gcG9kZW1vcyBvYnNlcnZhciBlbCBtb2RlbG8gbm9zIGRhIHVuYSBmb3JtdWxhIHF1ZSBzZSBjb21wb25lIGRlIGxvcyBzaWd1aWVudGVzIHZhbG9yZXM6ICgwLDEsMSkgKDAsMSwwKQ0KDQojIyMjIDIuMy4yLjIgTW9kZWxvIE1hbnVhbA0KRGVmaW5pbW9zIGFob3JhIGVsIG1vZGVsbyBxdWUgZXMgY2FsY3VsYWRvIGRlIG1hbmVyYSBtYW51YWwgY2FtYmlhbmRvIGxvcyB2YWxvcmVzIHkgZGVqYW5kbyB1bmEgZm9ybXVsYSBkZSBtb2RlbG8gcXVlIGVzICgxLDEsMikoMCwxLDEpDQpgYGB7cn0NCm1vZGVsbzAyID0gYXJpbWEoYmRfdHMsIG9yZGVyPWMoMSwxLDIpLCBzZWFzb25hbD1jKDAsMSwxKSkNCm1vZGVsbzAyDQpgYGANCiMjIyMgMi4zLjIuMyBDb21wYXJhY2lvbiBkZSBNb2RlbG9zDQpVbmEgdmV6IHJlYWxpemFkb3MgbG9zIGRvcyBtb2RlbG9zLCBwYXNhcmVtb3MgYSBjb21wYXJhcmxvcyB5IGJ1c2NhciBlbCBxdWUgdGVuZ2EgdW4gZXJyb3IgZGUgTUFQRSBtZW5vciwgeWEgcXVlIGVzdGUgZXJyb3IgY29udGVtcGxhIG0/cyBmYWN0b3JlcyBwb3IgbG8gdGFudG8gcGFyYSBlc3RlIGNhc28gZXMgZWwgbT9zIGluZGljYWRvDQpgYGB7cn0NCmFjY3VyYWN5KG1vZGVsbzAxKQ0KYWNjdXJhY3kobW9kZWxvMDIpDQpgYGANCkFsIG9ic2VydmFyIGVsIHZhbG9yIGRlbCBNQVBFIGRlIGFtYm9zIG1vZGVsb3MsIHBvZGVtb3MgY29uY2x1aXIgcXVlIGVsIG1lam9yIG1vZGVsbyBmdWUgZWwgc2VndW5kbyAoY2FsY3VsYWRvIG1hbnVhbG1lbnRlKSBjb24gdW4gTUFQRSBtZW5vciBlbiAxLjI3IHB1bnRvcywgcG9yIGxvIHF1ZSBwYXJhIHNlZ3VpciBjb24gZWwgcHJvbm9zdGljbyB1dGlsaXphcmVtb3MgZXN0ZSBtb2RlbG8uDQoNCiMjIyAyLjMuMyBQcm9ub3N0aWNvcw0KRW4gZXN0YSBzZWNjaW9uIHJlYWxpemFyZW1vcyBlbCBwcm9ub3N0aWNvIHBhcmEgZWwgbW9kZWxvIHNlbGVjY2lvbmFkbzoNCmBgYHtyfQ0KcHJvbm9zdGljbzAyIDwtIGZvcmVjYXN0KG1vZGVsbzAyLCBsZXZlbCA9IGMoOTUpLCBoPSg1MiozKSkNCmhlYWQocHJvbm9zdGljbzAyKQ0KYGBgDQoNCg0KYGBge3J9DQpwbG90KHByb25vc3RpY28wMiwgbWFpbiA9ICdQcm9ub3N0aWNvIGRlIFZlbnRhcyBhIDMgYT9vcycsIHhsYWIgPSAnRmVjaGEnLCB5bGFiID0gJ1ZlbnRhcyBUb3RhbGVzJykNCmBgYA0KWSBjb21vIHBvZGVtb3Mgb2JzZXJ2YXIgZWwgcHJvbm9zdGljbyBzaWd1ZSBsYSBtaXNtYSB0ZW5kZW5jaWEgZGUgbG9zIGRhdG9zLCBlc3RlIHZhIGluY3JlbWVudGFuZG8gcGVybyBwcmVzZW50YSBwaWNvcyBzaW1pbGFyZSBhIGxvIGxhcmdvIGRlIGxvcyBhbn5vcyBjb21vIGxvIHNvbiBlbiBsYXMgZmVjaGFzIGRlIHN1cGVyYm93bCBxdWUgZXMgYSBtZWRpYWRvcyBkZSBmZWJyZXJvLg0KDQojIDMuIFJlY29tZW5kYWNpb25lcw0KDQpDb21vIHBvZGVtb3Mgb2JzZXJ2YXIsIGxhIHZlbnRhIGRlIGFndWFjYXRlcyBlc3RhIGVzdHJlY2hhbWVudGUgcmVsYWNpb25hZG8gY29uIGxhcyBmZWNoYXMgZGUgbG9zIFN1cGVyIEJvd2xzLiBFbCBtb2RlbG8gU0FSSU1BIHRhbWJpZW4gZGVtdWVzdHJhIHF1ZSBlbiBsYXMgZXBvY2FzIGZlc3RpdmFzIGRlIGZpbiBkZSBhbn5vLCBhbHJlZGVkb3IgZGUgTmF2aWRhZC4gRXN0b3Mgc29uIHBlcmlvZG9zIGVuIGRvbmRlIHBhcmVjaWVyYSBxdWUgc2luIGltcG9ydGFyIHF1ZSwgc2UgdmFuIGEgdmVuZGVyIG1hcyBhZ3VhY2F0ZXMuIEVzIHBvciBlc3RvIHF1ZSByZWNvbWVuZGFtb3MgcXVlIHNlIHJlYWxpY2VuIHByb21vY2lvbmVzIGVuIGxhcyB0ZW1wb3JhZGFzIGJhamFzLCBjb24gZWwgZmluIGRlIHByb21vdmVyIG1hcyBlbCBjb25zdW1vIGRlIGFndWFjYXRlIGR1cmFudGUgZWwgdmVyYW5vLg0K