Ejercicio en Clase

Concepto

Una Serie de Tiempo es una coleccion de observaciones sobre un determinado fenómeno, efectuadas en momento sucesivos, usualmente equiespaciados.

Algunos ejemplos de series de tiempo son: 1. Precios de acciones 2. Niveles de inventario 3. Rotacion de Personal 4. Ventas 5. PIB (GDP)

Mas informacion: link

Instalar paquetes y librerias

#install.packages("forecast")
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(readxl)

Crear Serie de Tiempo

Ejemplo: Los siguientes de datos de producción trimestral inician en el primer trimestre de 2020. Se busca pronosticar la producción de los siguientes 5 trimestres

produccion <- c(50,53,55,57,55,60)

ts<-ts(produccion,start = c(2020,1),frequency =  4)
ts
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2020   50   53   55   57
## 2021   55   60

Crear Modelo ARIMA

ARIMA significa AutoRegressive Integrated Moving Average o Modelo Autorregresivo Integrado de Promedio Movil

arima<-auto.arima(ts)
summary(arima)
## Series: ts 
## ARIMA(0,1,0) 
## 
## sigma^2 = 9.2:  log likelihood = -12.64
## AIC=27.29   AICc=28.62   BIC=26.89
## 
## Training set error measures:
##                 ME    RMSE      MAE      MPE     MAPE      MASE       ACF1
## Training set 1.675 2.76895 2.341667 2.933747 4.145868 0.3902778 -0.5152989

Generar el pronóstico

pronostico <- forecast(arima,level=c(95), h=5)
pronostico
##         Point Forecast    Lo 95    Hi 95
## 2021 Q3             60 54.05497 65.94503
## 2021 Q4             60 51.59246 68.40754
## 2022 Q1             60 49.70291 70.29709
## 2022 Q2             60 48.10995 71.89005
## 2022 Q3             60 46.70652 73.29348
plot(pronostico)

Actividad 2

Crear Serie de Tiempo

