Redes neuronales

1. Cargar libreria

library(neuralnet)

2. Ejemplos

examen <- c(20,10,30,20,80,30)
proyecto <- c(90,20,40,50,50,80)
estatus <- c(1,0,0,0,1,1)
df<- data.frame(examen,proyecto,estatus)

3. Generar red neuronal

red_neuronal<- neuralnet(estatus ~., data=df)
plot(red_neuronal, rep = "best")

4. Predecir con la red neuronal

prueba_examen <- c(30,40,85)
prueba_proyecto <- c(85,50,40)
prueba <- data.frame(prueba_examen,prueba_proyecto)

prediccion <- compute(red_neuronal, prueba)
prediccion$net.result
##           [,1]
## [1,] 0.5003136
## [2,] 0.5003136
## [3,] 0.5003136
probabilidad <- prediccion$net.result
resultado<- ifelse(probabilidad>0.5,1,0)
resultado
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1

Redes neuronales cancer de mama

library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:neuralnet':
## 
##     compute
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(neuralnet)
cm<- read.csv("cancer_de_mama.csv")
cm$diagnosis<- ifelse(cm$diagnosis == "M", 1,0)
redne<- neuralnet(diagnosis~., data=cm)
plot(redne, rep = "best")

#prueba_cancer <- cm[c(19,20,21,22,23), ]

#prediccion1 <- compute(redne, prueba_cancer)
#prediccion1$net.result
#probabilidad1 <- prediccion1$net.result
#resultado1<- ifelse(probabilidad1>0.5,1,0)
#resultado1

Series de tiempo

0. Concepto

Una serie de tiempo es una colección de observaciones sobre un determinado fenómeno efectuadas en momentos de tiempo sucesivos, usalmente equiespaciados.

Ejemplos de series de tiempo son: 1. Precio de acciones 2. Niveles de inventario 3. Rotación de empleados 4. Ventas

1. Instalar paquetes y llamar librerias

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

2. Crear la serie de tiempo

# Paso 1. Obtener los valores dependientes 
produccion <- c(50,53,55,57,55,60)

# Paso 2. Agregar los valores anteriores su tiempo correspondiente
serie_de_tiempo <- ts(data=produccion, start = c(2020,1), frequency=4)
serie_de_tiempo
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2020   50   53   55   57
## 2021   55   60

3. Crear modelo ARIMA

# ARIMA: Modelo Autorregresivo Integrado de Media Móvil
# Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de auto-regresión
# d = orden de integración (diferenciación)
# q = orden del promedio móvil
# ¿Cuándo se usa?
# Cuando las estimaciones futuras se explican por los datos del pasado

modelo <- auto.arima(serie_de_tiempo, D=1)
modelo
## Series: serie_de_tiempo 
## 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

4. Realizar el pronóstico

pronostico <- forecast(modelo, 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)

Banco mundial

0. Concepto

El Banco Mundial es una organismo multinacional especializado en finanzas.

1. Instalar paquetes y llamar librerias

library(WDI)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::compute() masks neuralnet::compute()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(wbstats)

2. Crear la serie de tiempo

# Paso 1. Obtener los valores dependientes 
gdp_data <- wb_data(country= "MX", indicator = "NY.GDP.MKTP.CD", start_date = 1973, end_date = 2022)
gdp_data <- select(gdp_data, date, NY.GDP.MKTP.CD)

# Paso 2. Agregar los valores anteriores su tiempo correspondiente
serie_de_tiempo2 <- ts(data=produccion, start = 1973, frequency=1)
serie_de_tiempo2
## Time Series:
## Start = 1973 
## End = 1978 
## Frequency = 1 
## [1] 50 53 55 57 55 60

3. Crear modelo ARIMA

# ARIMA: Modelo Autorregresivo Integrado de Media Móvil
# Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de auto-regresión
# d = orden de integración (diferenciación)
# q = orden del promedio móvil
# ¿Cuándo se usa?
# Cuando las estimaciones futuras se explican por los datos del pasado

modelo <- auto.arima(serie_de_tiempo2, D=1)
modelo
## Series: serie_de_tiempo2 
## ARIMA(0,1,0) 
## 
## sigma^2 = 9.2:  log likelihood = -12.64
## AIC=27.29   AICc=28.62   BIC=26.89

4. Realizar el pronóstico

pronostico2 <- forecast(modelo, level= c(95), h=5)
pronostico2
##      Point Forecast    Lo 95    Hi 95
## 1979             60 54.05497 65.94503
## 1980             60 51.59246 68.40754
## 1981             60 49.70291 70.29709
## 1982             60 48.10995 71.89005
## 1983             60 46.70652 73.29348
plot(pronostico2)