Skip to contents

Construye el prior informativo de la mortalidad en exceso f por sexo y banda de edad a partir del ancla. Como las muertes por la causa son csmr = f p, el prior centra log f en log(csmr / p), con la fracción aguda del csmr descontada, y propaga a log f la incertidumbre de las dos medidas:

Usage

dl_prior_emr(insumos)

Arguments

insumos

Insumos de dl_insumos() (con el ancla de mortalidad o, con el prior por tabla, con esa tabla).

Value

Tabla (data.table) con una fila por sexo y banda del ancla: sex_id, age_group_id, age_start, age_end (la banda es [age_start, age_end)), mu_log y sd_log (media y desviación estándar de log f, con f por persona-año). Con el prior por tabla, una fila por sexo y tramo de edad de la tabla, sin age_group_id.

Details

mu_log = log(csmr) + log(1 - fraccion_aguda) - log(p) y sd_log = factor_sd * sqrt(sigma_p^2 + sigma_csmr^2),

donde sigma_p y sigma_csmr son las desviaciones estándar en log del ancla (sigma_log, de sus intervalos del 95 %), fraccion_aguda es emr_prior.fraccion_aguda.valor (0 por defecto) y factor_sd es emr_prior.factor_sd.valor (1 por defecto).

dl_ajustar() lo usa con el prior por defecto (mortalidad_exceso.prior: desde_ancla): cada nudo toma el prior de la banda del ancla que lo contiene (un nudo fuera de las bandas, el de la más cercana, con el doble de desviación estándar) y log f queda truncado bajo el techo de la mortalidad en exceso (mortalidad_exceso.techo o, sin él, 3 veces el máximo de csmr / p del ancla). Con mortalidad_exceso.prior: plano el prior de log f es plano bajo el techo y esta tabla no se usa. Con mortalidad_exceso.prior: cero la mortalidad en exceso está fija en 0, no hay prior y esta función se detiene con un error.

Con mortalidad_exceso.prior: tabla el prior no sale del ancla: es el de la tabla prior_mortalidad_exceso del proyecto (ver dl_tablas), y esta función la devuelve tal como entra al ajuste. Cada nudo toma el tramo de edad que lo contiene (todos los nudos deben caer en un tramo) y log f queda truncado bajo el techo, como con el prior del ancla: mu_log es el centro de la Normal antes de truncarla, y dl_insumos() se detiene si el de algún nudo supera el techo. Sirve para dar al modelo una mortalidad en exceso conocida por otra vía: un estudio de seguimiento, otra corrida o un año vecino.

Examples

b <- dl_insumos(dl_proyecto(dl_ejemplo(), causa = 9100))
#> dl_insumos(): 25 fila(s) nacionales de la tabla datos quedan fuera del ajuste porque datos_en_ajuste está vacío en la configuración; las filas subnacionales se usan solo para validar la cascada
prior <- dl_prior_emr(b)
head(prior)
#> Key: <sex_id, age_group_id, age_start, age_end>
#>    sex_id age_group_id age_start age_end    mu_log   sd_log
#>     <int>        <int>     <num>   <num>     <num>    <num>
#> 1:      1           13        40      45 -4.253818 0.212132
#> 2:      1           14        45      50 -4.073958 0.212132
#> 3:      1           15        50      55 -3.946815 0.212132
#> 4:      1           16        55      60 -3.749431 0.212132
#> 5:      1           17        60      65 -3.528606 0.212132
#> 6:      1           18        65      70 -3.489496 0.212132
# la mortalidad en exceso central del prior, por persona-año
head(exp(prior$mu_log))
#> [1] 0.01420987 0.01700992 0.01931612 0.02353112 0.02934580 0.03051623

# El mismo prior dado por tabla (mortalidad_exceso.prior: tabla), como si viniera de otra fuente.
# El prior del ancla empieza en su primera banda (40) y el primer nudo es 30: el primer tramo se
# extiende hasta él.
tabla <- data.frame(sexo = ifelse(prior$sex_id == 1, "hombres", "mujeres"),
                    edad_inicio = prior$age_start, edad_fin = prior$age_end,
                    mu_log = prior$mu_log, sd_log = prior$sd_log)
tabla$edad_inicio[tabla$edad_inicio == 40] <- 30
config <- yaml::read_yaml(file.path(dl_ejemplo(), "config", "9100.yaml"))
config$mortalidad_exceso$prior <- "tabla"
b_tabla <- dl_insumos(dl_proyecto(dl_ejemplo(), causa = 9100, configuracion = config,
                                  prior_mortalidad_exceso = tabla))
#> dl_insumos(): 25 fila(s) nacionales de la tabla datos quedan fuera del ajuste porque datos_en_ajuste está vacío en la configuración; las filas subnacionales se usan solo para validar la cascada
head(dl_prior_emr(b_tabla))
#>    sex_id age_start age_end    mu_log   sd_log
#>     <int>     <num>   <num>     <num>    <num>
#> 1:      1        30      45 -4.253818 0.212132
#> 2:      1        45      50 -4.073958 0.212132
#> 3:      1        50      55 -3.946815 0.212132
#> 4:      1        55      60 -3.749431 0.212132
#> 5:      1        60      65 -3.528606 0.212132
#> 6:      1        65      70 -3.489496 0.212132