Ir al contenido principal

Tableros en R

dashboards

Los tableros de indicadores (una traducción de la palabra dashboards) han probado ser bastante útiles como medio para presentar un conjunto de cifras, combinando gráficos y tablas.

Utilizando los paquetes flexdashboard y shiny, es posible crear un tablero sin que esto demande un despliegue excesivo de líneas de código, y añadiendo elementos interactivos.

Un Modo de Hacer Tableros

Un archivo flexdashboard, es basicamente un documento rmarkdown, muy usados por su reproducibilidad y porque admiten gran diversidad en el formato de archivos; tienen una estructura básica con una forma como la siguiente:

Si se está trabajando en Rstudio, este formato se obtiene seleccionando:

Luego se escoge la opción:

Para este tablero, añadiré una línea extra ( runtime) al encabezado de esta página (llamado yaml) justo debajo de vertical_layout: fill, y cambiaré la distribución de columnas a filas; además, dado que usaré la serie BJsales (datos contenidos en R desde su instalación) usaré el nombre como titulo. Debe quedar de este modo:

Después del encabezado, inmediatamente debajo , en el espacio señalado con backticks ```{r setup, include=FALSE } es preciso colocar los datos que serán usados:

Para incorporar una columna, se usa el comando 'Column' y al lado se agrega el ancho que tendrá la columna '{.sidebar data-width=200}'. Dado que la distribución será por filas, el ancho de las columnas subsiguientes puede modificarse a 800. Con dos filas, ubicando tres gráficos en la fila superior y uno en la inferior, la distribución quedará de este modo:

Si, en estas condiciones, se pulsa el botón de la parte superior (run document) se obtiene:

Es una superficie que solo muestra los espacios, donde se incluirán los gráficos y algunos dispositivos que faciliten algún tipo de interacción con ellos. Para hacer esto último, es necesario seleccionar aquellos dispositivos (widgets) que se consideren relevantes, según el diseño del tablero que se tenga en mente. La página de shiny tiene amplia información al respecto; en este caso usé los que se muestran a continuación:

Con este último añadido, el tablero adquiere el siguiente aspecto:

Solo serán tres valueBox -- un widget que presenta una cifra como resultado de alguna operación--, en la parte superior y un histograma con un gráfico de línea, en la parte inferior.
El primer valueBox lleva el siguiente código:

La documentación recomienda que aquellos valores que puedan ser modificados o actualizados desde los dispositivos del tablero, estén contenidos en una función llamada reactive. Es decir aquellas operaciones de filtrado o extraer subconjuntos del conjunto de datos, por lo general, demandan que se use este dispositivo del paquete shiny::reactive().
Los siguientes valueBox son:



Finalmente, el gráfico inferior resultó con un código un poco más largo
.
Los valores de la fila superior del tablero, presentan unos iconos (mu, sigma, thumbs-up, etc); a fin de obtener los iconos con letras griegas y poder cambiar los colores de los iconos de pulgares, es necesario crear un archivo .css; el que usé en este caso tiene esta forma:

Simplemente se escribe el codígo correspondiente al icono y se guarda en una carpeta. Recomiendan llamarla www y guardarla en el mismo directorio del archivo del documento flexdashboard ; es necesario escribir en el yaml la ruta y el nombre del archivo .css, si se guarda en el mismo directorio del tablero o panel y se le da por nombre p.e. 'modif', será algo como www/modif.css. Con este procedimiento, se obtiene el tablero con estas características.
También existe la posibilidad, instalando el paquete remotes y posteriormente con remotes::install_github("rstudio/bslib") se obtiene acceso a los themes de bootswatch que permiten cambiar el aspecto general del tablero; para hacerlo funcionar es necesario incluir lineas extra en el encabezado, en este caso usé el theme minty, que parece ser uno de los más populares; también es necesario incluir en el yaml nuevas instrucciones, que, por lo general, giran en torno a lo siguiente:

Al incorporar esto útimo, el aspecto del tablero sería como el gif que aparece al inicio.
En este caso en particular, el tablero resultante solo está pretende ilustrar, de modo muy somero (las páginas de shiny y flexdashboard son las mejores guias), algunas de las multiples capacidades contenidas en estas aplicaciones. Es decir, no está orientado a la interpretación o análisis de este conjunto de datos BJsales. .

Comentarios

Entradas populares de este blog

R: Valores Faltantes en un Data Frame (Missing Values)

Son muy pocas las ocasiones en que las variables de un conjunto de datos están libres de observaciones faltantes ( NAs o missing values ). Es usual que al abordar una data nos interese saber la cantidad de ausencias, y también su caracterización, es decir, si esa ( no respuesta ) obedece a un patrón específico o es atribuible a causas aleatorías. El conteo de valores faltantes por variable, en un data frame, puede realizarse con pocas líneas de código como en el siguiente ejemplo, hecho con una data ficticia y funciones de la familia apply : # datos ficticios set.seed(4363) datos <- replicate(100, sample(c(rchisq(5, runif(1, 1, 100)), NA), 10, replace = TRUE), simplify = FALSE) datos <- do.call(rbind, datos) Luego el total de no respuesta por variable sería: datos <- data.frame(datos) unlist(lapply(datos, function(x) sum(is.na(x)))) # V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 # 18 18 18 15 15 19 14 14 15 14 El paquete magr

R: Simulacion de Variables Correlacionadas

En muchas situaciones suele ser conveniente generar un conjunto de variables con una correlación deseada. Algunos paquetes ofrecen medios para este fin de producir fake data ; pero también es perfectamente posible obtenerlas a través de métodos como la factorización (descomposicion) de Cholesky o la Descomposicion del Valor Singular (SVD: Singular Value Decomposition ). En el paquete de base de R existen funciones para hacer estos cálculos. La factorización de Cholesky, es un método con el que una matriz definida positiva y simetrica, es descompuesta en el producto de dos matrices triangulares (triangular inferior o superior) A = LL' (L es una matriz triangular inferior) A = U'U (U es una matriz triangular superior) siendo U' la traspuesta de U Mientras que la SVD (descomposición de valor singular) es una factorización de la forma: A = UΣV , la cuál generaliza la descomposición de autovalores. La implementación consiste simplemente en obtener el producto entre un vector

Optimizadores y Máximo Verosimil en R.

El proceso mediante el cual se obtienen estimaciones a partir de un conjunto de datos, frecuentemente involucra también un proceso de optimización. En lo más básico, por ejemplo, estimadores como la media o la mediana minimizan la suma de desviaciones al cuadrado y la suma de las desviaciones absolutas respectivamente Generalmente, se admite como un esquema rutinario del trabajo estadístico al momento de indagar sobre algún aspecto atinente a una población, asumir un modelo probabilístico, cuyos parámetros, siendo desconocidos, deben estimarse mediante la obtención de datos y posterior cálculo de los valores que mejor representen la data previamente recolectada. En ese último punto se halla frecuentemente implicada la optimización. La estimación por Máximo Verosimil, es generalmente obtenida mediante la aplicación de optimizadores no lineales, que son algoritmos que, por lo general, minimizan la función que se les pasa como argumento, debido a esto, para maximizar la función de verosi