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:

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 vinculadas simmer.plot, simmer.optim, simmer.json, y simmer.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: