Software
Para poder utilizar el código expuesto en estos materiales es necesario la instalación de los programas R,7 que actúa como lenguaje de programación, y RStudio.8 que actúa como interfaz, y que se pueden descargar desde:
- R: https://cran.r-project.org/
- RStudio: https://rstudio.com/
Para crear informes directos a partir del código utilizado al programar en R con RStudio se recomienda RMarkdown.9
A continuación se detallan brevemente las librerías especifícas de R utilizadas en este manual. Conviene tenerlas instaladas y actualizadas todas ellas. El conjunto de librerías útiles en Simulación de Procesos y Sistemas son:
tidyverse, en Hadley Wickham et al.10 y Hadley Wickham:11 Es una colección de librerías en R para la ciencia de datos, que comparten una misma filosofía, gramática y estructuras de datos y facilita el tratamiento de datos. Para aprender a utilizar estas librerías es recomendable el libro R for Data Science de Hadley Wickham and Garret Grolemund,12 así como el manual de Malte Grosser.13
simmer, en Iñaki Ucar, Bart Smeets, and Arturo Azcorra,14 Iñaki Ucar and Bart Smeets,15 Iñaki Ucar and Bart Smeets:16 Es una librería R para la simulación de eventos discretos (DES) orientada a procesos. Diseñado para ser un marco genérico como SimPy o SimJulia, aprovecha la potencia de Rcpp para aumentar el rendimiento y hacer factible el DES en R. Como característica destacable, simmer explota el concepto de trayectoria: un camino común en el modelo de simulación para entidades del mismo tipo. Es bastante flexible y sencillo de utilizar, y aprovecha el flujo de trabajo de encadenamiento/conducción introducido por el paquete
magrittr
(Stefan Milton Bache and Hadley Wickham17). También utilizaremos las librerías vinculadassimmer.plot
,simmer.optim
,simmer.json
, ysimmer.mom
.markovchain:18 Librería de R que proporciona clases, métodos y funciones para manejar fácilmente las Cadenas de Markov de Tiempo Discreto (DTMC), realizando análisis probabilísticos y ajustes.
queueing:19 Proporciona una herramienta versátil para el análisis de los modelos de colas markovianos basados en el nacimiento y la muerte y de las redes de colas monoclase y multiclase.
queuecomputer, en Anthony Ebert et al.20 y Anthony Ebert:21 Implementación de un método computacionalmente eficiente para simular colas con tiempos de llegada y servicio arbitrarios.
Las versiones de las librerías de R utilizadas son las siguientes:
## R version 4.1.2 (2021-11-01)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
##
## locale:
## [1] es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/es_ES.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] kableExtra_1.3.4 gridExtra_2.3 sjPlot_2.8.10 rootSolve_1.8.2.3
## [5] queuecomputer_1.1.0 queueing_0.2.12 markovchain_0.8.6 diagram_1.6.5
## [9] shape_1.4.6 simmer.plot_0.1.17 simmer.bricks_0.2.1 simmer_4.4.4
## [13] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.8 purrr_0.3.4
## [17] readr_2.1.2 tidyr_1.2.0 tibble_3.1.6 ggplot2_3.3.5
## [21] tidyverse_1.3.1
##
## loaded via a namespace (and not attached):
## [1] TH.data_1.1-0 minqa_1.2.4 colorspace_2.0-3 ellipsis_0.3.2 sjlabelled_1.1.8
## [6] estimability_1.3 parameters_0.16.0 fs_1.5.2 rstudioapi_0.13 matlab_1.0.2
## [11] fansi_1.0.2 mvtnorm_1.1-3 lubridate_1.8.0 xml2_1.3.3 codetools_0.2-18
## [16] splines_4.1.2 downlit_0.4.0 cachem_1.0.6 knitr_1.37 sjmisc_2.8.9
## [21] jsonlite_1.8.0 nloptr_2.0.0 ggeffects_1.1.1 broom_0.7.12 dbplyr_2.1.1
## [26] effectsize_0.6.0.1 compiler_4.1.2 httr_1.4.2 sjstats_0.18.1 emmeans_1.7.2
## [31] backports_1.4.1 assertthat_0.2.1 Matrix_1.4-0 fastmap_1.1.0 cli_3.2.0
## [36] formatR_1.11 htmltools_0.5.2 tools_4.1.2 igraph_1.2.11 coda_0.19-4
## [41] gtable_0.3.0 glue_1.6.2 Rcpp_1.0.8 jquerylib_0.1.4 cellranger_1.1.0
## [46] vctrs_0.3.8 svglite_2.1.0 nlme_3.1-155 insight_0.16.0 xfun_0.29
## [51] lme4_1.1-28 rvest_1.0.2 lifecycle_1.0.1 MASS_7.3-55 zoo_1.8-9
## [56] scales_1.1.1 hms_1.1.1 parallel_4.1.2 sandwich_3.0-1 expm_0.999-6
## [61] yaml_2.3.4 memoise_2.0.1 sass_0.4.0 stringi_1.7.6 bayestestR_0.11.5
## [66] boot_1.3-28 systemfonts_1.0.4 rlang_1.0.1 pkgconfig_2.0.3 evaluate_0.15
## [71] lattice_0.20-45 tidyselect_1.1.1 magrittr_2.0.2 bookdown_0.24 R6_2.5.1
## [76] generics_0.1.2 multcomp_1.4-18 DBI_1.1.2 pillar_1.7.0 haven_2.4.3
## [81] withr_2.5.0 survival_3.2-13 datawizard_0.2.3 performance_0.8.0 modelr_0.1.8
## [86] crayon_1.5.0 utf8_1.2.2 tzdb_0.2.0 rmarkdown_2.11 grid_4.1.2
## [91] readxl_1.3.1 webshot_0.5.2 reprex_2.0.1 digest_0.6.29 xtable_1.8-4
## [96] RcppParallel_5.1.5 stats4_4.1.2 munsell_0.5.0 viridisLite_0.4.0 bslib_0.3.1
Cargamos las librerías de interés que utilizaremos en este manual.
# librerías
library(tidyverse)
library(simmer)
library(simmer.bricks)
library(simmer.plot)
library(diagram)
library(markovchain)
library(queueing)
library(queuecomputer)
library(rootSolve)
# Librerías de entorno gráfico
library(sjPlot)
library(gridExtra)
library(kableExtra) # y tablas
Configuramos además el tema de los gráficos para que tengan un aspecto más limpio y más fácil de exportar en formato pdf o word. Para ellos utilizamos la función theme_set()
.
Manuales de referencia
Se recomiendan los siguientes manuales para trabajar con R, RStudio y las librerías proporcionadas:
APS 135: Introduction to Exploratory Data Analysis with R.22 Versión electrónica.
R for Data Science.23 Acceso web.
Advanced R.24 Versión online y Versión en español.
Tidyverse Cookbook.25 Versión online incompleta.
ggplot2, part of the tidyverse26 Acceso web.
RMarkdown básico.27 Acceso web.
RMarkdown Cookbook28 Versión online.