Skip to contents

Con subnacional.modo: razon, da a cada ubicación subnacional la tasa nacional por la razón de la ubicación (la tabla razones del proyecto, ver dl_tablas), simulación a simulación y con cierre exacto en el valor nacional. Se aplica a las simulaciones nacionales de la prevalencia, la incidencia y los AVD, después de dl_avd(); su resultado es la pieza reparto de dl_resumir(). dl_correr() lo hace solo.

Usage

dl_repartir_razon(piezas, semilla = NULL)

Arguments

piezas

Lista con ajuste (la cascada de dl_cascada(), que con subnacional.modo: razon es la plana), avd (el resultado de dl_avd() con esa cascada) e insumos (los de dl_insumos() de un proyecto con la tabla razones); también valen los nombres fit, yld y bundle.

semilla

Semilla del sorteo de las razones (un entero); NULL (por defecto) usa la de la configuración o, sin ella, la de la cascada.

Value

Objeto de clase dl_reparto, una lista con:

  • draws: una tabla por medida (prevalence, incidence, yld) con las simulaciones por location_id, sex_id, age_group_id y draw (en val): las nacionales, tal cual, y las de cada ubicación subnacional, repartidas. En las unidades del modelo (proporción o tasa por persona-año).

  • razones: la razón aplicada, una fila por ubicación: location_id, razon y error_log (los de la tabla), razon_media, razon_lower y razon_upper (la media y los cuantiles 2.5 % y 97.5 % de las razones sorteadas) y fuente.

  • semilla (la del sorteo), ubicaciones (los códigos, en el orden del sorteo) y anio.

  • bundle_hash, huella_ajuste y huella_avd: identifican los insumos, la cascada y los AVD de donde sale; dl_resumir() los compara.

  • huella_razones: el sha256 de la tabla razones de los insumos (el mismo que el manifiesto de la corrida declara para inputs/contrato/razones.csv). La tabla no entra en el hash de los insumos: dl_resumir() compara esta huella con la de la tabla de los insumos que recibe y rechaza un reparto hecho con otra.

Details

Sirve para una causa cuyo patrón entre ubicaciones no sale de covariables con beta sino de una razón ya calculada (de una encuesta, de la población en riesgo, de casos notificados...): la tasa de cada ubicación dividida por la nacional, con el error estándar de su logaritmo. El modelo es el nacional y la cascada es la plana (cada ubicación con las tasas nacionales, ver dl_cascada()); el reparto reemplaza después esas tasas subnacionales.

Para las ubicaciones subnacionales d, en el orden de sus códigos, y las simulaciones j:

  1. R_dj = razon_d * exp(error_log_d * z_dj), con z_dj normal estándar: una sola matriz de ubicaciones por simulaciones, sorteada de una vez con la semilla del reparto. Con razon_d = 0, R_dj = 0: la ubicación queda sin casos. Con error_log_d = 0, la razón no se sortea.

  2. Por medida, sexo, banda de edad y simulación: tasa_dj = tasa_nac_j * R_dj * N_nac / sum_d(R_dj * N_d), con N la población del año que se estima. Así la suma de los casos de las ubicaciones es la de los casos nacionales en cada simulación.

La misma z vale para los dos sexos, todas las bandas y las tres medidas: la razón es una por ubicación y año, la misma en todas las edades y sexos, y el manifiesto de la corrida lo declara como limitación. El nivel nacional no cambia. Si alguna prevalencia repartida pasa de 1, es un error que nombra las ubicaciones: la razón no cabe en una proporción.

La semilla del sorteo es, en este orden, la del argumento semilla, la de la configuración (avanzado: {cascada: {razon_semilla: ...}}) o la de la cascada.

See also

dl_tablas (la tabla razones), dl_configuracion() (subnacional.modo), dl_cascada() y dl_avd() (los pasos anteriores), dl_resumir() (el paso siguiente) y dl_correr() (todos los pasos en una llamada).

Estimación subnacional: dl_cascada()

Examples

# \donttest{
# el ejemplo en modo razón: una copia sin los proxies de la encuesta y con una tabla de razones
# (aquí, inventadas: de 0.7 a 1.3 veces la tasa nacional, con un error del 5 %)
carpeta <- dl_ejemplo(copiar_en = file.path(tempdir(), "proyecto_razon"))
unlink(file.path(carpeta, "proxies_crudos.csv"))
ubicaciones <- read.csv(file.path(carpeta, "ubicaciones.csv"), colClasses = "character")
subnacionales <- ubicaciones$ubicacion[ubicaciones$padre != ""]
razones <- data.frame(ubicacion = subnacionales, anio = 2023,
                      razon = seq(0.7, 1.3, length.out = length(subnacionales)),
                      error_log = 0.05, fuente = "razones inventadas")
p <- dl_proyecto(carpeta, razones = razones,
                 configuracion = list(causa = 9101, anio = 2023, edad_inicio = 30,
                                      mortalidad_exceso = list(techo = 0.2),
                                      subnacional = list(modo = "razon")))
b <- dl_insumos(p)
op <- dl_opciones_mcmc(simulaciones = 100, cadenas = 2, iteraciones = 2000, calentamiento = 1000)
f <- dl_ajustar(b, op, semilla = 1)
cas <- dl_cascada(f, b, semilla = 1)
y <- dl_avd(cas, b, semilla = 1)
reparto <- dl_repartir_razon(list(ajuste = cas, avd = y, insumos = b))
reparto
#> <dl_reparto> reparto subnacional por razón | año 2023 | 25 ubicaciones | razones de 0.7 a 1.3 (0 en cero) | semilla 1
#>   simulaciones por medida: 100 | insumos 7c52d68587d2
head(reparto$razones)
#>    location_id razon error_log razon_media razon_lower razon_upper
#>         <char> <num>     <num>       <num>       <num>       <num>
#> 1:          01 0.700      0.05   0.6983068   0.6436848   0.7589457
#> 2:          02 0.725      0.05   0.7266174   0.6574980   0.7991921
#> 3:          03 0.750      0.05   0.7512510   0.6795314   0.8344718
#> 4:          04 0.775      0.05   0.7719063   0.6992841   0.8614184
#> 5:          05 0.800      0.05   0.8034135   0.7335018   0.8705439
#> 6:          06 0.825      0.05   0.8208046   0.7452159   0.9120061
#>                fuente
#>                <char>
#> 1: razones inventadas
#> 2: razones inventadas
#> 3: razones inventadas
#> 4: razones inventadas
#> 5: razones inventadas
#> 6: razones inventadas
# el resumen con el reparto: las celdas subnacionales son las repartidas
res <- dl_resumir(list(ajuste = cas, avd = y, insumos = b, reparto = reparto))
prev <- res$celdas[measure_id == 5 & sex_id == 2 & age_group_id == 15]
head(prev[, c("location_name", "val", "lower", "upper")])
#>    location_name         val       lower      upper
#>           <char>       <num>       <num>      <num>
#> 1:          Perú 0.013745539 0.011429447 0.01626591
#> 2:      Amazonas 0.009571038 0.007496163 0.01192072
#> 3:        Áncash 0.009956474 0.007857727 0.01197397
#> 4:      Apurímac 0.010297430 0.007923794 0.01261262
#> 5:      Arequipa 0.010576130 0.008611741 0.01303568
#> 6:      Ayacucho 0.011001191 0.008830408 0.01318265
unlink(carpeta, recursive = TRUE)
# }