visualizaciÓn de la informaciÓn estadÍstica utilizando … · europeas deben presentarse “de...
TRANSCRIPT
1
VISUALIZACIÓN DE LA INFORMACIÓN ESTADÍSTICA UTILIZANDO
R-SHINY Y R-MARKDOWN
Noa Veiguela Fernández1, Esther López Vizcaíno, Ana Andión Hermida
Instituto Galego de Estatística
Resumen:
En el Servicio de Difusión e Información del Instituto Galego de Estatística (IGE) tenemos encomendada la tarea, como
su nombre indica, de dar a conocer el trabajo del Instituto. La principal herramienta en esta labor de difusión la
constituye la página web. Desde su creación, hace ya casi dos décadas, ha evolucionado considerablemente,
adaptándose a los desarrollos tecnológicos que han tenido lugar en el campo del diseño web. En los últimos tiempos, a
esta labor continua de adaptación técnica, se han sumado nuevos retos:
Diseñar productos adaptados al público actual, que demanda una web dinámica con la que poder interactuar
La necesidad de automatizar procesos y tareas repetitivas, como la elaboración periódica de informes
Buscar programas que permitan acercarse al diseño web a los estadísticos, sin necesidad de contar con un
conocimiento profundo de los lenguajes de programación HTML, CSS o JavaScript
En esta ponencia presentamos cómo estamos afrontando estos nuevos retos en el IGE. En este Instituto estamos
comprometidos con el desarrollo del software libre R y recurrimos a él siempre que podemos en la difusión de la
información estadística. En esta ocasión nos hemos servido, de nuevo, de dos de sus librerías: R-Shiny y R-Markdown.
La primera permite crear aplicaciones web dinámicas en las que el usuario se comunica con el sistema informativo que
está detrás de la web, obteniendo de ella lo que necesita en cada momento. La segunda librería permite producir
informes en diversos formatos (html, pdf, word), reduciendo enormemente el tiempo de trabajo dedicado a esta labor.
Una de las ventajas de ambas librerías es que, sin contar con un gran bagaje en el diseño web, se pueden crear
páginas web muy completas y vistosas.
Finalmente, aprovechamos la ocasión para presentar una iniciativa que nos está permitiendo dar a conocer al IGE
entre la gente joven: el programa de visitas de escolares. Mediante esta iniciativa, alumnos de ESO y bachillerato de
todo Galicia se acercan cada año a nuestras instalaciones para conocer nuestro trabajo. Sirviéndonos, de nuevo, de la
librería R-Shiny, hemos desarrollado una aplicación informática que, de una forma lúdica y amena, permite a los
alumnos familiarizarse con el uso de datos y fuentes estadísticas.
Palabras clave: web dinámica, automatización procesos, R-Shiny, R-Markdown
1 e-mail: [email protected]
2
1. Introducción
El décimo-quinto principio del “Código de buenas prácticas de las estadística europeas”,
adoptado por el Comité del Sistema Estadístico Europeo, establece que las estadísticas
europeas deben presentarse “de forma clara y comprensible” y difundirse “de forma adecuada
y conveniente”2. El cumplimiento de este principio se evalúa por medio de una serie de
indicadores, uno de los cuales establece que los servicios de difusión deberán utilizar “una
tecnología moderna de información y comunicación, métodos, plataformas y estándares de
datos abiertos”3. Bajo este principio subyace la necesidad de adaptar los contenidos a los
distintos tipos de usuarios que visitan las páginas web de los organismos estadísticas4. En la
actualidad, esta es la herramienta más empleada para difundir los resultados estadísticos y así
se contempla en el principio décimo-quinto del Código. Por tanto, los servicios estadísticos
deben mantener al día sus portales, implementando los últimos desarrollos tecnológicos en el
campo del diseño web e impidiendo su obsolescencia.
Para poder adaptar nuestros contenidos y modos de difusión a los distintos tipos de
usuarios, primero debemos saber cuáles son sus necesidades informativas. Podemos
establecer dos grandes categorías de “oyentes”: el usuario especializado, con experiencia en el
manejo de datos estadísticos y en la navegación por webs de esta índole, y el usuario no
especializado, poco acostumbrado al manejo e interpretación de datos estadísticos. Este
segundo grupo de usuarios busca en las webs de estadística un conocimiento genérico de la
realidad socioeconómica que le rodea y acceder a él de forma sencilla. Además, tanto un
grupo, como otro, demandan cada vez más una web interactiva que les ofrezca herramientas
de consulta y visualización personalizadas.
Al primer grupo de usuarios dirigiremos productos complejos, como la consulta multi-
tabla, que proporciona acceso a las bases de datos donde se almacena la información
estadística para que el usuario se construya su propia tabla de resultados. Se trata de un
formato de difusión abierto en el que la carga de interpretar los resultados estadísticos recae
sobre el propio usuario. Sin embargo, para el segundo grupo de “clientes” puede ser más
recomendable recurrir a un formato de difusión cerrado, que ofrezca los resultados estadísticos
ya tratados, mediante compendios de datos tabulados, acompañados de representaciones
gráficas y de notas explicativas”5. Una tercera vía para difundir la estadística consiste en
combinar las dos anteriores en aplicaciones web dinámicas que permitan al usuario un cierto
2 COMITÉ DEL SISTEMA ESTADÍSTICO EUROPEO (2017), pág. 10.
3 En su redacción original, el Código establecía también como indicador para evaluar el cumplimiento del
principio 15 difundir “copia impresa tradicional” en los casos que requiriesen este formato. En el IGE creemos que ofrecer un archivo descargable, susceptible de ser impreso, puede ser aconsejable en algunos casos que se detallarán en el texto, como en la publicación de informes o resúmenes de resultados. 4 En UNECE (2009), pág. 1, también se pone el énfasis en que el mensaje debe adaptarse al público
objetivo: “la primera decisión importante que debes tomar es elegir con precisión una audiencia: ¿para quién estoy escribiendo? Sencillamente, el público es quien manda. En general, lo que el público quiere es lo que deberías ofrecerle”. 5 VEIGUELA FERNÁNDEZ, Noa (2016), pág. 2.
3
grado de autonomía a la hora de decidir lo que se consulta, pero ofrezcan el resultado de la
misma ya dispuesto en forma de tablas, gráficos y mapas. Además, es recomendable que las
tres vías permitan, en mayor o menor medida, la descarga de la información en formatos que
permitan su almacenaje y su impresión, como las hojas de cálculo o los archivos pdf.
El principio décimo-quinto del Código plantea una serie de retos en la difusión de
estadísticas, difíciles de alcanzar para los organismos de carácter regional, como el Instituto
Galego de Estatística (IGE), cuyas plantillas de trabajadores y trabajadoras son mucho más
modestas que las de los organismos nacionales y supranacionales. Ello obliga al personal de
estos servicios estadísticos a acometer múltiples funciones, entre ellas la del diseño web, más
cercana a la rama de la informática que a la de la estadística. Sin embargo, la necesidad
agudiza el ingenuo y, lejos de rehusar el desafío, en el IGE nos hemos propuesto desarrollar la
web moderna y dinámica que demanda la ciudadanía gallega.
Para acometer las tres vías de difusión mencionadas en el párrafo anterior con la
plantilla de que disponemos, debemos…
Recurrir a automatizar procesos y tareas que se repiten con frecuencia, como la
elaboración periódica de informes de resultados, de forma que se minimice el tiempo y
personal empleado en su redacción.
Buscar programas que permitan acercarse al diseño web a los estadísticos, sin
necesidad de contar con un conocimiento profundo de los lenguajes de programación
HTML, CSS o Javascript.
Y todo ello con un coste económico adicional nulo, por lo que los programas que empleemos
para lograrlo han de ser gratuitos.
En el IGE estamos comprometidos con el desarrollo del software libre R y hemos
recurrido a él para desarrollar varias de las herramientas de difusión de nuestra web. Esta
ponencia versa sobre dos de sus librerías: R-Shiny y R-Markdown. La primera permite crear las
aplicaciones web dinámicas que mencionamos anteriormente. En el capítulo 2 se expondrán
las diversas funcionalidades de esta librería, sirviéndonos de las aplicaciones desarrolladas
para la web del IGE a modo de ejemplo. La segunda produce de forma simultánea informes en
diversos formatos (html, pdf, word). El capítulo 3 se ha dedicado al desarrollo de este paquete;
de nuevo, se expondrán ejemplos de informes realizados con él y difundidos en la web del IGE
para ejemplificar su funcionamiento. Ambas librerías pueden conectarse con las bases de
datos que almacenan la información difundida, de forma que capturen directamente y en
tiempo real los datos almacenados cuando el usuario accede a la aplicación o al informe.
Además, todo lo que contienen (tablas, gráficos, mapas e incluso texto) puede programarse de
forma que muestren la información más actual de una estadística, reduciendo el tiempo que
habría de dedicar una persona a la actualización periódica de informes mensuales o anuales
que requirieran la actualización manual.
Finalmente, y aunque de momento no se ha mencionado en la exposición, no debemos
olvidarnos que existe un tercer grupo de usuarios, si cabe más importante que los anteriores,
pues de ellos depende el futuro de la estadística pública: los jóvenes. Para hacerles llegar
4
nuestro mensaje tenemos que adaptar el nivel de los contenidos a su edad y, por tanto, a su
nivel de conocimiento. Pero también debemos adaptar el continente, sirviéndonos también
tanto de informes como de aplicaciones web, pero dotándolos de mayor vistosidad e
interactividad; o bien, envolviéndolas en un entorno lúdico que, mediante el juego, les acerque
a nuestra rama de estudio. El cuarto capítulo de la ponencia narra las iniciativas emprendidas
en el seno del IGE para lograr captar la atención del público joven. Aprovechamos también el
foro que nos brindan las JECAS para presentar el programa de visitas de institutos al IGE.
2. Aplicaciones web dinámicas con R-Shiny
Shiny es un paquete perteneciente al software libre R que permite crear aplicaciones
web dinámicas, sin necesidad de disponer de conocimientos avanzados en el campo del
diseño web. Una aplicación dinámica es aquella en la que el usuario, además de recibir
información a través de la web, puede interactuar con ella. ¿Cómo? Por medio de la
introducción de widgets: elementos gráficos que permiten que el usuario se comunique con el
sistema de información que está “detrás” de la web (como cajas para introducir texto, listas de
elementos, botones o iconos que representan acciones, etc.). De hecho, se trata de sistemas
de entrada-salida (input-output), cuyo funcionamiento requiere necesariamente la formulación
de una petición al servidor (si se trata de una caja de texto, que se escriba una palabra o
conjunto de palabras; si se trata de un listado de elementos, que se selecciones uno de ellos; si
se trata de un botón que permite realizar una acción, que se lo presione, etc.); esto es lo que se
conoce como entrada o input, en terminología inglesa. Una vez formulada la petición, el
resultado mostrado se conoce como salida o output. En la imagen 2.1 se muestra un ejemplo
sencillo de widget, en el que el usuario debe decidir qué mapa visualizar del listado que se
pone a su disposición.
En la pasada edición de las JECAS tuvimos ocasión de presentar una ponencia que
versaba sobre el funcionamiento de esta librería6. Ello nos permite, en esta ocasión, dedicar
menos espacio a la explicación del funcionamiento de la misma y centrarnos en las novedades
que hemos introducido en nuestras aplicaciones web con Shiny desde 2016. Con todo,
comenzamos este capítulo con una sucinta descripción sobre las funcionalidades y primeros
pasos con Shiny, que servirá de guía al lector no familiarizado con esta librería7.
Para programar una aplicación interactiva con Shiny, desde las más simples (como la de
la imagen 2.1), hasta las más elaboradas, debemos crear un directorio de trabajo en nuestro
ordenador, en el que colocaremos tres elementos:
Un archivo de texto (ui.R), que contendrá el código que permite la visualización de
widgets y otros elementos en la página web, así como el código que controla el diseño
6 VEIGUELA FERNÁNDEZ, Noa (2016).
7 La descripción ofrecida aquí se puede completar revisando la ponencia mencionada en la nota a pie de
página anterior.
5
y aspecto de la aplicación: la disposición de los elementos a lo largo y ancho de la
página, los colores, el tipo de letra, etc.
Un archivo de texto (server.R), que contendrá las instrucciones que necesita el servidor
para construir los distintos objetos que se muestran en la aplicación web: tablas,
gráficos, mapas, diagramas, etc..
Una carpeta (www) donde alojar físicamente los archivos que se visualizarán en la
aplicación o que se necesitan para crear los objetos mencionados en el punto anterior:
imágenes, bases de datos, etc.
Imagen 2.1. Widget para la visualización de mapas del PIB, PIB por habitante y de la
estructura del VEB por municipios y comarcas
Fuente: imagen extraída de la aplicación de consulta web del PIB municipal y comarcal de Galicia
(http://www.ige.eu/Shiny/PIB_muni/)
A continuación, instalamos las últimas versiones disponibles de R y de RStudio, abrimos
este último programa y nos situamos en nuestro directorio de trabajo. Es necesario, además,
instalar todas las librerías que se empleen en la construcción de la aplicación, entre ellas,
Shiny, e invocarlas en los archivos ui.R y server.R (library(shiny)). El primer archivo debe
comenzar por la sentencia shinyUI(fluidPage()) y el segundo por la sentencia
shinyServer(function(input,output){}). El código restante debe escribirse dentro de los
paréntesis que acompañan a la función fluidPage en el primer caso y dentro de las llaves que
acompañan a la función function(input,output) en el segundo. Una vez hecho esto, podemos
empezar a crear la aplicación. Para ello, R-Shiny ofrece distintos comandos o funciones, en
función de lo que se desee introducir, que se pueden agrupar en cuatro bloques:
6
Funciones para crear los elementos que solicitan al usuario la entrada de valores o su
interacción (o widgets, como mencionamos más arriba): existen distintos tipos de
widgets; los más empleados se muestran en la imagen 2.2: actionButton,
checkboxGroupInput, dateInput, dateRangeInput, fileInput, numericInput, radioButtons,
selectInput, sliderInput, textInput, etc.
Imagen 2.2. Listado de los diferentes widgets que permite crear R-Shiny
Fuente: imagen extraída del tutorial sobre R-Shiny disponible en el siguiente enlace: http://shiny.rstudio.com/tutorial/
Sentencias de creación de objetos web: determinan el tipo de objeto que devolverá el
servidor; R-Shiny permite crear imágenes, tablas, gráficos, etc., tanto estáticos como
dinámicos, que permiten la navegación a través de ellos. A parte de los objetos que
ofrece la propia librería, existen otras muchas que disponen de extensiones
implementadas para su funcionamiento en R-Shiny: renderImage, renderPlot,
renderTable, renderDataTable (para introducir tablas creadas con la librería DT),
renderText, renderUI, renderGvis (para introducir gráficos creados con la librería
googleVis), renderVisNetwork (diagramas creados con visNetwork), renderPlotly
(gráficos con Plotly), renderLeaflet (mapas con Leaflet), etc.
Sentencias de introducción de objetos web: una vez creado el elemento con las
funciones del bloque anterior, las de este grupo permiten que se visualice en la web.
Casi cada sentencia de creación tiene su correlato en las funciones de introducción:
imageOutput, plotOutput, tableOutput, dataTableOutput, textOutput, uiOutput,
htmlOutput, visNetworkOutput, plotlyOutput, etc.; así, por ejemplo, si empleamos la
librería R-Leaflet para crear un mapa dinámico, el código de creación debe incluirse
dentro de la función renderLeaflet(); el mapa resultante se incrusta en la página web
por medio del comando leafletOutput().
7
Funciones que definen la interfaz gráfica de usuario; en este grupo se encuentran los
comandos para crear la estructura básica de la web donde se irán insiriendo los
widgets: dividirla en bloques, en columnas, en sub-páginas que permitan la navegación
del usuario, etc.; algunas de las funciones más útiles de este bloque son headerPanel,
mainPanel, tabPanel, tabsetPanel, sidebarLayout, sidebarPanel, navbarPage,
navlistPanel, etc8. Estas funciones no son estrictamente necesarias para crear una
aplicación web pero son muy útiles para personalizarla y embellecerla.
Para funcionar correctamente, cada una de los widgets creados con R-Shiny debe contar con
al menos un comando perteneciente a cada uno de los tres primeros bloques: una función para
crear el input (el elemento donde el usuario debe formular su petición), una función para crear
el output y una función para que este se insiera en la aplicación web.
Tabla 2.3. Código de creación del widget de selección de mapas para la aplicación del PIB
municipal y comarcal de Galicia
Archivo ui.R Archivo server.R
radioButtons("mapa","Escolle un mapa”,
c("Taxa de variación (%) do PIB entre 2010 e 2012
municipal",
"Taxa de variación (%) do PIB entre 2010 e 2012
comarcal",
"Índice do PIB por habitante municipal (Galicia=100).
Ano 2012",
"Índice do PIB por habitante comarcal (Galicia=100).
Ano 2012",
"Especialización produtiva das comarcas. Ano 2012",
[... el código continua] ))
imageOutput("imaxe1")
output$imaxe1 <- renderImage({
if (is.null(input$mapa)) return(NULL)
if (input$mapa == "Taxa de variación (%) do PIB
entre 2010 e 2012 municipal")
{return(list(src = "www/mapa11.png",
contentType = "image/png"))}
else if (input$mapa == "Taxa de variación (%) do PIB
entre 2010 e 2012 comarcal")
{return(list(src = "www/mapa12.png",
contentType = "image/png"))}
else if [... el código continúa] }, deleteFile = FALSE)
Fuente: elaboración propia a partir del código interno de creación de la aplicación de consulta web del PIB municipal y
comarcal de Galicia (http://www.ige.eu/Shiny/PIB_muni/)
Por ejemplo, el widget que se muestra en la imagen 2.1 se ha creado por medio de la
función radioButtons() (consultar el código en tabla 2.3); en esta sencilla aplicación, se ofrecen
una serie de mapas que condensan la información disponible a nivel municipal y comarcal en el
Sistema de Cuentas Económicas de Galicia. En este widget el usuario selecciona el mapa que
quiere visualizar pulsando sobre uno de los elementos del listado; su solicitud (input) se
almacena en un objeto interno al que hemos dado el nombre de mapa. Por medio de la función
renderImage({}) creamos un segundo objeto, imaxe1, donde vinculamos cada una de las
posibles solicitudes con uno de los archivos guardados en la carpeta www (que son las
8 En el siguiente enlace se encuentra la descripción de cada una de las funciones comentadas, así como
el listado completo de todos los comandos de la librería R-Shiny: https://shiny.rstudio.com/reference/shiny/1.1.0/
8
imágenes de los mapas). Así, si el usuario selecciona el elemento “Taxa de variación (%) do
PIB entre 2010 e 2012 municipal” (input$mapa==”Taxa de variación (%) do PIB entre 2010 e
2012”), en imaxe1 se guardará el objeto mapa11.png. Finalmente, para que esta imagen se
muestre es necesario introducirla en la aplicación por medio de la sentencia
imageOutput(“imaxe1”).
El ejemplo utilizado para explicar el funcionamiento de R-Shiny corresponde a una de las
primeras aplicaciones web diseñadas con esta librería. Como se puede comprobar, se trata de
un diseño muy básico que hemos ido puliendo con el paso del tiempo, gracias también a la
aparición de nuevas funcionalidades y librerías que interactúan con Shiny. Y es que, desde el
2016, el número de usuarios de este paquete se ha incrementado de forma exponencial,
nutriéndola con nuevas aportaciones que han contribuido a su mejora. De todas ellas, nos
gustaría destacar las siguientes:
El desarrollo de nuevas funciones dentro del paquete Shiny
La aparición de librerías que permiten introducir mapas y gráficos dinámicos, de gran
calidad visual, como las ya mencionadas R-Leaflet y R-Plotly
La posibilidad de introducir directamente código javascript en Shiny con Shinyjs
Para ilustrar en qué consisten estos avances, nos vamos a servir de una de las últimas
aplicaciones creadas para la web del IGE. Se trata de un test interactivo, dirigido a estudiantes
de ESO y Bachillerato, sobre las características socio-económicas del municipio en el que
residen9. Como se aprecia en la imagen 2.4, cuando acceden a la aplicación, aparece un mapa
de Galicia con la delimitación de los 313 municipios que la conforman en la actualidad. El
escolar debe pulsar sobre su localidad y, automáticamente, accede a un listado de 10
interrogantes que debe resolver. Cuando responde de forma acertada a una pregunta, la
animación que aparece en el margen derecho de la aplicación (imágenes 2.5 y 2.6) cambia y
muestra una cara feliz; por el contrario, cuando se equivoca al responder, la animación se
transforma en un emoticono triste. También se muestra la solución a la respuesta, junto con un
apartado para ampliar conocimientos sobre el tema tratado en la pregunta (imagen 2.6).
La aplicación se ha diseñado de forma que resulte vistosa y atrayente al público joven,
con colores fuertes, emoticonos en movimiento y botones que permiten al estudiante comenzar
de nuevo, ampliar u ocultar la información que desee. Además, las cuestiones del test no están
referidas a un momento concreto del tiempo, sino que se actualizan de forma automática para
ofrecer el dato más reciente disponible en la web del IGE para cada cuestión: la aplicación
conecta de forma autónoma con las bases de datos en las que se aloja la información
estadística publicada, sin que deban mediar para ello ni informáticos ni estadísticos. Esto es,
una vez hecha e introducida en el servidor web, no es necesario ningún trabajo rutinario de
mantenimiento.
En las imágenes siguientes se ofrecen algunas pinceladas del código que está por
detrás de la aplicación. Por ejemplo, para crear el mapa de municipios se ha utilizado la librería
9 En el capítulo 4 de la ponencia volvemos a referirnos a esta aplicación web, cuando hablemos sobre el
programa de visitas de escolares al IGE.
9
R-Leaflet; este paquete permite personalizar estos objetos de múltiples formas: añadirles
sucesivas capas con información, ventanas emergentes (pop-ups) que se muestran al pasar el
cursor por encima de una delimitación geográfica, marcadores para resaltar un espacio
concreto, botones para alejar/acercar el mapa o modificar su aspecto, etc. R-Leaflet también
permite añadir acciones al mapa, es decir, eventos que ocurren cuando el usuario pulsa sobre
una zona del mapa (map click event). Con esta funcionalidad y los comandos observeEvent() e
insertTab()10
de R-Shiny hemos desarrollado el widget que aparece en la imagen 2.4: cuando el
usuario pulsa sobre un determinado espacio geográfico, la pestaña de selección del municipio
da paso a una nueva pestaña en la que aparece el test con las 10 preguntas que debe
responder el alumno. Además, a nivel interno, al realizar esta acción, la aplicación almacena el
código que representa el municipio seleccionado en un objeto virtual (BDInput0). Este código lo
empleamos para filtrar la información referida al espacio solicitado en las bases de datos del
IGE y personalizar el test para este espacio concreto.
Veamos un ejemplo de ello: en la imagen 2.6 aparece una pirámide de población referida
al municipio de Ribadeo, ayuntamiento seleccionado por nuestro hipotético alumno para
realizar el test. Para crear este gráfico hemos empleado la librería R-Plotly (en el cuadro 2.8 se
detallan los comandos empleados). Al pulsar sobre este espacio en el mapa, en el objeto
BDInput0 se almacena el valor 27051, que es el código que identifica a Ribadeo en las bases
de datos que almacenan la información difundida por el IGE. A continuación, acudimos a la
web y descargamos la población de los distintos municipios de Galicia (objeto Pregunta4),
cruzada por sexo y grupo de edad, en formato csv. El objeto BDInput0 nos permite filtrar
únicamente la información referida a Ribadeo (creando el objeto tb1). Posteriormente, mediante
una serie de comandos que no se detallan en el cuadro 2.7 (por falta de espacio), creamos un
data.frame (objeto tb2) con los datos listos para representar. Una vez creada la representación,
personalizamos su color, sus ejes, la leyenda, etc., con los múltiples comandos que provee R-
Plotly para ello. Además, por medio de las etiquetas hoverinfo=’text’ y text=~abs_pop,
definimos las etiquetas que aparecerán cuando el alumno sitúe el cursor sobre la pirámide,
indicándole el número de hombres o de mujeres que representa cada una de las barras del
gráfico.
Finalmente, para proporcionarle al alumno la posibilidad de comenzar de nuevo el test,
hemos introducido un botón (“Se queres comezar de novo, preme aquí”), al que hemos
asociado la función location.reload() de Javascript, que permite refrescar la página web
(imagen 2.5). Para crear los botones que permiten mostrar información adicional u ocultarla (“?
Máis información” y “Preme aquí para ocultar a información”) también se ha recurrido a la
librería Shinyjs, que permite introducir directamente código Javascript en la aplicación (imagen
2.6).
10
El comando observeEvent() permite asociar la realización de una determinada acción en respuesta a un evento; la función insertTab() introduce una nueva pestaña en la aplicación web.
10
Imagen 2.4. Widget para la selección del municipio sobre el que versará el test en la aplicación interactiva dirigida a escolares
Resultado Código
Fuente: imagen extraída de la aplicación Canto sabes do teu concello??? (http://www.ige.eu/Shiny/Test_personalizado_concellos/)
Mapa realizado con R-Leaflet, introduciendo además
la capa de OpenStreetMap de fondo
Widget de selección de municipio, realizado
mediante la herramienta map click event
subministrada en la librería R-Leaflet y las funciones
observe_event() e insertTab() de R-Shiny: al pulsar,
la pestaña de selección del municipio da paso a una
nueva pestaña en la que aparece un test con 10
preguntas que el alumno debe responder, referidas
al municipio seleccionado…
observeEvent(input$mapa_base_shape_click,
{inserTab(inputId=”test”,
tabPanel(“Test sobre o teu concello”))
[… el código continúa]}
11
Imagen 2.5. Pestaña con el test de 10 preguntas referidas al municipio seleccionado por el alumno
Resultado Código
Fuente: imagen extraída de la aplicación Canto sabes do teu concello??? (http://www.ige.eu/Shiny/Test_personalizado_concellos/)
Widget que permite al alumno comenzar de nuevo el
test: al presionar sobre el botón, se refresca la
página web, desaparece la pestaña “Test sobre o teu
concello” y se vuelve al comienzo de la aplicación
(esto es, a la pestaña de selección del municipio). Se
ha realizado combinando código Javascript (para lo
cual es necesario instalar la librería Shinyjs) con las
funciones observeEvent() y removeTab() (permite
eliminar pestañas de la aplicación)
jscode <- "shinyjs.refresh = function() { location.reload(); }"
useShinyjs()
extendShinyjs(text=jscode,functions=”refresh”),
actionButton(“limpar”,”Se queres comezar de novo, preme aquí”)
observeEvent(input$limpar,{
js$refresh();
removeTab(inputId=”test”,target=”Test sobre o teu
concello”)})
12
Imagen 2.6. Pestaña con el test de 10 preguntas referidas al municipio seleccionado por el alumno
Resultado Código
Fuente: imagen extraída de la aplicación Canto sabes do teu concello??? (http://www.ige.eu/Shiny/Test_personalizado_concellos/)
observeEvent(input$signo_interrogacion_4,{
showElement(“texto_signo_interrogacion_4”)})
useShinyjs(),
acctionButton(“signo_interrogacion_4”,”Máis información”),
hidden(div(id=”texto_signo_interrogacion_4”,
h4(“Poboación por grupos de idade”),
h4(“2017”),
h5(“Unidade: porcentaxe (%)”),
plotlyOutput(“GRAFICO4_1”),
[…]))
observeEvent(input$ocultar_texto_signo_interrogacion_4,{
hideElement(“texto_signo_interrogacion_4”)})
13
Cuadro 2.7. Comandos empleados para la creación de la pirámide de población que se
muestra en la imagen 2.6, referida al municipio de Ribadeo
output$GRAFICO4_1 <- renderPlotly({
Pregunta4 <- read.csv("http://www.ige.eu/igebdt/igeapi/csv/datos/5230/T[1:0]", header=TRUE)
View(Pregunta4)
tb1 <- subset(Pregunta4,Pregunta4$CodEspazo==BDInput0())
[… continúa el código]
View(tb2)
tb2 <- tb1
tb2 %>% plot_ly(x=~Poboacion,y=~Idade,color=~Sexo, colors=c("#0051BA","#703572")) %>%
add_bars(orientation='h',hoverinfo='text',text=~abs_pop) %>%
layout(bargap=0.1,barmode='overlay',
xaxis=list(tickmode='array',tickvals=c(-10,-5,0,5,10),ticktext=c('10%','5%','0%','5%','10%')),
yaxis=list(tickmode='array',tickvals=~Idade, ticktext=c("0-4","5-9","10-14","15-19","20-24","25-29",
"30-34","35-39","40-44","45-49","50-54","55-59","60-64","65-69","70-74","75-79","80-84","85 e máis")),
legend = list(orientation="h",xanchor="center",x=0.5,y=-0.5)) })
Fuente: código empleado en la elaboración de la aplicación Canto sabes do teu concello???
(http://www.ige.eu/Shiny/Test_personalizado_concellos/)
14
3. Automatización de informes periódicos con R-Markdown
Las notas de prensa o los informes de resultados son, a menudo, el método empleado
por los organismos estadísticos para comunicar las principales conclusiones de una operación
estadística. Su objetivo es ofrecer una visión global y resumida de lo que se difunde y van
dirigidos a un público no especializado, no familiarizado con el uso y extracción de datos
estadísticos de una web y/o que necesita inmediatez (como los medios de comunicación). Para
cumplir con esta función y resultar atractivo al público, los resúmenes de resultados no deben
ser demasiado extensos, deben ser claros y sencillos de leer; además, conviene acompañar el
texto de tablas y gráficos que faciliten la comprensión de los datos estadísticos. Como se
señala en la guía “Cómo hacer comprensibles los datos”, elaborada por la Comisión Económica
para Europa de las Naciones Unidas, “un comunicado de prensa eficaz es aquel que: cuenta
una historia acerca de los datos; […]; llama la atención del lector rápidamente con un título o
una imagen; es fácil de entender, interesante y a menudo entretenido” 11
(entre otros
requisitos).
En el IGE difundimos resúmenes de resultados en formato web, esto es, implementados
para su visualización directa en la web mediante la combinación de lenguaje HTML y código
Javascript. Con anterioridad a esta forma de difusión, empleábamos el formato pdf. Decidimos
modificar el modo en que realizábamos y difundíamos los resúmenes porque los primeros
presentan, frente a los segundos, dos ventajas importantes:
Son publicaciones dinámicas, esto es, se nutren directamente de las bases de datos
donde se almacena la información estadística, por lo que siempre están actualizados:
si cambia el dato en la base de datos también lo hace en el informe12
.
La programación de los resúmenes se ha realizado de forma que las tablas y los
gráficos muestren el último dato disponible en la base de datos que está por detrás; por
tanto, no es necesario volver a realizarlas cuando se quiere difundir un nuevo ámbito
temporal; sólo es necesario cambiar el texto que acompaña a las tablas y gráficos (que
es estático). Esto permite ahorrar tiempo13
.
Ahora bien, con el cambio en el formato de difusión, se ha perdido la principal ventaja de los
resúmenes pdf, que consiste en que estos se pueden descargar, guardar e imprimir en formato
papel. Se trata de una foto fija de la operación estadística en un momento concreto del tiempo
de la que, en ocasiones, puede ser necesario guardar una copia.
Dado que ambas formas de realizar informes presentan pros y contras, ¿no deberíamos
combinar ambas? Es decir, ¿y si existiese algún modo de realizar simultáneamente
publicaciones en formato html y en formato pdf? Más aún, ¿y si pudiesen implementarse de tal
forma que, “con darle a un botón”, el informe cambiase para mostrar los datos de un mes
posterior? Ello nos permitiría ahorrar mucho tiempo y esfuerzo a la hora de elaborar informes.
11
COMISIÓN ECONÓMICA PARA EUROPA DE LAS NACIONES UNIDAS (UNECE) (2009), pág. 1. 12
VEIGUELA FERNÁNDEZ, Noa (2016), pág. 2 13
En MARTÍN VILA, María; LÓPEZ VIZCAÍNO, Esther; CALVO OCAMPO, Esther (2014), págs. 17-23, encontrarán más información sobre la difusión de resúmenes e informes de resultados en formato web.
15
En el IGE, la respuesta a este interrogante la hemos encontrado acudiendo a la librería
Markdown. Perteneciente al software libre R, se trata de un paquete que provee una serie de
funciones que permiten elaborar informes, con elementos, tanto estáticos como dinámicos, y
reproducirlos en distintos formatos (entre ellos, pdf, word y html). No exige disponer de
conocimientos avanzados sobre los lenguajes de programación web HTML, CSS y el código
Javascript. Se puede interconectar con las bases de datos que se encuentran por detrás de las
webs estadísticas y escribir el código de tal forma que todo lo que se muestra en el informe
(tablas, gráficos, y también texto) se actualice cuando los datos sufren variaciones o se
incorpora un ámbito temporal al sistema informativo. Y, al igual que R-Shiny, permite la
introducción de objetos diseñados con otras librerías, como gráficos con R-Plotly o mapas con
R-Leaflet.
Sin pretender ser una guía de uso de R-Markdown, en lo que resta de capítulo
ahondaremos en su utilización. Y como es habitual en nuestra forma de proceder, nos
apoyaremos en diversos resúmenes de resultados realizados para la web del IGE, como
ejemplos de lo que se puede hacer con esta librería. Antes de comenzar, es necesario anticipar
una serie de particularidades a tener en cuenta cuando se trabaja con R-Markdown.
El primer paso consiste en crear un archivo con extensión .Rmd. En el IGE empleamos
el programa RStudio para elaborar, tanto las aplicaciones web con Shiny como los informes
con Markdown, pues posee una interfaz de usuario gráfica que facilita la programación en R,
aunque no es indispensable. Una vez creado este archivo, el siguiente paso consistiría en
definir los elementos que figurarán en el encabezado del informe (título del mismo, fecha de
publicación, etc.); el formato del archivo de salida (html, pdf, word; también ofrece salidas para
Latex, entre otras); la introducción de un índice o tabla de contenidos, si se desea; y la
definición de los parámetros que se emplearán en el informe, acompañados del valor que
recibirán cuando se procese el código. La introducción de parámetros dota de gran dinamismo
al documento y permite ahorrar tiempo. Supongamos que redactamos una nota de prensa en la
que se hacen sucesivas referencias al año de publicación de la estadística. Si establecemos
como parámetro el año y, en lugar de escribir su valor en el texto hacemos mención al
parámetro que lo representa, la próxima vez que se publique el informe nos ahorraremos el
tener que cambiar de forma manual el valor del año; bastará con cambiar la definición del
parámetro. En el ejemplo que se muestra en la imagen 3.1 se percibe más claramente la ayuda
que supone la introducción de parámetros.
16
Imagen 3.1. Fragmento del resumen de resultados elaborado para la operación Encuesta estructural a hogares. Cuidado de menores y conciliación familiar y
código empleado en su elaboración
Resultado Código
--- title: "Enquisa estrutural a fogares. Coidado de menores e conciliación familiar" output: html_document: toc: yes toc_depth: '4' date: "Resumo de resultados 20/07/2018" params: ano: 2017 --- <hr> #### Introdución A [Enquisa estrutural a fogares (EEF)]( http://www.ige.eu/web/mostrar_actividade_estatistica.jsp?idioma=gl&codigo=0205002) é unha actividade estatística anual dirixida aos fogares galegos co obxecto de obter información sobre as súas características socioeconómicas. Consta de dúas partes: unha primeira de carácter xeral que se repite todos os anos, deseñada para recoller información sobre variables básicas, e unha segunda de carácter específico. No ano `` `r params$ano` `` un dos módulos específicos está dedicado ao coidado de menores e a conciliación familiar. En concreto, recóllese información sobre, entre outros, os seguintes puntos: * O tempo que os menores ata 12 anos pasan en garderías ou escolas * Os servizos adicionais que utilizan (comedor, apertura antes do horario escolar, etc.) * Medidas e solucións que adoptan os pais á hora de conciliar a súa vida laboral co coidado dos nenos, incluíndo os coidados proporcionados por outras persoas (avós, etc.) <hr> #### Asistencia a centros de educación infantil de 1º ciclo En Galicia, no ano `` `r params$ano` ``, había 32.311 nenos e nenas que asistían a centros de educación infantil de primeiro ciclo (garderías, escolas infantís, etc.), o que supón o 49,29% do total de nenos e nenas nesta etapa. A asistencia media a estes centros foi de 24,76 horas semanais.
Fuente: imagen extraída de la versión web del informe
(https://www.ige.eu/estatico/html/gl/ecv/PDF/Resumo_resultados_EEF_Coidado_menores_2017.pdf)
17
R-Markdown posee una sintaxis propia para definir los elementos comentados en el
párrafo anterior. Así, el título debe figurar entrecomillado y precedido del código title:; con la
fecha de publicación sucede algo similar (debe entrecomillarse y escribirse a continuación de
date:). La introducción del índice se realiza por medio del código toc: yes, y con la terminología
toc_depth: “4” se especifican las líneas de código que figurarán en el mismo; por ejemplo, el
número 4 hace mención a los encabezados de tipo 4, que son aquellas líneas de texto que
figuran precedidas de cuatro almohadillas (####); estas son las que se trasladarán al índice
como títulos de capítulo. La definición de parámetros requiere la introducción del código
params:, seguido del nombre del parámetro y el valor. Finalmente, el formato de salida se
especifica con el código output: html_document (archivo html), output: pdf_document (archivo
pdf), output: word_document (archivo word), etc. En el siguiente enlace puede consultarse la
hoja de ayuda rápida de la librería R-Markdown, donde se detalla buena parte de la sintaxis
propia de esta librería: https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-
cheatsheet.pdf
El siguiente punto a tratar es establecer la hoja de estilos del informe, esto es, el formato
del texto y demás elementos que lo componen. El paquete R-Markdown ofrece unas hojas de
estilo por defecto para los distintos formatos de salida, que se pueden alterar de tres formas
distintas:
Crear una propia y forzar a que el programa la utilice al procesar el informe mediante
las sentencias html_document: css: hoja_estilo.css (para salida en html, donde el
término hoja_estilo es el nombre del archivo en que figura la nueva hoja de estilos a
aplicar), word_document: reference_docx: hoja_estilo.docx (la forma de cambiar el
formato de salida en pdf es más complicado, por lo que no profundizaré en esta
ponencia en él).
Introducir modificaciones en las hojas de estilo que emplea R-Markdown por defecto.
En el caso de publicaciones en formato web, se pueden definir los estilos dentro del
propio informe, empleando código CSS y situándolos dentro del comando <style
type=”text/css”> </style>.
Además, R-Markdown ofrece atajos para formatear de forma rápida algunos elementos del
texto, como incluir títulos, poner palabras en negrita o en cursiva, hacer listas de términos, etc.
(en la ayuda rápida a la que se accede por medio del enlace introducido en el párrafo anterior
se especifica la sintaxis más habitual para dar formato al texto). Si el archivo procesado tiene la
extensión .html, también se pueden emplear los comandos propios de este lenguaje.
Una vez definidos los elementos de cabecera del informe y el formato del mismo, el
penúltimo paso consistiría en “ponerse a escribir”; es decir, elaborar el informe propiamente
dicho. El texto se introduce de forma directa, sin necesidad de emplear ningún código de
programación, excepto cuando se desee hacer mención a un parámetro, que debe introducirse
de la siguiente forma: `` `r params$nombre` `` (donde el término nombre es el nombre definido
para el parámetro en el encabezado del informe). Además, R-Markdown permite incorporar al
texto fragmentos de código para la creación de objetos que faciliten la comprensión del texto,
18
como imágenes, tablas, gráficos o mapas, entre otros. Los fragmentos de código deben
incorporarse dentro de la siguiente sintaxis: ```{r} código ```; R-Markdown ejecuta el código
introducido e incorpora al informe los resultados de la ejecución. Esta, a su vez, puede
personalizarse por medio de una serie de argumentos (que irán dentro de las llaves), para, por
ejemplo, hacer que se muestre el código empleado además del resultado de su ejecución, o los
avisos de error que pudieran surgir, o los comentarios que acompañan al código, etc.
Tabla 3.2. Parámetros empleados para definir qué debe hacer R-Markdown con los fragmentos
de código introducidos
Parámetro Valor por defecto
Efecto producido
eval TRUE Indica si se va a evaluar el código e incluir los resultados
echo TRUE Indica si se muestra el código además de los resultados
warning TRUE Indica si se muestran las advertencias, de existir, al procesar el código
error FALSE Indica si se muestran los mensajes de error, de existir, al procesar el código
message TRUE Indica si se muestran los comentarios generados por el programa al procesar el código
comment ‘##’ Carácter que se empleará para realizar comentarios sobre el código
Fuente: extraído de la ayuda rápida disponible en el tutorial web de R-Markdown (https://www.rstudio.com/wp-
content/uploads/2015/02/rmarkdown-cheatsheet.pdf)
Existen un sinfín de librerías para el diseño de objetos, cuyo código se puede incorporar
en documentos elaborados con Markdown. En las imágenes 3.3 y 3.4 se muestran dos
ejemplos. En el primero aparecen una tabla y un gráfico realizados con los paquetes R-Knitr (y
su extensión R-kableExtra) y R-Plotly, respectivamente; en el segundo, un mapa creado con la
librería R-Leaflet. En los tres objetos (tabla, gráfico y mapa), los datos introducidos proceden de
la web del IGE, que permite la descarga de información en formato .csv, .json y .json-stat14
. En
estos ejemplos se ha utilizado el primero de estos formatos (.csv) y se han descargado las
tablas completas, con todos los años disponibles; posteriormente, recurriendo a los parámetros
introducidos al comienzo del informe, se han filtrado los datos, seleccionando únicamente los
referidos al período a visualizar en el informe. ¿Por qué descargar toda la información
disponible y no sólo la referida al año en estudio? Porque ello nos va a permitir, cuando se
añada un nuevo período en la tabla de la web del IGE, actualizar los objetos simplemente
cambiando el valor definido para el parámetro.
14
Más información en MARTÍN VILA, María; LÓPEZ VIZCAÍNO, Esther; CALVO OCAMPO, Esther (2014), págs. 12-16. A la zona de descarga de información de la web del IGE se accede desde https://www.ige.eu/web/mostrar_paxina.jsp?paxina=004015&idioma=gl
19
Imagen 3.3. Fragmento del resumen de resultados elaborado para la operación Encuesta estructural a hogares. Cuidado de menores y conciliación familiar y
código empleado en su elaboración
Resultado Código
**Nenos e nenas na etapa de 1º ciclo de educación infantil que son coidados unicamente polos seus pais. Galicia. Ano `` `r params$ano` ``** *Unidade: persoas, %* ```{r results="asis",echo=FALSE,message=FALSE,warning=FALSE} library(reshape2) library(knitr) library(kableExtra) ht5995 <- read.csv("https://www.ige.eu/igebdt/igeapi/csv/datos/5995") names(ht5995) <- c("Variable","Medidas","CodTempo","Tempo","CodEspazo","Espazo",
"DatoN","DatoT") ht5995$Variable_ord <- ifelse(ht5995$Variable=="Total",0,2) ht5995$Variable_ord <- ifelse(ht5995$Variable=="Asisten a centros de 1º ciclo de educación
infantil",1,ht5995$Variable_ord) tabla1 <- subset(ht5995,ht5995$CodTempo==params$ano & ht5995$Medidas=="Número",
select=c("Variable_ord","Variable","Medidas","DatoN")) tabla1 <- dcast(tabla1,Variable_ord+Variable~Medidas) kable(tabla1[,-1],"html",align=c('l','r'),escape = FALSE) %>% kable_styling("striped",full_width = FALSE) ``` ```{r results="asis",echo=FALSE,message=FALSE,warning=FALSE} library(plotly) names(tabla1) <- c("Variable_ord","Variable","Numero") tabla1 <- subset(tabla1, tabla1 $Variable_ord!=0) grafico1 <- plot_ly(tabla1,labels=~Variable,values=~Numero,type="pie", textinfo = 'percent', insidetextfont = list(color='#E5E5E5'), marker=list(colors=c("#26686D","C6A00C"), line=list(color='#FFFFFF',width=1)), sort=FALSE) %>% layout(width=400,height=300,margin= list(l=25,r=25,t=100,b=50,pad=4), xaxis=list(showgrid=FALSE,zeroline=FALSE,showticklabels=FALSE), yaxis=list(showgrid=FALSE,zeroline=FALSE,showticklabels=FALSE), showlegend=TRUE,legend=list(orientation = 'v',x=0.1,y=1.4)) grafico1 ``` *Fonte: IGE. Enquisa estrutural a fogares. Coidado de menores e conciliación familiar [(descarga da táboa)](http://www.ige.eu/igebdt/esqv.jsp?ruta=verPpalesResultados.jsp?OP=1&B=1&M=&COD=5995&R=0[all]&C=T[1:0];1[1]&F=&S=998:12&SCF=)*
Fuente: imagen extraída de la versión web del informe
(https://www.ige.eu/estatico/html/gl/ecv/PDF/Resumo_resultados_EEF_Coidado_menores_2017.pdf)
20
Imagen 3.4. Fragmento del resumen de resultados elaborado para la operación Carga de población estacional de los municipios de Galicia y código
empleado en su elaboración
Resultado Código
**Primeiro trimestre** ```{r results="asis",echo=FALSE,message=FALSE,warning=FALSE} library(dplyr) library(reshape2) library(leaflet) ht9043 <- read.csv("http://www.ige.eu/igebdt/igeapi/csv/datos/9043/T[all:t],1:4:5") ###Objeto almacenado en una carpeta de trabajo con la capa base del mapa de Galicia dividida en
municipios y transformaciones necesarias para modificar las coordenadas de cada espacio a la proyección utm-29
concellos=readShapeSpatial("D:/Mis documentos/Servizo de Difusión/Comunicados html/RMarkdown/www/Concellos_314_F_region.shp",proj4string=CRS("+proj=utm +zone=29"))
concellos <- spTransform(concellos,CRS("+init=epsg:4326")) sd_pob <- subset(ht9043,as.numeric(substring(ht9043$CodTempo,1,4))==params$ano &
as.numeric(substring(ht9043$CodTempo,5))==13 & ht9043$CodEspazo>15000 & ht9043$Medida=="Saldo poboacional",select=c("CodEspazo","Espazo","DatoN"))
sd_pob <- merge(concellos, sd_pob, by.x="COD_MUN2",by.y="CodEspazo") bins <- c(-2500,-900,0,1000,3000,18100) cores_mapa <- c("#0051BA","#7FA8DC","#EEE2B6","#D7BC55","#C6A00C") pal <- colorBin(cores_mapa,domain=sd_pob$DatoN,bins=bins) labels <- paste(paste(sd_pob$Espazo,": ",sep=""),
paste(format(sd_pob$DatoN,big.mark=".",decimal.mark=",")," persoas",sep=""),sep="\n") mapa1 <- leaflet(width=450) %>% addTiles() %>% addProviderTiles(providers$OpenStreetMap) %>% setView(lng=-8.05,lat=42.8,zoom=7) %>% addPolygons(data=sd_pob,fillColor=~pal(sd_pob$DatoN),stroke = TRUE,
weight=1,color="blue",dashArray="",fillOpacity = 0.7, highlight=highlightOptions(weight=5, color="#666",dashArray="",fillOpacity=0.7, bringToFront=TRUE), label=labels, labelOptions=labelOptions(style=list("font-weight"="normal",padding="3px 8px"), textsize="15px",direction="auto")) %>%
addLegend(pal=pal,values=sd_pob$Trim1,opacity = 1, labFormat = labelFormat(big.mark=".",prefix="(",between=",",suffix="]"))
mapa1 ```
Fuente: imagen extraída de la versión web del informe
(http://www.ige.eu/estatico/estatRM.jsp?c=0201001008&ruta=html/gl/OperacionsEstruturais/Resumo_resultados_Carga_poboacion.html)
21
Finalmente, una vez redactado, hay que proceder a generar el informe. Si se trabaja con
RStudio, la generación se lleva a cabo presionando la tecla Knitr (que aparece en la barra de
tareas del recuadro de inserción de código) y seleccionando el formato de salida (Knit to HTML,
Knit to PDF, Knit to Word). Cuando se presiona este botón, R-Markdown procesa todo lo que
figura en el archivo .Rmd, ejecutando los trozos de código incrustados en el documento e
introduciendo los resultados en el mismo; cuando finaliza la etapa de procesamiento, genera
una vista previa del informe en el formato solicitado (html, pdf o word) y, al mismo tiempo,
guarda una copia del archivo en la carpeta de trabajo.
4. El programa de visitas escolares al IGE
En los capítulos anteriores hemos centrado nuestra atención en el desarrollo de
herramientas que faciliten la labor de transmitir la estadística a través de las páginas web.
Hemos hecho hincapié en que el mensaje debe adecuarse al oyente al que va dirigido, en
especial cuando se trata del público más joven: si logramos que el usuario se familiarice con
nuestra disciplina desde pequeño, que entienda lo que hay detrás de los datos, a manejarlos e
interpretarlos correctamente, la estadística pública dejará de ser esa rama oscura de las
matemáticas que nadie entiende y a quien a nadie atrae.
Sin afán de convertirnos ni en educadores ni en docentes, en el IGE creamos hace años
un portal educativo dirigido a estudiantes de secundaria y de bachillerato. Esta herramienta
nació con el objetivo de servir de apoyo al profesorado en sus explicaciones, poniendo a su
disposición una serie de unidades didácticas que versan sobre aspectos de la estadística
matemática y descriptiva, la economía y la geografía. Al mismo tiempo, se buscaba acercar al
público joven a la realidad socioeconómica de Galicia y las distintas unidades territoriales que
la componen (comarcas, municipios, grandes ciudades); con este fin, se dotó a las unidades
didácticas de un buen número de ejemplos prácticos, en los que se utilizan datos reales
tomados de la web del IGE. Poco a poco el portal educativo fue creciendo en contenidos, y hoy
día cuenta con distintos apartados que completan la información aportada por las unidades
didácticas, así como un bloque de carácter lúdico con puzles, juegos, chistes, acertijos, etc.,
diseñados para que los estudiantes se diviertan con la estadística.
Para dar a conocer el portal educativo entre el profesorado y el alumnado gallego, el IGE
puso en marcha hace unos diez años un programa de visitas escolares, en el que se invita al
colectivo docente a conocer nuestras instalaciones, a nuestro personal y nuestra labor. El
pasado curso académico doce centros de secundaria de toda Galicia y el alumnado de la
Facultad de Ciencias de la Educación de Santiago (el programa se ha ampliado para acoger
también al ámbito universitario) visitaron la sede del IGE; en total, han sido unos 331 alumnos
los que se han acercado a conocer nuestro trabajo entre septiembre de 2017 y junio de 2018.
Esta cifra es un poco inferior a la alcanzada en el curso 2016-2017 pero, como se aprecia en la
tabla 4.1, está muy por encima del valor con el que cerramos el curso 2013-2014 (fecha en la
que se comenzó a guardar registro de estas visitas).
22
Tabla 4.1. Estadística de centros y alumnos acogidos al Programa de visitas escolares al IGE
CURSO ACADÉMICO NÚMERO DE CENTROS NÚMERO DE ALUMNADO
2013-2014 7 197
2014-2015 11 279
2015-2016 7 181
2016-2017 13 363
2017-2018 13 331
Fuente: extraído del registro interno del IGE
La visita dura unas dos horas; comienza con una presentación sobre la articulación de la
estadística pública en Europa y el papel que juega el IGE en este entramado, a cargo del
personal de dirección. A continuación las compañeras del Servicio de Difusión e Información
muestran los contenidos del portal educativo; en esta parte de la visita, los estudiantes tienen a
su disposición ordenadores para que puedan seguir en primera persona el recorrido que la
ponente va trazando por los diferentes contenidos del portal. De esta forma, el alumnado siente
que forma parte de la explicación, que no actúa como un mero ollente y conseguimos captar su
atención. Solemos comenzar este bloque de la visita retándolos a que respondan a las diez
preguntas del test desarrollado con R-Shiny del que se habló en el apartado 2 de la ponencia:
“Canto sabes do teu concello?”. A continuación les explicamos en qué consisten las unidades
didácticas, para qué sirven y cómo se estructuran. Y, para cerrar con “buen sabor de boca”,
finalizamos este bloque de la visita divirtiéndonos con uno de los juegos del apartado de
estadística recreativa del portal.
Cuando termina la labor del Servicio de Difusión e Información, es turno de que los
compañeros informáticos les enseñen las “tripas” del Instituto; esto es, la sala de máquinas
donde se encuentran los servidores sin los cuales no sería posible almacenar toda la
información estadística que provee y difunde el IGE. Finalmente, la visita concluye con una
parada en la sala de encuestación; aquí, el personal de Trabajos de Campo les explican cómo
obtenemos los servicios estadísticos buena parte de los datos que necesitamos para realizar
nuestra labor, por medio de encuestas, haciendo hincapié en cuán importante es la
colaboración ciudadana en esta labor. Y como la práctica es la mejor forma de interiorizar un
conocimiento, se les propone un juego en el que uno de los estudiantes actúa como
entrevistador y otro como encuestado.
Aunque quizá sea pronto para saber si se está logrando el fin con el que nació el
programa de visitas, la experiencia de estos diez años es halagüeña. Prueba de ello es que el
número de visitas va en aumento y muchos centros repiten de un curso para otro. Algunos,
ante la incapacidad de poder acercarse a las instalaciones del IGE, nos han pedido que
seamos nosotros quienes vayamos a visitarlos; y así lo hemos hecho en un par de ocasiones el
curso pasado. La experiencia ha sido enriquecedora para el alumnado y el profesorado, pero
también para el personal del IGE. Nos está sirviendo para conocer qué demanda la juventud de
23
nosotros, cómo desea que nos comuniquemos con ellos, para validar el funcionamiento de
nuestra página web y las nuevas aplicaciones y funcionalidades que le hemos ido incorporando
con los años; y también para darnos cuenta de las carencias con las que aún contamos.
5. Conclusiones.
A lo largo de la ponencia se ha puesto de manifiesto la necesidad de adaptar los
contenidos de la web del IGE a los distintos tipos de usuarios que la consultan, así como los
formatos de difusión. Se definen tres tipos de usuarios: especializados (con facilidades a la
hora de interpretar datos estadísticos y habilidades en la navegación por las webs de esta
índole), no especializados (con un conocimiento general de nuestra rama de estudio y no
duchos en el tratamiento de datos) y el público joven. Se han presentado dos formatos de
difusión web adaptados a las necesidades de cada grupo: las aplicaciones web y los informes
de resultados.
En ambos casos se ha recurrido al software de código abierto R en su elaboración; en
particular, a la librería Shiny, que permite crear aplicaciones web dinámicas, y al paquete
Markdown, que facilita la elaboración e implementación de informes en múltiples formatos. Los
motivos por los que nos hemos decantado por este programa para personalizar los formatos de
publicación web han sido varios:
Permite diseñar productos de difusión interactivos sin necesidad de un gran bagaje en
los lenguajes de programación web HTML, CSS o Javascript
Los productos elaborados con este programa pueden conectarse con las bases de
datos que almacenan la información difundida en la web, de forma que capturen
directamente y en tiempo real los datos almacenados a petición del usuario
Los contenidos de las aplicaciones e informes web (tales como tablas, gráficos e
incluso texto) pueden programarse para que muestren la información más actual de
una estadística, sin requerir la actualización manual por parte del estadístico
Posibilita la descarga de información en formatos que permiten su almacenaje e
impresión (como pdf y word)
Es gratuito y se nutre de las aportaciones de los usuarios, por lo que se trata de un
programa vivo en continuo proceso de desarrollo y mejora
Con este programa hemos creado las aplicaciones web y los informes que utilizamos en la
ponencia para ejemplificar el funcionamiento de Shiny y Markdown.
Además de la difusión web, en el IGE hemos desarrollado una nueva forma de acercar la
estadística a la ciudadanía de Galicia, orientada en este caso al público joven: el programa de
visitas escolares. La experiencia nos está sirviendo para conocer qué demanda la juventud de
nosotros, contrastar in situ el funcionamiento de las aplicaciones e informes web mencionados
en el párrafo anterior y darnos cuenta de las carencias con las que aún contamos en el IGE.
24
BIBLIOGRAFÍA
MARTÍN VILA, María; LÓPEZ VIZCAÍNO, Esther; CALVO OCAMPO, Esther (2014),
“Adecuación de la difusión en la web del IGE a las necesidades del usuario final”, ponencia
presentada en las XVIII Jornadas de Estadística de las Comunidades Autónomas, Oviedo,
2014; en red en
http://www.jecas.es/2014_Asturias/ponencias/D1.pdf
VEIGUELA FERNÁNDEZ, Noa (2016), “R-Shiny: una herramienta para mejorar la
difusión de las operaciones del Sistema de Cuentas Económicas de Galicia”, ponencia
presentada en las XIX Jornadas de Estadística de las Comunidades Autónomas, Madrid, 2016;
en red en
http://www.jecas.es/2016_Madrid/ponencias/H2.pdf
EN RED:
COMISIÓN ECONÓMICA PARA EUROPA DE LAS NACIONES UNIDAS (UNECE)
(2009), “Cómo hacer comprensibles los datos. Parte 2: una guía para presentar estadísticas”,
en https://www.unece.org/index.php?id=17568&L=3
COMITÉ DEL SISTEMA ESTADÍSTICO EUROPEO (2017), “Código de buenas prácticas
de las estadística europeas”, en
https://ec.europa.eu/eurostat/documents/4031688/8971242/KS-02-18-142-EN-N.pdf/e7f85f07-
91db-4312-8118-f729c75878c7
Página web con toda la información del paquete R-Shiny, incluyendo un práctico tutorial
sobre su funcionamiento:
http://shiny.rstudio.com/
Página web sobre el funcionamiento del paquete R-Plotly:
https://plot.ly/r/
Página web sobre el funcionamiento del paquete R-Leaflet:
https://rstudio.github.io/leaflet/
Página web sobre el funcionamiento del paquete Markdown:
https://rmarkdown.rstudio.com/
Enlace a la aplicación de consulta del PIB municipal y comarcal desarrollada con R-
Shiny:
25
http://www.ige.eu/Shiny/PIB_muni/
Enlace al test interactivo sobre la realidad socioeconómica de los municipios de Galicia
Canto sabes do teu concello??? Desarrollada con R-Shiny:
http://www.ige.eu/Shiny/Test_personalizado_concellos/
Enlace al informe de resultados de la operación Encuesta estructural a hogares. Cuidado
de menores y conciliación familiar realizado con R-Markdown:
https://www.ige.eu/estatico/estatRM.jsp?c=0205019&ruta=html/gl/ecv/Resumo_resultados_EEF
_Coidado_menores.html
Enlace al informe de resultados de la operación Carga de población estacional de los
municipios de Galicia realizado con R-Markdown:
https://www.ige.eu/estatico/estatRM.jsp?c=0201001008&ruta=html/gl/OperacionsEstruturais/Re
sumo_resultados_Carga_poboacion.html
Acceso al Portal Educativo del IGE:
https://www.ige.eu/estatico/educacion/index.htm