Description Usage Arguments Details Value See Also Examples
Une los cambios del seccionado del INE (tomando como referencia la cartografía INE 2011), adaptando a su vez las poblaciones por sexo, año, grupo de edad y sección censal o la mortalidad por sexo, año de defunción, grupo de edad, sección censal y causa de defunción (siempre que se desee, pues son argumentos opcionales). Si el archivo de cambios incorpora información catastral (número de viviendas afectada por cada cambio de sección), se puede fijar un umbral de cambio (%) para rechazar aquellos cambios que involucren a muy pocas viviendas.
1 2 3 4 5 | une_secciones(cambios = NULL, cartografia, poblacion = NULL,
mortalidad = NULL, censo = NULL, otras_causas = NULL, medea3 = TRUE,
years_estudio = 1996:2015, years_union = years_estudio, epsg = 4326,
corte_edad = 85, catastro = FALSE, umbral_vivienda = 5, distancia = 100,
modo = c("auto", "manual"), sc1 = NULL, sc2 = NULL)
|
cambios |
Objeto de clase |
cartografia |
Objeto de clase |
poblacion |
Objeto de clase |
mortalidad |
Objeto con los registros de mortalidad geocodificados. Este es un argumento opcional a proporcionar en caso de querer agregar la mortalidad por sección censal. Se requiere que los datos tengan, como mínimo, las variables sexo, año de defunción, edad, causa de defunción y el par de coordenadas (longitud y latitud), y que tengan exactamente los siguientes nombres: 'sexo', 'year_defuncion', 'edad', 'causa_defuncion', 'lng', y 'lat', respectivamente. |
censo |
Datos de los censos de 2001 y 2011 recuperados con la función
|
otras_causas |
Véctor de caracteres que indica los nombres de las columnas (columnas con valor 0-1) en la base de datos de mortalidad que identifican a dichas otras causas. |
medea3 |
Valor lógico: ¿desea que se agrupen las causas de mortalidad
siguiendo el patrón de 22 grandes causas de MEDEA3? Este argumento es
compatible con |
years_estudio |
Vector numérico de longitud >= 1 con los años para los que se
desee construir el |
years_union |
Vector numérico de longitud >= 1 con los años para los que se desee consultar las variaciones de seccionado. El año 2011 debe figurar dentro del vector, cuyo rango debe ser continuo (sin saltos de más de un año). |
epsg |
Vector numérico de longitud uno con el código EPSG del sistema de referencia de coordenadas (CRS) empleado en los datos de mortalidad (por defecto se usa el 4326 con datum WGS84). |
corte_edad |
Numérico: punto de corte para los grupos de edad (85 o 100). Argumento opcional en caso de proporcionar datos de poblaciones o mortalidad. |
catastro |
Lógico: En caso de realizar uniones ¿debe aplicarse el filtro
de información catastral? Por defecto |
umbral_vivienda |
Numérico: porcentaje de viviendas afectadas en el
cambio de sección. Solo se utiliza si |
distancia |
Numérico: En caso de realizar uniones, máxima distancia (en metros) de separación entre secciones. Por defecto se fija en 100 metros. En algunos casos (principalmente en ciudades donde no haya problemas con pedanías que compartan nombres de vía con el núcleo urbano principal) puede ser conveniente aumentar este parámetro. |
modo |
Carácter: En caso de realizar uniones, modalidad de la unión
( |
sc1 |
Vector de caracteres: Primer bloque de secciones a unir
manualmente, vacío por defecto. Si se proporciona debe tener la misma
longitud que |
sc2 |
Vector de caracteres: Segundo bloque de secciones a unir
manualmente, vacío por defecto. Si se proporciona debe tener la misma
longitud que |
La función trabaja con la siguiente dinámica:
Filtrado del archivo de cambios según el rango de años escogido.
Para cada cambio, si ambas secciones existen en la cartografía proporcionada se calculan las distancias (en metros) entre ellas.
Si se ha decidido utilizar el filtro de catastro, se calcula el porcentaje de viviendas implicadas en cada cambio (opción no disponible para Euskadi y Navarra), y se procede al filtrado del archivo de cambios según el umbral escogido en la llamada a la función, asegurando siempre la presencia de aquellos cambios que implequen a secciones que no existan en la cartografía proporcionada, y restringiendo el filtrado a secciones que disten menos de 100 metros entre sí.
En caso de no utilizar el filtro de catastro, se filtra el archivo de cambios asegurando siempre la presencia de aquellos cambios que implequen a secciones que no existan en la cartografía proporcionada, y restringiendo el filtrado a secciones que disten menos de 100 metros entre sí.
Una vez que se dispone del archivo de cambios definitivo, se crean las agrupaciones de secciones, y se realiza la unión de las mismas en la cartografía.
Si se proporciona un archivo de poblaciones, se agrega la población empleando las mismas agrupaciones de secciones.
Si se proporciona un archivo de mortalidad geocodificada, se agregan las defunciones empleando las mismas agrupaciones de secciones.
No obstante, y dado que la función asume que el callejero, el archivo de poblaciones y la cartografía están libres de errores. Como puede imaginarse, esto no es así, de modo que la función puede comportarse de forma inestable en dos supuestos:
Cuando se quiera unir cambios no solo en la cartografía sino también en los datos de población, puede aparecer un comportamiento inestable de la función, debido a divergencias existentes en la información contenida en los datos de población y en los trameros (que es desde donde se crea el listado de cambios de sección), a pesar de que en ambos casos la fuente de información es el propio INE.
Lo anterior se traduce en que, para determinadas consultas, el número de secciones contenidas en los datos de cartografía y poblaciones no será el mismo. Cuando esto pase (si pasa) la función devolverá un aviso, indicando qué secciones se ven afectadas y en qué años, de forma que el usuario pueda tratar de solucionarlo por su cuenta, aunque no hay una solución perfecta.
Las dos soluciones más efectivas (aunque son soluciones ad hoc y recae en el usuario encontrar la más apropiada para su consulta concreta) que se han encontrado son:
modificar los criterios temporales de la consulta, ampliando o reduciendo el marco temporal (p. ej., pasar de un período 2001:2015 a 1996:2015 o 2002:2014);
consultar las secciones
problemáticas (accesibles mediante la consulta attr(objeto_devuelto,
"sc_not_in_cartografia")
) en los datos de población y, en base al archivo
de cambios de sección, decidir con qué sección se debería realizar la
unión.
Por otra parte, es posible encontrar vías que aparecen literalmente
"de la nada", especialmente en barrios de nueva creación o gran expansión.
El proceso de detección de cambios de sección (función
detecta_cambios
) compara las secciones a las que se asigna
cada tramo del callejero de 2011, con las secciones a las que se asignan
esos mismos tramos (u otros pero contengan portales asociados a los tramos
previos) en los callejeros del resto de años.
No obstante, esto plantea un problema en la detección de cambios al considerar la aparición de vías completamente nuevas, puesto que la comparación 2011-otros años no es posible. En esos casos, y siempre que no haya uniones adicionales que resuelvan el problema por sí solo, el archivo de poblaciones tras la unión contendrá valores iguales a uno en todas las categorías de edad para los años anteriores a la creación de la vía. Nuevamente, cuando esto pase (si pasa) la función devolverá un aviso, indicando qué secciones se ven afectadas y en qué años, de forma que el usuario pueda tratar de solucionarlo por su cuenta.
La solución a este problema es similar al lo anteriormente expuesto: por un
lado se puede variar el rango de años, y por otro tratar de solucionarlo
manualmente consultando el archivo de cambios de sección y el de
poblaciones, buscando las secciones que devuelva la consulta
attr(resultado, "pob_igual_uno")
.
En el apartado de ejemplos se desarrollarán los abordajes a estos problemas, con un tratamiento más extenso en la viñeta de unión de seccionado (aún por elaborar).
El resultado devuelto varía en función de si se proporcionan datos de
poblaciones, mortalidad o censo. Si no se proporciona ninguno se devuelve un
objeto de clase SpatialPolygons
con la cartografía,
donde cada fila es una sección censal y que puede tener las columnas:
Cadena de 10 caracteres con el código de sección censal (incluye provincia, municipio y distrito).
Cadena de 5 caracteres con el código del municipio (incluye provincia).
Cadena de 2 caracteres con el código de comunidad autónoma.
Nombre de la provincia.
Nombre de la comunidad autónoma.
Nombre del municipio.
Código de identificación del cluster de uniones.
Indica si debe revisarse esa unión.
En caso de proporcionar datos de población, mortalidad o censos, se devuelve una lista donde el primer elemento es la cartografía anteriormente descrita, y que puede incorporar los elementos:
poblacion: objeto de clase array
con cuatro dimensiones: año
de defunción, sexo (0 = masculino; 1 = femenino), grupo de edad (según
corte establecido) y sección censal.
mortalidad: objeto de clase array
con cinco dimensiones: año
de defunción, sexo, grupo de edad (según corte establecido), sección
censal y causa de muerte.
censo: objeto de clase matrix
con el índice de privación
calculado independientemente para cada ciudad, según sección censal (filas)
y año (2001 y 2011, columnas).
detecta_cambios
, descarga_poblaciones
y
descarga_cartografia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ## Not run:
# En este ejemplo se trabaja con la ciudad de Córdoba (código ine: 14021)
# en los años 2004-2015, sin usar códigos postales ni mortalidad.
library(medear)
data("poblacion")
data("cambios_seccion")
data("cartografia")
cartografia_co <- cartografia[cartografia$CUMUN == "14021", ]
poblacion_co <- poblacion[substr(poblacion$seccion, 1, 5) == "14021", ]
cambios_co <- cambios_seccion[
substr(cambios_seccion$sc_ref, 1, 5) == "14021" & cambios_seccion$codigo_postal == FALSE,
]
##########################################################################
## Ejemplo sin utilizar el filtro de catastro ##
##########################################################################
union_sin_cat <- une_secciones(
cambios = cambios_co,
cartografia = cartografia_co,
years_estudio = 2004:2015,
poblacion = poblacion_co,
catastro = FALSE
)
nrow(union_sin_cat$cartografia) # 215 secciones
round(nrow(union_sin_cat$cartografia) / nrow(cartografia_co) * 100) #
Conserva el 88 \
# La función avisa acerca de divergencias en el seccionado entre
cartografía y el archivo de poblaciones.
# Las secciones afectadas son accesibles mediante la siguiente consulta:
attributes(union_sin_cat)$pob_igual_uno # 1 SC problemática
# En este caso, se resolverá la incidencia (SC 1402106047).
sc_problematica <- attributes(union_sin_cat)$pob_igual_uno
# Hay que revisar el archivo de cambios para comprobar si esta SC está
# involucrada en algún otro cambio de sección:
cambios_res <- attributes(union_sin_cat)$cambios
cambios_res[cambios_res$sc_ref == sc_problematica]
cambios_res[cambios_res$sc_new == sc_problematica]
# La SC debería unirse con la SC 1402106024, aunque ambas están a 104.9
# metros. Comprobemos esa otra sección:
cambios_res[cambios_res$sc_ref == "1402106024"]
cambios_res[cambios_res$sc_new == "1402106024"]
# La SC 1402106024 se une con la SC 1402106050 (no está en la cartografía
# de 2001) y con la 1402106038. Al representar estas SC (1402106047,
# y la unión 1402106024-1402106038), vemos que colindan, así que se puede
# realizar la unión manual:
plot(union_sin_cat$cartografia[union_sin_cat$cartografia$seccion %in%
c("1402106047", "1402106024"), ])
union_sin_cat <- une_secciones(
cambios = cambios_co,
cartografia = cartografia_co,
years_estudio = 2004:2015,
poblacion = poblacion_co,
catastro = FALSE,
modo = "manual",
sc1 = "1402106047",
sc2 = "1402106024"
)
# El aviso ha desaparecido, aunque todavía se mantiene un aviso sobre
# secciones conformadas por varios polígonos. Vamos a ver qué secciones
# forman esta unión:
union_sin_cat$cartografia@data[union_sin_cat$cartografia$seccion == "1402101006", ]
# La sección involucrada es 1402106010. Al representar ambas secciones
# vemos que sí se tocan, aunque solo en una esquina. A pesar del aviso,
# damos por buena la unión.
plot(union_sin_cat$cartografia[union_sin_cat$cartografia$seccion == "1402101006", ])
##########################################################################
## Ejemplo utilizando el filtro de catastro ##
##########################################################################
union_con_cat <- une_secciones(
cambios = cambios_co,
cartografia = cartografia_co,
years_estudio = 2004:2015,
poblacion = poblacion_co,
catastro = TRUE,
umbral_vivienda = 5
)
nrow(union_con_cat$cartografia) # 223 secciones
round(nrow(union_con_cat$cartografia) / nrow(cartografia_co) * 100)
# Conserva el 91 \
# Al utilizar información de catastro se ha aumentado de un 88 \
# 91 \
# que procedemos de la misma forma, tras lo cual se da por cerrada la unión:
union_con_cat <- une_secciones(
cambios = cambios_co,
cartografia = cartografia_co,
years_estudio = 2004:2015,
poblacion = poblacion_co,
catastro = TRUE,
umbral_vivienda = 5,
modo = "manual",
sc1 = "1402106047",
sc2 = "1402106024"
)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.