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.
Arguments
- piezas
Lista con
ajuste(la cascada dedl_cascada(), que consubnacional.modo: razones la plana),avd(el resultado dedl_avd()con esa cascada) einsumos(los dedl_insumos()de un proyecto con la tablarazones); también valen los nombresfit,yldybundle.- 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 porlocation_id,sex_id,age_group_idydraw(enval): 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,razonyerror_log(los de la tabla),razon_media,razon_loweryrazon_upper(la media y los cuantiles 2.5 % y 97.5 % de las razones sorteadas) yfuente.semilla(la del sorteo),ubicaciones(los códigos, en el orden del sorteo) yanio.bundle_hash,huella_ajusteyhuella_avd: identifican los insumos, la cascada y los AVD de donde sale;dl_resumir()los compara.huella_razones: el sha256 de la tablarazonesde los insumos (el mismo que el manifiesto de la corrida declara parainputs/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:
R_dj = razon_d * exp(error_log_d * z_dj), conz_djnormal estándar: una sola matriz de ubicaciones por simulaciones, sorteada de una vez con la semilla del reparto. Conrazon_d = 0,R_dj = 0: la ubicación queda sin casos. Conerror_log_d = 0, la razón no se sortea.Por medida, sexo, banda de edad y simulación:
tasa_dj = tasa_nac_j * R_dj * N_nac / sum_d(R_dj * N_d), conNla 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)
# }