Victor Manuel Muñoz Tirado - A01423434
Una serie de tiempo es una colección de observaciones sobre un determinado fenómeno, efectuando en momento sucesivos, generalmente espaciados.
Algunos ejemplos de series de tiempo son:
1. Precios de acciones.
2. Niveles de inventario.
3. Rotación de personal.
4. Ventas.
5. PIB(GDP).
Más información:
[link] (https://www5.uva.es/estadmed/datos/series/series1.htm)
#install.packages("forecast")
library(forecast)
Ejemplo
Los datos de producción trimestral inician en el primer trimestre de 2020
Se busca pronosticar la producción de los siguientes 3 trimestres.
produccion <- c(50,53,55,57,55,60)
ts <- ts(data=produccion, start = c(2020,1), frequency=4)
ts
## Qtr1 Qtr2 Qtr3 Qtr4
## 2020 50 53 55 57
## 2021 55 60
ARIMA significa modelo autorregresivo integrado de promedio móvil
arima <- auto.arima(ts, D=1)
summary(arima)
## Series: ts
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 1.5000
## s.e. 0.1768
##
## sigma^2 = 2.01: log likelihood = -2.84
## AIC=9.68 AICc=-2.32 BIC=7.06
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.03333332 0.5787923 0.3666667 0.03685269 0.6429133 0.06111111
## ACF1
## Training set -0.5073047
arima
## Series: ts
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 1.5000
## s.e. 0.1768
##
## sigma^2 = 2.01: log likelihood = -2.84
## AIC=9.68 AICc=-2.32 BIC=7.06
pronostico <- forecast(arima, level=c(95), h=5)
pronostico
## Point Forecast Lo 95 Hi 95
## 2021 Q3 61 58.22127 63.77873
## 2021 Q4 63 60.22127 65.77873
## 2022 Q1 61 58.22127 63.77873
## 2022 Q2 66 63.22127 68.77873
## 2022 Q3 67 63.07028 70.92972
plot(pronostico)
Una serie de tiempo es una colección de observaciones sobre un determinado fenómeno, efectuando en momento sucesivos usualmente espaciados.
Algunos ejemplos de series de tiempo son:
1. Precios de acciones.
2. Niveles de inventario.
3. Rotación de personal.
4. Ventas.
5. PIB(GDP).
Más información:
link (https://www.cepal.org/sites/default/files/courses/files/01_1_conociendo_una_serie_de_tiempo.pdf)
#install.packages("forecast")
library(forecast)
Ejemplo
Los siguientes datos de producción trimestral inician en el primer trimestre de 2020
Se busca pronosticar la producción de los siguientes 3 trimestres
lechita <- read.csv("Ventas_Históricas_Lechitas.csv")
lechita$Ventas <- as.numeric(lechita$Ventas)
ts <- ts(lechita$Ventas, start = c(2017,1), frequency=12)
ts
## 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
## 2018 28463.69 26996.11 29768.20 29292.51 29950.68 30099.17 30851.26 32271.76
## 2019 32496.44 31287.28 33376.02 32949.77 34004.11 33757.89 32927.30 34324.12
## Sep Oct Nov Dec
## 2017 27546.29 28400.37 27441.98 27852.47
## 2018 31940.74 32995.93 32197.12 31984.82
## 2019 35151.28 36133.07 34799.91 34846.17
ARIMA significa modelo autorregresivo integrado de promedio móvil
arima <- auto.arima(ts)
summary(arima)
## Series: ts
## ARIMA(1,0,0)(1,1,0)[12] with drift
##
## Coefficients:
## ar1 sar1 drift
## 0.6383 -0.5517 288.8980
## s.e. 0.1551 0.2047 14.5026
##
## sigma^2 = 202700: log likelihood = -181.5
## AIC=371 AICc=373.11 BIC=375.72
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 25.22163 343.863 227.1699 0.08059942 0.7069541 0.06491041
## ACF1
## Training set 0.2081043
arima
## Series: ts
## ARIMA(1,0,0)(1,1,0)[12] with drift
##
## Coefficients:
## ar1 sar1 drift
## 0.6383 -0.5517 288.8980
## s.e. 0.1551 0.2047 14.5026
##
## sigma^2 = 202700: log likelihood = -181.5
## AIC=371 AICc=373.11 BIC=375.72
pronostico <- forecast(arima, level=c(95), h=12)
pronostico
## Point Forecast Lo 95 Hi 95
## Jan 2020 35498.90 34616.48 36381.32
## Feb 2020 34202.17 33155.29 35249.05
## Mar 2020 36703.01 35596.10 37809.92
## Apr 2020 36271.90 35141.44 37402.36
## May 2020 37121.98 35982.07 38261.90
## Jun 2020 37102.65 35958.91 38246.40
## Jul 2020 37151.04 36005.74 38296.35
## Aug 2020 38564.65 37418.71 39710.59
## Sep 2020 38755.23 37609.03 39901.42
## Oct 2020 39779.03 38632.73 40925.33
## Nov 2020 38741.63 37595.29 39887.97
## Dec 2020 38645.86 37499.50 39792.22
plot(pronostico)
#install.packages("finreportr")
library(finreportr)
Con la función finreportr podemos conseguir la siguiente información:
Companyinfo() = brinda información general como ubicación, ZIP, nombre, etc.
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 10017AnnualReports() = brinda el nombre, fecha y número de acceso.
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-005768GetIncome() = brinda el estado de resultados.
google_income <- GetIncome("GOOG", 2017)GetBalanceSheet() = brinda el balance general.
amazon_balance <- GetBalanceSheet("AMZN", 2015)GetCashFlow() = brinda el flujo de efectivo.
apple_flujo <- GetCashFlow("AAPL", 2014)Integrantes del equipo:
Victor Manuel Muñoz Tirado - A01423434
Vivian Pérez Mosqueda - A01731984
Sebastian Romano Mena - A00831709
library(finreportr)
library(forecast)
CompanyInfo("MSFT")
## company CIK SIC state state.inc FY.end street.address
## 1 MICROSOFT CORP 0000789019 7372 WA WA 0630 ONE MICROSOFT WAY
## city.state
## 1 REDMOND WA 98052-6399
AnnualReports("MSFT")
## filing.name filing.date accession.no
## 1 10-K 2023-07-27 0000950170-23-035122
## 2 10-K 2022-07-28 0001564590-22-026876
## 3 10-K 2021-07-29 0001564590-21-039151
## 4 10-K 2020-07-30 0001564590-20-034944
## 5 10-K 2019-08-01 0001564590-19-027952
## 6 10-K 2018-08-03 0001564590-18-019062
## 7 10-K 2017-08-02 0001564590-17-014900
## 8 10-K 2016-07-28 0001193125-16-662209
## 9 10-K 2015-07-31 0001193125-15-272806
## 10 10-K 2014-07-31 0001193125-14-289961
## 11 10-K 2013-07-30 0001193125-13-310206
## 12 10-K 2012-07-26 0001193125-12-316848
## 13 10-K 2011-07-28 0001193125-11-200680
## 14 10-K 2010-07-30 0001193125-10-171791
## 15 10-K 2009-07-30 0001193125-09-158735
## 16 10-K 2008-07-31 0001193125-08-162768
## 17 10-K 2007-08-03 0001193125-07-170817
## 18 10-K 2006-08-25 0001193125-06-180008
## 19 10-K 2005-08-26 0001193125-05-174825
## 20 10-K 2004-09-01 0001193125-04-150689
## 21 10-K 2003-09-05 0001193125-03-045632
## 22 10-K 2002-09-06 0001032210-02-001351
## 23 10-K 2001-09-18 0001032210-01-501099
## 24 10-K 2000-09-28 0001032210-00-001961
## 25 10-K 1999-09-28 0001032210-99-001375
## 26 10-K 1998-09-25 0001032210-98-001067
## 27 10-K 1997-09-29 0001017062-97-001764
## 28 10-K 1996-09-27 0000891020-96-001130
## 29 10-K 1995-09-25 0000891020-95-000433
## 30 10-K 1994-09-27 0000891020-94-000175
msft_income <- GetIncome("MSFT", 2016)
msft_income2 <- GetIncome("MSFT", 2013)
msft_income3 <- GetIncome("MSFT", 2017)
resultado <- rbind(msft_income,msft_income2,msft_income3)
resultado$startDate <- as.Date(resultado$startDate)
resultado$endDate <- as.Date(resultado$endDate)
resultado$Amount <- as.numeric(resultado$Amount)
resultado_income <- resultado[resultado$Metric=="Revenue, Net",]
ts <- ts(data=resultado_income$Amount, start = c(2013,1), frequency=1)
ts
## Time Series:
## Start = 2013
## End = 2023
## Frequency = 1
## [1] 8.6833e+10 9.3580e+10 8.5320e+10 2.1729e+10 2.2180e+10 2.0531e+10
## [7] 2.0614e+10 2.3201e+10 2.6470e+10 2.0379e+10 2.3796e+10
arima <- auto.arima(ts)
pronostico <- forecast(arima, level=c(95), h=5)
plot(pronostico)