# Read the Excel file into a data frame
hershey <- read_excel("C:\\Users\\USER\\Documents\\Ventas_Históricas_Lechitas.xlsx")
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...5`
## • `` -> `...6`
# Assuming 'hershey' is your data frame

# Store the second row as column names
new_colnames <- as.character(hershey[2, ])

# Remove the first two rows from the data frame
hershey <- hershey[-(1:2), ]

# Set the new column names
colnames(hershey) <- new_colnames

# Convert 'Ventas' column to numeric
hershey$Ventas <- as.numeric(hershey$Ventas)


ts1<-ts(hershey$Ventas,start =c(2017,1),frequency =12)
ts1
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2017 25520.51 23740.11 26253.58 25868.43 27072.87 27150.50 27067.10 28145.25
##           Sep      Oct      Nov      Dec
## 2017 27546.29 28400.37 27441.98 27852.47

Crear Modelo ARIMA

ARIMA significa AutoRegressive Integrated Moving Average o Modelo Autorregresivo Integrado de Promedio Movil

arima2<-auto.arima(ts1)
summary(arima2)
## Series: ts1 
## ARIMA(1,1,0) with drift 
## 
## Coefficients:
##           ar1     drift
##       -0.8190  292.0193
## s.e.   0.1727  122.4233
## 
## sigma^2 = 608019:  log likelihood = -88.31
## AIC=182.62   AICc=186.05   BIC=183.81
## 
## Training set error measures:
##                     ME     RMSE      MAE        MPE     MAPE MASE      ACF1
## Training set -65.80228 675.2882 575.9571 -0.2638862 2.179851  NaN 0.1402586

Generar el pronóstico

pronostico2 <- forecast(arima2,level=c(95), h=12)
pronostico2
##          Point Forecast    Lo 95    Hi 95
## Jan 2018       28047.46 26519.17 29575.75
## Feb 2018       28418.95 26865.83 29972.07
## Mar 2018       28645.88 26619.37 30672.40
## Apr 2018       28991.21 26912.67 31069.75
## May 2018       29239.57 26864.20 31614.93
## Jun 2018       29567.35 27120.63 32014.07
## Jul 2018       29830.08 27168.41 32491.75
## Aug 2018       30146.08 27401.37 32890.80
## Sep 2018       30418.46 27504.21 33332.71
## Oct 2018       30726.57 27723.23 33729.91
## Nov 2018       31005.41 27860.30 34150.52
## Dec 2018       31308.22 28071.73 34544.71
plot(pronostico2)

Actividad 3. Finanzas Corporativas

library(finreportr)

Con la función de finerportr podemos obtener la siguiente información

  • CompanyInfo() = Brinda información general como Nombre, Ubicación, ZIP, etc.

  • AnnualReports() = Brinda el nombre, fecha y número de acceso

  • GetIncome()= Brinda el Estado de Resultados.

  • GetBalanceSheet() = Brinda el Balance General

  • GetCashFlow() = Brinda el Flujo de Efectivo.

options(HTTPUserAgent = "a a@gmail.com")
CompanyInfo("JPM")
##               company        CIK  SIC state state.inc FY.end     street.address
## 1 JPMORGAN CHASE & CO 0000019617 6021    NY        DE   1231 383 MADISON AVENUE
##          city.state
## 1 NEW YORK NY 10017
AnnualReports("BABA",foreign=TRUE)
##    filing.name filing.date         accession.no
## 1       20-F/A  2024-02-23 0001193125-24-044480
## 2         20-F  2023-07-21 0000950170-23-033752
## 3         20-F  2022-07-26 0001104659-22-082622
## 4         20-F  2021-07-27 0001104659-21-096092
## 5         20-F  2020-07-09 0001104659-20-082409
## 6         20-F  2019-06-05 0001047469-19-003492
## 7         20-F  2018-07-27 0001047469-18-005257
## 8         20-F  2017-06-15 0001047469-17-004019
## 9         20-F  2016-05-24 0001047469-16-013400
## 10        20-F  2015-06-25 0001047469-15-005768
google_income<-GetIncome("GOOG",2016)
amazon_balance <- GetBalanceSheet("AMZN",2015)
apple_cash<-GetCashFlow("AAPL",2014)
LS0tDQp0aXRsZTogIlNlcmllcyBkZSBUaWVtcG8iDQphdXRob3I6ICJHZXJhcmRvIEphdmllciBHYXJ6YSBSYW1pcmV6IC0gQTAxMzgzMjg3Ig0KZGF0ZTogIjIwMjQtMDItMTYiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCi0tLQ0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KDQojIEVqZXJjaWNpbyBlbiBDbGFzZQ0KDQohW10oaHR0cHM6Ly9tZWRpYS5naXBoeS5jb20vbWVkaWEvdEdnTGdUZE5ZVWdFcXUyYUF2L2dpcGh5LmdpZikNCg0KDQojIyBDb25jZXB0bw0KDQpVbmEgKipTZXJpZSBkZSBUaWVtcG8qKiBlcyB1bmEgY29sZWNjaW9uIGRlIG9ic2VydmFjaW9uZXMgc29icmUgdW4NCmRldGVybWluYWRvIGZlbsOzbWVubywgZWZlY3R1YWRhcyBlbiBtb21lbnRvIHN1Y2VzaXZvcywgdXN1YWxtZW50ZQ0KZXF1aWVzcGFjaWFkb3MuDQoNCkFsZ3Vub3MgZWplbXBsb3MgZGUgc2VyaWVzIGRlIHRpZW1wbyBzb246IDEuIFByZWNpb3MgZGUgYWNjaW9uZXMgMi4NCk5pdmVsZXMgZGUgaW52ZW50YXJpbyAzLiBSb3RhY2lvbiBkZSBQZXJzb25hbCA0LiBWZW50YXMgNS4gUElCICgqR0RQKikNCg0KTWFzIGluZm9ybWFjaW9uOiBbbGlua10oaHR0cHM6Ly9yNGRzLmhhZGxleS5uei8pDQoNCiMjIEluc3RhbGFyIHBhcXVldGVzIHkgbGlicmVyaWFzDQoNCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoImZvcmVjYXN0IikNCmxpYnJhcnkoZm9yZWNhc3QpDQpsaWJyYXJ5KHJlYWR4bCkNCmBgYA0KDQojIyBDcmVhciBTZXJpZSBkZSBUaWVtcG8NCg0KKipFamVtcGxvOioqIExvcyBzaWd1aWVudGVzIGRlIGRhdG9zIGRlIHByb2R1Y2Npw7NuIHRyaW1lc3RyYWwgaW5pY2lhbiBlbg0KZWwgcHJpbWVyIHRyaW1lc3RyZSBkZSAyMDIwLiBTZSBidXNjYSBwcm9ub3N0aWNhciBsYSBwcm9kdWNjacOzbiBkZSBsb3MNCnNpZ3VpZW50ZXMgNSB0cmltZXN0cmVzDQoNCmBgYHtyfQ0KcHJvZHVjY2lvbiA8LSBjKDUwLDUzLDU1LDU3LDU1LDYwKQ0KDQp0czwtdHMocHJvZHVjY2lvbixzdGFydCA9IGMoMjAyMCwxKSxmcmVxdWVuY3kgPSAgNCkNCnRzDQpgYGANCg0KIyMgQ3JlYXIgTW9kZWxvIEFSSU1BDQoNCioqQVJJTUEqKiBzaWduaWZpY2EgKkF1dG9SZWdyZXNzaXZlIEludGVncmF0ZWQgTW92aW5nIEF2ZXJhZ2UqIG8gTW9kZWxvDQpBdXRvcnJlZ3Jlc2l2byBJbnRlZ3JhZG8gZGUgUHJvbWVkaW8gTW92aWwNCg0KYGBge3J9DQphcmltYTwtYXV0by5hcmltYSh0cykNCnN1bW1hcnkoYXJpbWEpDQpgYGANCg0KIyMgR2VuZXJhciBlbCBwcm9uw7NzdGljbw0KDQpgYGB7cn0NCnByb25vc3RpY28gPC0gZm9yZWNhc3QoYXJpbWEsbGV2ZWw9Yyg5NSksIGg9NSkNCnByb25vc3RpY28NCmBgYA0KDQpgYGB7cn0NCnBsb3QocHJvbm9zdGljbykNCmBgYA0KDQojIEFjdGl2aWRhZCAyDQoNCiFbXShodHRwczovL21lZGlhLmdpcGh5LmNvbS9tZWRpYS9oa3g0UmJqY0YwTko2L2dpcGh5LmdpZikNCg0KIyMgQ3JlYXIgU2VyaWUgZGUgVGllbXBvDQoNCmBgYHtyfQ0KIyBSZWFkIHRoZSBFeGNlbCBmaWxlIGludG8gYSBkYXRhIGZyYW1lDQpoZXJzaGV5IDwtIHJlYWRfZXhjZWwoIkM6XFxVc2Vyc1xcVVNFUlxcRG9jdW1lbnRzXFxWZW50YXNfSGlzdMOzcmljYXNfTGVjaGl0YXMueGxzeCIpDQojIEFzc3VtaW5nICdoZXJzaGV5JyBpcyB5b3VyIGRhdGEgZnJhbWUNCg0KIyBTdG9yZSB0aGUgc2Vjb25kIHJvdyBhcyBjb2x1bW4gbmFtZXMNCm5ld19jb2xuYW1lcyA8LSBhcy5jaGFyYWN0ZXIoaGVyc2hleVsyLCBdKQ0KDQojIFJlbW92ZSB0aGUgZmlyc3QgdHdvIHJvd3MgZnJvbSB0aGUgZGF0YSBmcmFtZQ0KaGVyc2hleSA8LSBoZXJzaGV5Wy0oMToyKSwgXQ0KDQojIFNldCB0aGUgbmV3IGNvbHVtbiBuYW1lcw0KY29sbmFtZXMoaGVyc2hleSkgPC0gbmV3X2NvbG5hbWVzDQoNCiMgQ29udmVydCAnVmVudGFzJyBjb2x1bW4gdG8gbnVtZXJpYw0KaGVyc2hleSRWZW50YXMgPC0gYXMubnVtZXJpYyhoZXJzaGV5JFZlbnRhcykNCg0KDQp0czE8LXRzKGhlcnNoZXkkVmVudGFzLHN0YXJ0ID1jKDIwMTcsMSksZnJlcXVlbmN5ID0xMikNCnRzMQ0KYGBgDQoNCiMjIENyZWFyIE1vZGVsbyBBUklNQQ0KDQoqKkFSSU1BKiogc2lnbmlmaWNhICpBdXRvUmVncmVzc2l2ZSBJbnRlZ3JhdGVkIE1vdmluZyBBdmVyYWdlKiBvIE1vZGVsbw0KQXV0b3JyZWdyZXNpdm8gSW50ZWdyYWRvIGRlIFByb21lZGlvIE1vdmlsDQoNCmBgYHtyfQ0KYXJpbWEyPC1hdXRvLmFyaW1hKHRzMSkNCnN1bW1hcnkoYXJpbWEyKQ0KYGBgDQoNCiMjIEdlbmVyYXIgZWwgcHJvbsOzc3RpY28NCg0KYGBge3J9DQpwcm9ub3N0aWNvMiA8LSBmb3JlY2FzdChhcmltYTIsbGV2ZWw9Yyg5NSksIGg9MTIpDQpwcm9ub3N0aWNvMg0KcGxvdChwcm9ub3N0aWNvMikNCmBgYA0KDQojIEFjdGl2aWRhZCAzLiBGaW5hbnphcyBDb3Jwb3JhdGl2YXMNCiFbXShodHRwczovL2Nkbi5waXhhYmF5LmNvbS9hbmltYXRpb24vMjAyMy8wNS8wOC8wNi8wNC8wNi0wNC0yNy0yOTBfNTEyLmdpZikNCg0KDQpgYGB7cn0NCmxpYnJhcnkoZmlucmVwb3J0cikNCmBgYA0KDQpDb24gbGEgZnVuY2nDs24gZGUgKmZpbmVycG9ydHIqIHBvZGVtb3Mgb2J0ZW5lciBsYSBzaWd1aWVudGUgaW5mb3JtYWNpw7NuDQoNCi0gICBDb21wYW55SW5mbygpID0gQnJpbmRhIGluZm9ybWFjacOzbiBnZW5lcmFsIGNvbW8gTm9tYnJlLCBVYmljYWNpw7NuLA0KICAgIFpJUCwgZXRjLg0KDQotICAgQW5udWFsUmVwb3J0cygpID0gQnJpbmRhIGVsIG5vbWJyZSwgZmVjaGEgeSBuw7ptZXJvIGRlIGFjY2Vzbw0KDQotICAgR2V0SW5jb21lKCk9IEJyaW5kYSBlbCBFc3RhZG8gZGUgUmVzdWx0YWRvcy4NCg0KLSAgIEdldEJhbGFuY2VTaGVldCgpID0gQnJpbmRhIGVsIEJhbGFuY2UgR2VuZXJhbA0KDQotICAgR2V0Q2FzaEZsb3coKSA9IEJyaW5kYSBlbCBGbHVqbyBkZSBFZmVjdGl2by4NCg0KYGBge3J9DQpvcHRpb25zKEhUVFBVc2VyQWdlbnQgPSAiYSBhQGdtYWlsLmNvbSIpDQpDb21wYW55SW5mbygiSlBNIikNCkFubnVhbFJlcG9ydHMoIkJBQkEiLGZvcmVpZ249VFJVRSkNCmdvb2dsZV9pbmNvbWU8LUdldEluY29tZSgiR09PRyIsMjAxNikNCmFtYXpvbl9iYWxhbmNlIDwtIEdldEJhbGFuY2VTaGVldCgiQU1aTiIsMjAxNSkNCmFwcGxlX2Nhc2g8LUdldENhc2hGbG93KCJBQVBMIiwyMDE0KQ0KYGBgDQoNCg0KDQoNCg==