R — Ejercicio sobre la despoblación

R — Ejercicio sobre la despoblaciónRoberto FinistrosaBlockedUnblockFollowFollowingFeb 27Éste es un ejercicio de Análisis Exploratorio de Datos (EDA) en el marco de trabajo de las técnicas Big Data y Data Analytics.

Para ello, se analiza con el lenguaje de programación R la despoblación en los municipios de España, a partir de un dataset propio creado con datos públicos extraídos de distintas fuentes institucionales.

El código de éste proyecto puede ser descargado aquí.

FUENTESLos datos se han obtenido de las siguientes fuentes:Municipios – CENTRO DE DESCARGAS DEL CENTRO NACIONAL DE INFORMACIÓN GEOGRÁFICAPadrón – INEParo por municipio en España | SEPEMunicipios IGN (Shapefiles) | PORTAL DE DATOS ABIERTOS DE ESRI ESPAÑA — ARCGisProvincias — ETRS89 UTM 30N | PORTAL DE DATOS ABIERTOS DE ESRI ESPAÑA — ARCGisDatos climáticos (temperatura media) | AEMETDATASETUna vez realizado el proceso ETL sobre las fuentes, obtenemos el fichero municipios.

csv con los siguientes datos:Metadatos del datasetEDAUtilizando R y sus librerías de representación geoespacial, demostramos cómo realizar un análisis exploratorio de datos (EDA)Las librerías R que utilizadas en éste ejercicio son:rgdal — Librería para uso de datos geoespacialestmap — Librería para presentación de mapasggplot2 — Librería para análisis exploratorio de datosCódigoCarga de librerías y datos geoespacialesCarga de dataset de municipiosstr(data)head(data)dim(data)El dataset tiene 8121 municipiosSumatorio de habitantes, superficie y media de densidadDENSIDAD DE POBLACIÓN POR PROVINCIASSe agregan la población y superficie por provincias, para averiguar las provincias con menor densidadmyvars <- c("COD_PROV", "PROVINCIA", "SUPERFICIE", "HABITANTES")dfprovincias<-data[myvars]dfprovincias <-aggregate(list(data$HABITANTES, data$SUPERFICIE/100, data$HABITANTES / (data$SUPERFICIE / 100)), by=list(Provincia = data$PROVINCIA, Codigo = data$COD_PROV), FUN= sum)names(dfprovincias)[3] <- "HABITANTES"names(dfprovincias)[4] <- "SUPERFICIE"names(dfprovincias)[5] <- "DENSIDAD"dfprovincias <- transform(dfprovincias, DENSIDAD = HABITANTES / SUPERFICIE)View(dfprovincias)# Observamos en los datos, que tanto Melilla como Ceuta tienen una densidad de población muy elevada, por sus características especiales (poca superficie con relación al número de habitantes), por lo que las eliminamos de la muestra para mejorar la presentación de la gráficadf <- dfprovincias[!grepl("CEUTA|MELILLA", dfprovincias$Provincia),]dfreducido <- dfprovincias[which(dfprovincias$DENSIDAD < 100),]hist(dfreducido$DENSIDAD,main="Densidad en provincias (excepto Ceuta y Melilla)",xlab="Densidad (Población/Superficie)",xlim=c(0,100),col="lightyellow",freq=TRUE)Mapa de densidad de población por provinciaPara ello, se necesita un Codigo que relacione los datos del fichero SHAPEFILE con los datos del dataframe.

El Codigo de los ficheros SHAPEFILE es un string de 2 caracteres que en el caso del DATASET corresponde al COD_PROVPor lo tanto se crea un DATAFRAME con los datos necesarios.

mapa_densidad_provincias_peninsula<-merge(i_data_gs_provincias_peninsula, dfprovincias, by = "Codigo", all.

x=TRUE)mapa_densidad_provincias_islas<-merge(i_data_gs_provincias_islas, dfprovincias, by = "Codigo", all.

x=TRUE)mapa_provincias_peninsula <- tm_shape(mapa_densidad_provincias_peninsula) + tm_fill("DENSIDAD", title = "Densidad", style = "fixed", breaks = c(0, 20, 40, 60, 80, 100, Inf), colorNA = "green") + # <——– color for NA values + #tm_polygons("DENSIDAD", textNA=">100", title="Densidad") + tm_borders() + #tm_text("Texto", size=0.

5) + tm_layout(legend.

position = c("RIGHT","BOTTOM"), legend.

frame = FALSE)print(mapa_provincias_peninsula)mapa_densidad_provincias_islas <- tm_shape(mapa_densidad_provincias_islas) + tm_fill("DENSIDAD", title = "Densidad", style = "fixed", breaks = c(0, 20, 40, 60, 80, 100, Inf), colorNA = "green") + # <——– color for NA values + tm_layout(legend.

