14 de outubro de 2021

O IGE

Introdución

Para que empregamos o R no IGE?



  1. Automatización de procesos

  2. Tratamento estatístico da información

  3. Elaboración de informes automatizados

  4. Elaboración de aplicacións web dinámicas

Automatización de procesos

Información

  • Ademais de información propia, empregamos información procedente de diversas fontes de información

    • Dirección Xeral de Tráfico (DGT)
    • Servizo de Emprego Público
    • Ministerio de Fomento
  • Esta información pode ser mensual, trimestral, anual…

  • O que implica que cada mes, trimestre, ano… temos que facer o mesmo procedemento

Que fixemos?

  • Automatizar moitos destes procedementos que se repiten mensualmente, trimestralmente, … empregando R

Automatización de procesos

Un exemplo: Información de contratos rexistrados (SEPE)

  • Descarga da información mensual de contratos rexistrados da páxina do SEPE
library(readxl)
url="http://www.sepe.es/SiteSepe/contenidos/que_es_el_sepe/estadisticas/
datos_avance/xls/contratos_prov/contratos_sexedadsec_Galicia.xls"
download.file(url,"R:/Servicios/Difusion/OPERACIÓNS ESTATISTICAS/_BANCO DE SERIES
              CONXUNTURA/cargas boletín B/contratos.xls",mode="wb")
  • Identificación dos códigos do SEPE cos códigos da nosa base de datos

  • Grabación da información na base de datos de Mysql

series="('CIT','CICI','CTOT','CTT','CTT','CTF')"
actualizar_BSC(datos,series,actualizar)
  • Paquetes empregados: readxl, tidyverse, RODBC,stringi

Automatización de procesos

Un exemplo: Información de contratos rexistrados (SEPE)

Automatización de procesos

Moitos procesos

library(tidyverse)
library(readxl)
library(RODBC)
library(stringi)
library(RODBC)
library(openxlsx)
source("R:/Servicios/Difusion/programas/BSC/actualizar_BSC.R")

source("Consumo_gasolinas.R",encoding="UTF-8") ####CORES
source("Licitacion_oficial_fomento.R",encoding="UTF-8") ###MINISTERIO DE FOMENTO
source("Visados.R",encoding="UTF-8") ###MINISTERIO DE FOMENTO
source("Matriculacion_vehiculos.R",encoding="UTF-8") ###DGT
###CITROEN, HAI QUE DICIRLLE QUE MES E ANO QUERES LER
mes="Diciembre"
mes2=12
ano=2020
source("citroen.R",encoding="UTF-8") ###CITROEN
####MERCADO LABORAL
source("convenios.R",encoding="UTF-8") ###CONVENIOS
source("contratos.R",encoding="UTF-8") ##CONTRATOS

Tratamento estatístico da información

Base de datos sociodemográfica: contén información socioeconómica da poboación residente en Galicia

  • As características demográficas de cada persoa (nome, apelidos, sexo, idade, nacionalidade, etc.)
  • A súa relación coa actividade económica: se traballou no ano de referencia e as características dos postos de traballo desempeñados
  • Se percibiu unha pensión contributiva da Seguridade Social no ano de referencia e as características da mesma
  • Se se viu afectada por fenómenos demográficos do tipo nacemento, defunción e/ou matrimonio
  • Identificación das relacións de parentesco e de convivencia entre persoas
  • Información xeorreferenciada do lugar de residencia e do lugar de traballo

Tratamento estatístico da información

Base de datos sociodemográfica

Tratamento estatístico da información

Que empregamos para cruzar todos estes rexistros?

  • O DNI
  • Nome, apelidos, sexo, data de nacemento, concello de residencia

Tratamento estatístico da información

Tratamento estatístico da información

Librerías empregadas

  • stringdist: só se pode empregar con variables tipo caracter
cruce <- stringdist_left_join(padron,
                            afiliados,
                            by=c("nomb","ape1","ape2"), 
                            max_dist=3,method="lv",distance_col="distance") %>% 
  select(clave.x,clave.y,cmun.x,cmun.y,nomb.distance,ape1.distance,ape2.distance)
  • fuzzyjoin:
  cruce <- difference_left_join(padron,afiliados,
                           by=c("ANO","MES","DIA"), 
                           max_dist=30,distance_col="distance") %>% 
  select(clave.x,clave.y,identity.x,identity.y,ANNO.distance,MES.distance,DIA.distance)

Tratamento estatístico da información

Xeorreferenciación: cruzar enderezos

Tratamento estatístico da información

text2vec

    #Crea vocabulario

    it = itoken(c(padron$vias,catastro$vias), progressbar = FALSE)
    v = create_vocabulary(it)
    v = prune_vocabulary(v, doc_proportion_max = 0.1, term_count_min = 5)
    vectorizer = vocab_vectorizer(v)

    doc_set_1 =padron
    it1 = itoken(doc_set_1$vias, progressbar = FALSE)
    doc_set_2 = catastro
    it2 = itoken(doc_set_2$vias, progressbar = FALSE)
    
    #Crea matrices DTM
    dtm1 = create_dtm(it1, vectorizer)
    dim(dtm1)
    dtm2 = create_dtm(it2, vectorizer)
    dim(dtm2)
    
    #Calcula a matriz de similaridades utilizado a distancia de Jaccard
    
    d1_d2_jac_sim = sim2(dtm1, dtm2,"jaccard", norm = "none")

Tratamento estatístico da información

Información xeorreferenciada: Poboación por cuadrículas de 1km2

Tratamento estatístico da información

Información xeorreferenciada: % poboación < 16 anos

Paquetes: leaflet,rgdal,maptools,sp,rgeos …

Tratamento estatístico da información

Información xeorreferenciada: Poboación por cuadrículas de 1km2

malla<-readOGR("R:/Servicios/Difusion/MAPAS/grid/mallas_IET/Malla1km.shp")

malla@data=left_join(malla@data,datos,by="CELLCODE")


malla <- spTransform(malla, CRS("+init=epsg:4326"))
bins <- c(-1,0, 20, 36, 1000, Inf)
pal <- colorBin("YlOrRd", domain = malla@data$pob, bins = bins)
labels <- paste0(malla@data$pob) 

m=leaflet() %>% addTiles() %>% addProviderTiles(providers$OpenStreetMap) %>%   
addPolygons(data = malla, fillColor = ~pal(malla@data$pob), stroke = TRUE, weight=2,
color = "transparent",dashArray="3", 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")) 

m %>%addLegend(pal = pal,values = malla@data$pob,na.label="Sen pobación",
               title = "Poboación",opacity = 1)

Tratamento estatístico da información

Difusión de informes e aplicacións web dinámicas

  • O IGE con cada actividade estatística publica un informe descriptivo de resultados

Como acometer a difusión de informes ou aplicacións web mensuais, trimestrais, anuais… sen ter que elaboralos manualmente de cada vez?

  • Automatizando procesos e tarefas que se repiten con frecuencia
  • Buscando programas de deseño web que non requiran coñecer as linguaxes de programación HTML, CSS ou Javascript

Difusión de informes e aplicacións web dinámicas

No IGE recorremos a R…

Ademais…

  • Poden conectarse coas BD que almacenan a información difundida, polo que capturan directamente e en tempo real os datos
  • Todo o que conteñen (táboas, gráficos, texto) pode programarse para que amosen a información máis actual

Automatización de informes

Automatización de informes

Automatización de informes

Como os elaboramos?

  • Plantilla para crear os informes

  • Función para incrustar táboas

caption = sprintf("Sociedades mercantís constituídas e que amplían capital. Galicia.%s",
                  mes_actual2);
headers = list(c("Dato do Mes", "Variación absoluta mensual", 
                 "Variación absoluta interanual"));
names(t1)[1]=""
Make_Tables(t1,caption = caption,unidades = "Número",headers = headers)  
  • Funcións para incrustar gráficos
top = ifelse(LX, 25, 0);
p1_=t4[,c(1,3)]
Make_Graphs_Pie(gr1, width = 375, height = 290 - top, margin = list(t = top))
  • Elaboramos o informe en .html e .pdf

Aplicacións web dinámicas

Que é unha aplicación web dinámica?: unha aplicación que permite que o usuario poida non só recibir información a través da web, senón tamén interactuar con ela…


… Como? Por medio da introdución de widgets: elementos gráficos que permiten que o usuario se comunique co sistema de información que está “detrás” da web (sistema de entrada-saída (input-output))


Aplicacións web dinámicas: exemplo 1 1

Aplicacións web dinámicas: exemplo 1

Aplicacións web dinámicas: exemplo 2

Conclusións

No IGE recorremos a R, por qué?

– Permite deseñar produtos interactivos sen saber linguaxes de programación web

– Conéctase ás bases de datos internas, polo que capturan directamente e en tempo real a información

– Os contidos de informes e aplicacións poden programarse, non requiren actualización manual

– Permite a descarga e impresión da información

– É gratuíto e está en continuo desenvolvemento