une_secciones: Unión de los cambios del seccionado del INE

Description Usage Arguments Details Value See Also Examples

View source: R/une_cambios.R

Description

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.

Usage

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)

Arguments

cambios

Objeto de clase cambios_ine. Por defecto se le asigna el valor NULL para no realizar ninguna unión y trabajar con la cartografía proporcionada.

cartografia

Objeto de clase SpatialPolygons con proyección asignada (código EPSG).

poblacion

Objeto de clase poblaciones_ine. Argumento opcional a proporcionar en caso de querer agregar las poblaciones.

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 carga_datos. Argumento opcional a proporcionar en caso de querer calcular el índice de privació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 otras_causas.

years_estudio

Vector numérico de longitud >= 1 con los años para los que se desee construir el array de poblaciones o mortalidad.

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 catastro = FALSE.

umbral_vivienda

Numérico: porcentaje de viviendas afectadas en el cambio de sección. Solo se utiliza si catastro = TRUE. Por defecto se fija al 5 %.

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 (auto o manual), por defecto auto. Si se escoge el modo auto la función detectará los cambios que conllevan una unión de secciones según los parámetros que el usuario haya elegido; si se escoge el modo manual, además de realizar todo el proceso que involucra el otro modo, se permite al usuario incluir uniones que el modo auto puede haber pasado por alto, realizando uniones de seccionado 1-1 mediante los argumentos sc1 y sc2.

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.

sc2

Vector de caracteres: Segundo bloque de secciones a unir manualmente, vacío por defecto. Si se proporciona debe tener la misma longitud que sc1.

Details

La función trabaja con la siguiente dinámica:

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:

  1. 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.

  2. 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).

Value

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:

seccion

Cadena de 10 caracteres con el código de sección censal (incluye provincia, municipio y distrito).

CUMUN

Cadena de 5 caracteres con el código del municipio (incluye provincia).

CCA

Cadena de 2 caracteres con el código de comunidad autónoma.

NPRO

Nombre de la provincia.

NCA

Nombre de la comunidad autónoma.

NMUN

Nombre del municipio.

cluster_id

Código de identificación del cluster de uniones.

revision_manual

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:

See Also

detecta_cambios, descarga_poblaciones y descarga_cartografia

Examples

  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)

fisabio/medear documentation built on Aug. 2, 2021, 2:15 p.m.