show = FALSE)print(mapa_densidad_provincias_islas)Mapa de densidad de población por provinciasSe puede observar que 6 provincias en España con una densidad de población inferior a 20 habitantes / km2, tres de ellas con una densidad de población inferior a 12.

5 habitantes por Km2* SORIA (8)* TERUEL (9)* CUENCA (11)* HUESCA (14)* ZAMORA (16)* AVILA (19)DENSIDAD DE POBLACIÓN POR MUNICIPIOSPara ello, se necesita un CODIGOINE que relacione el fichero SHAPEFILE con los datos del dataframeEl CODIGOINE de los ficheros SHAPEFILE es un string de 5 caracteres que en el caso del DATASET corresponde a los 5 primeros caracteres del COD_INEPor lo tanto se crea un DATAFRAME con los datos necesarios.

myvars <- c("COD_INE", "COD_PROV", "PROVINCIA", "NOMBRE_ACTUAL", "SUPERFICIE", "HABITANTES")dfmunicipios<-data[myvars]#Dividimos la superficie por 100, para pasarla de Hectáreas a Km2dfmunicipios <- transform(dfmunicipios, DENSIDAD = HABITANTES / (SUPERFICIE / 100))dfmunicipios <- transform(dfmunicipios, CODIGOINE = substr(dfmunicipios$COD_INE, 1, 5))#options(max.

print=10000)#duplicated(p$CODIGOINE)#Eliminamos también los registros con datos de densidad muy elevadosdfreducido <- dfmunicipios[which(dfmunicipios$DENSIDAD <= 200),]hist(dfreducido$DENSIDAD,main="Densidad en municipios",xlab="Densidad (Población/Superficie)",xlim=c(0,200),col="lightyellow",freq=TRUE)View(dfmunicipios)Más del 50% de los municipios tienen una densidad inferior a 20 Habitantes por Km2Mapa de densidad de población por municipiomapa_densidad_municipios_peninsula<-merge(i_data_gs_municipios, dfmunicipios, by = "CODIGOINE", all.

x=TRUE)# Asignamos 99 a los municipios de los que no disponemos dato de densidadmapa_densidad_municipios_peninsula@data$DENSIDAD[which(is.

na(mapa_densidad_municipios_peninsula@data$DENSIDAD))] <-99# Mapa de los municipios de las Islas Canariasmapa_densidad_municipios_islas<-merge(i_data_gs_municipios_islas, dfmunicipios, by = "CODIGOINE", all.

x=TRUE)mapa_densidad_municipios_peninsula <- tm_shape(mapa_densidad_municipios_peninsula) + tm_fill("DENSIDAD", title = "DENSIDAD DE POBLACIÓN (Habitantes/Km2)", style = "fixed", breaks = c(0, 8, 12.

5, Inf), colorNA = "green") + # <——– color for NA values + tm_layout(legend.

position = c("RIGHT","BOTTOM"), legend.

frame = FALSE)print(mapa_densidad_municipios_peninsula)mapa_densidad_municipios_islas <- tm_shape(mapa_densidad_municipios_islas) + tm_fill("DENSIDAD", title = "DENSIDAD DE POBLACIÓN (Habitantes/Km2)", style = "fixed", breaks = c(0, 8, 12.

5, Inf), colorNA = "green") + # <——– color for NA values + tm_layout(legend.

show = FALSE)print(mapa_densidad_municipios_islas)A partir de los datos del dataset, modificando la variable que se quiere analizar, se pueden obtener otros mapas.

EDAD MEDIALas provincias más despobladas tienen una edad media más altaLos municipios más despoblados tienen la edad media más altaEMPLEOEn éste caso hay que tener en cuenta que en el dataset no se disponen de datos de empleo de todos los municipios, por lo que hay que realizar un proceso previo de gestión de valores nulos, que se puede hacer de dos formas:Eliminando los registros con valores nulosAsignando a los valores nulos una media ponderadaLas provincias más despobladas tienen bajo porcentaje de paroLos municipios más despoblados tienen menor índice de paroHABITANTESDESPOBLACIÓNMapa de municipios con densidad de población inferior a 12.

5 habitantes / km2CLIMASe puede obtener un mapa de clima por provincias (ya que no se dispone de datos de clima por municipios) con el dataset clima.

csv.

Las provincias más frías también son las más despobladasEl código de éste proyecto puede ser descargado aquí.

.

. More details

Leave a Reply