Skip to contents

Qué vas a aprender

Esta guía explica qué calcula dismodlite y con qué supuestos, de la ecuación del modelo a los años vividos con discapacidad:

  1. el modelo enfermedad-muerte y la ecuación de la prevalencia;
  2. cómo se representan las tasas por edad (nudos e interpolación) y cómo se resuelve la ecuación;
  3. cómo entran al ajuste la estimación de referencia (el ancla), los priors y los datos locales;
  4. cómo se muestrea y qué son las simulaciones;
  5. cómo se lleva la estimación nacional a las ubicaciones subnacionales;
  6. cómo se calculan los AVD;
  7. los supuestos del modelo y sus límites.

La notación es la misma del código del paquete (la cabecera de su archivo R/edo.R), de modo que cada fórmula de esta guía se puede buscar en el código. Los cálculos de la guía son pequeños y corren en segundos.

Notación

Símbolo Significado Unidades o dominio En la configuración
aa edad años, de a0a_0 a aFa_F a0a_0 = edad_inicio; aFa_F = 99
S(a)S(a), C(a)C(a) personas sin y con la enfermedad (compartimentos) personas
p(a)=C/(S+C)p(a) = C/(S + C) prevalencia proporción en [0,1)[0, 1)
i(a)i(a) incidencia entre quienes no tienen la enfermedad (SS) por persona-año
r(a)r(a) remisión, de CC a SS por persona-año remision
f(a)f(a) mortalidad en exceso de quienes tienen la enfermedad (EMR) por persona-año mortalidad_exceso
m(a)m(a) mortalidad por otras causas por persona-año; se cancela
θ\theta (log⁡i\log i en los nudos, log⁡f\log f en los nudos) parámetros del muestreo nudos
hh paso del método numérico, 1/nsub1/n_{sub} años (0.2) avanzado: {nsub: ...}
WW interpolación de los nudos a la malla cada fila suma 1
σ\sigma escala del prior de suavidad de log⁡i\log i >0> 0 incidencia.suavidad
λ\lambda peso del ancla (0,1](0, 1] ancla.peso
ρ\rho correlación entre bandas de edad del ancla [0,1)[0, 1) ancla.correlacion_edad
η\eta desplazamiento de la log-normal de los datos ≥0\ge 0 avanzado: {offset_lognormal: ...}
κ\kappa fracción del gradiente subnacional que se aplica (0,1](0, 1] subnacional.kappa

Tres desviaciones estándar en escala logarítmica, ninguna de ellas σ\sigma: σlog\sigma_{log} la del ancla, sdlogsd_{log} la del prior de la EMR y slogs_{log} la de los datos locales. N(x;μ,s)N(x; \mu, s) es la densidad normal con media μ\mu y desviación estándar ss (nunca la varianza); MVN(z;0,Σ)MVN(z; 0, \Sigma) es la normal multivariada con matriz de covarianza Σ\Sigma. Todas las tasas van por persona-año (no por 100 000) y la prevalencia es una proporción.

1. El modelo enfermedad-muerte

Cada persona de edad aa está sin la enfermedad (SS) o con ella (CC). Quien no la tiene la adquiere con la tasa ii; quien la tiene se cura con la tasa rr o muere por ella con la tasa ff, además de la mortalidad por otras causas mm, que afecta igual a los dos grupos. Al avanzar la edad:

dSda=−(i+m)S+rC,dCda=iS−(r+m+f)C. \frac{dS}{da} = -(i + m)\,S + r\,C, \qquad \frac{dC}{da} = i\,S - (r + m + f)\,C .

La prevalencia es p=C/(S+C)p = C / (S + C). Derivando el cociente, mm se cancela y queda una sola ecuación, la que resuelve el paquete:

dpda=i(1−p)−rp−fp(1−p). \frac{dp}{da} = i\,(1 - p) - r\,p - f\,p\,(1 - p) .

Se lee así: la prevalencia sube con los casos nuevos entre quienes no tienen la enfermedad, i(1−p)i(1-p), y baja con las remisiones, rpr\,p, y con las muertes en exceso. Esas muertes, fpf\,p por persona, quitan enfermos pero también reducen el total de personas; su efecto neto sobre la proporción es fp(1−p)f\,p\,(1 - p). Como mm afecta por igual a los dos grupos, no cambia la proporción y se cancela: el modelo no necesita la mortalidad general.

Tres decisiones completan el modelo:

  • Condición inicial: p(a0)=0p(a_0) = 0 en a0a_0 = edad_inicio. Se elige una edad a la que casi nadie tiene la enfermedad.
  • Remisión: rr no se estima; es un dato de la configuración (remision, 0 por defecto: una enfermedad crónica). Puede cambiar por tramos de edad con avanzado (ver ?dl_configuracion).
  • Lo que se estima: la incidencia i(a)i(a) y la mortalidad en exceso f(a)f(a). De ellas salen p(a)p(a) y las demás cantidades.

2. Las tasas por edad: nudos e interpolación

La incidencia y la mortalidad en exceso se describen por su valor en unas pocas edades, los nudos (nudos; por defecto cada 10 años desde edad_inicio hasta 80, y 95). Los parámetros del modelo son

θ=(log⁡i1,…,log⁡iK,log⁡f1,…,log⁡fK), \theta = (\log i_1, \dots, \log i_K,\ \log f_1, \dots, \log f_K),

los logaritmos de las dos tasas en los KK nudos. Entre nudos, log⁡i\log i y log⁡f\log f son lineales; fuera de ellos, constantes (antes del primer nudo valen lo del primero y después del último, lo del último). En una malla de edades, eso es una multiplicación por una matriz WW:

log⁡i(aj)=∑kWjklog⁡ik,Wjk=1−w,Wj,k+1=w,w=aj−nudoknudok+1−nudok \log i(a_j) = \sum_k W_{jk} \log i_k, \qquad W_{jk} = 1 - w,\quad W_{j,k+1} = w,\quad w = \frac{a_j - \text{nudo}_k}{\text{nudo}_{k+1} - \text{nudo}_k}

para aja_j entre nudok\text{nudo}_k y nudok+1\text{nudo}_{k+1}, con aja_j llevada primero al rango de los nudos. Cada fila de WW suma 1 y en un nudo devuelve su valor. Como log⁡i\log i es lineal, ii crece o decrece exponencialmente entre nudos.

La función exportada dl_edo() hace exactamente esto: recibe log⁡i\log i y log⁡f\log f en los nudos, interpola, resuelve la ecuación y devuelve pp, ii y ff en las edades enteras. Un ejemplo con valores inventados:

library(dismodlite)
nudos <- c(30, 40, 50, 60, 70, 80, 95)
log_i <- log(c(0.5, 0.8, 1.5, 2.5, 4, 6, 7) / 1000)        # incidencia por persona-año
log_f <- log(c(10, 12, 15, 20, 30, 50, 90) / 1000)         # mortalidad en exceso por persona-año
solucion <- dl_edo(log_i, log_f, nudos, edad_inicio = 30)
str(solucion)
#> List of 4
#>  $ edades: int [1:70] 30 31 32 33 34 35 36 37 38 39 ...
#>  $ p     : num [1:70] 0 0.000509 0.001037 0.001585 0.002154 ...
#>  $ i     : num [1:70] 0.0005 0.000524 0.000549 0.000576 0.000603 ...
#>  $ f     : num [1:70] 0.01 0.0102 0.0104 0.0106 0.0108 ...
op <- par(mfrow = c(1, 2), mar = c(4, 4.2, 2.5, 1), oma = c(1.5, 0, 0, 0), las = 1)
plot(solucion$edades, 1000 * solucion$f, type = "l", lwd = 2, col = "#eb6834", log = "y", ylim = c(0.4, 100),
     yaxt = "n", xlab = "Edad (años)", ylab = "Por 1000 personas-año", main = "Tasas (escala logarítmica)",
     font.main = 1, bty = "n")
axis(2, at = c(0.5, 1, 2, 5, 10, 20, 50, 100), labels = c(0.5, 1, 2, 5, 10, 20, 50, 100))
lines(solucion$edades, 1000 * solucion$i, lwd = 2, col = "#2a78d6")
points(nudos, 1000 * exp(log_f), pch = 19, col = "#eb6834")
points(nudos, 1000 * exp(log_i), pch = 19, col = "#2a78d6")
legend("bottomright", c("Incidencia i", "Mortalidad en exceso f"), col = c("#2a78d6", "#eb6834"), lwd = 2,
       bty = "n", cex = 0.8)
plot(solucion$edades, 100 * solucion$p, type = "l", lwd = 2, col = "#1baf7a", xlab = "Edad (años)",
     ylab = "Prevalencia (%)", main = "Prevalencia p", font.main = 1, bty = "n")
mtext("Datos sintéticos: valores inventados para ilustrar", side = 1, outer = TRUE, adj = 1, cex = 0.75,
      col = "grey35")

Tasas en los nudos (puntos), su interpolación y la prevalencia que resulta (valores inventados).
par(op)

En escala logarítmica, las tasas son rectas entre nudos. La prevalencia crece mientras los casos nuevos superan a las muertes en exceso y se frena cuando ff aumenta.

3. Cómo se resuelve la ecuación

La ecuación de pp se integra con el método de Runge-Kutta de orden 4 (RK4), con paso de 0.2 años (h=1/nsubh = 1/n_{sub}, con nsub=5n_{sub} = 5 pasos por año). Con ii y ff constantes y r=0r = 0 la ecuación tiene solución exacta, p(t)=i(E−1)/(iE−f)p(t) = i\,(E - 1) / (i\,E - f) con E=e(i−f)tE = e^{(i - f)\,t} y t=a−a0t = a - a_0. Sirve para ver la precisión del método:

i <- 0.002; f <- 0.05
solucion <- dl_edo(rep(log(i), 2), rep(log(f), 2), nudos = c(30, 95), edad_inicio = 30)
t <- solucion$edades - 30
E <- exp((i - f) * t)
exacta <- i * (E - 1) / (i * E - f)
max(abs(solucion$p - exacta) / pmax(exacta, 1e-12))   # error relativo máximo
#> [1] 8.487199e-11

El error es muchísimo menor que la incertidumbre de cualquier estimación. Con una remisión o un techo de la mortalidad en exceso muy altos (enfermedades agudas) el paso de 0.2 años es demasiado largo para que el método sea estable: dl_insumos() lo comprueba y, si hace falta, se detiene y pide más pasos por año, que se declaran en avanzado (por ejemplo avanzado: {nsub: 10}, pasos de 0.1 años).

dl_edo() resuelve la ecuación por dentro; dl_edo_resolver() hace solo ese paso, a partir de las tasas ya evaluadas en la malla de edades, para quien quiera probar el método con otras tasas.

4. De las edades simples a las bandas de edad

Las estimaciones de referencia y los datos vienen por bandas de edad (40-44 años, 80 y más…). El modelo produce cantidades por edad simple y las lleva a cada banda [inicio,fin)[\text{inicio}, \text{fin}) con un promedio ponderado por la población:

q=∑a∈Awax(a),A={a entera:inicio≤a<fin},wa=Nb(a)/nb(a)∑a′∈ANb(a′)/nb(a′), q = \sum_{a \in A} w_a\, x(a), \qquad A = \{a \text{ entera} : \text{inicio} \le a < \text{fin}\}, \qquad w_a = \frac{N_{b(a)} / n_{b(a)}}{\sum_{a' \in A} N_{b(a')} / n_{b(a')}},

donde Nb(a)N_{b(a)} es la población de la banda fina de la tabla de población que contiene la edad aa y nb(a)n_{b(a)}, el número de edades del modelo que caen en esa banda (de todas las del modelo, no solo las del intervalo): cada edad lleva su parte de la población de su banda. Si el intervalo cabe en una sola banda, todas sus edades pesan igual; si cruza bandas con el mismo número de edades (varios quinquenios), nbn_b se cancela y wa=Nb(a)/∑a′∈ANb(a′)w_a = N_{b(a)} / \sum_{a' \in A} N_{b(a')}. Si cruza bandas con distinto número de edades (un dato de 60 años y más sobre bandas de cinco años y una de 80 y más), una banda completa cuenta por su población, no por su población multiplicada por su número de edades. La cantidad x(a)x(a) depende de lo que se compara:

Medida x(a)x(a) Qué es
prevalencia pp proporción con la enfermedad
incidencia i(1−p)i\,(1 - p) casos nuevos por persona-año de toda la población
mortalidad por la causa pfp\,f muertes por la enfermedad por persona-año de toda la población

La incidencia y la mortalidad se comparan por persona-año de toda la población, como las publica GBD. La banda abierta (por ejemplo, 95 años y más) se representa con las edades desde su inicio hasta 99.

5. La log-posterior: ancla, priors y datos

El ajuste combina cuatro fuentes de información, que se suman en la log-posterior de θ\theta (por sexo):

log⁡posterior(θ)=Lsuavidad+Lemr+Lancla+Ldatos(+constantes). \log \text{posterior}(\theta) = L_{suavidad} + L_{emr} + L_{ancla} + L_{datos} \; (+\ \text{constantes}).

Suavidad de la incidencia

Lsuavidad=∑klog⁡N(D2k;0,σ),D2k=(log⁡ik+2−log⁡ik+1)−(log⁡ik+1−log⁡ik). L_{suavidad} = \sum_k \log N(D2_k;\ 0, \sigma), \qquad D2_k = (\log i_{k+2} - \log i_{k+1}) - (\log i_{k+1} - \log i_k).

Penaliza la curvatura de log⁡i\log i entre nudos (las segundas diferencias, sin dividir por la distancia entre nudos). Un σ\sigma mayor (incidencia.suavidad) permite una curva más quebrada. No dice nada sobre el nivel ni la pendiente de log⁡i\log i: esos los fija el ancla.

Prior de la mortalidad en exceso

Las muertes por la causa ocurren solo entre quienes la tienen, a la tasa ff; por persona-año de toda la población son csmr=fp\text{csmr} = f\,p. De ahí f=csmr/pf = \text{csmr}/p, y el ancla, que trae la prevalencia y las muertes por banda, da un prior para ff en cada banda (mortalidad_exceso.prior: desde_ancla, el valor por defecto):

μlog=log⁡(csmr)+log⁡(1−fracción aguda)−log⁡(p),sdlog=σlog,p2+σlog,csmr2, \mu_{log} = \log(\text{csmr}) + \log(1 - \text{fracción aguda}) - \log(p), \qquad sd_{log} = \sqrt{\sigma_{log,p}^2 + \sigma_{log,\text{csmr}}^2},

con la incertidumbre de las dos medidas del ancla. La fracción aguda (las muertes de la fase aguda de la enfermedad, que no son del modelo crónico) es 0 salvo que se declare (mortalidad_exceso.fraccion_aguda), y emr_prior.factor_sd puede ensanchar sdlogsd_{log}. Cada nudo toma el prior de la banda que lo contiene (un nudo fuera de las bandas del ancla toma la más cercana, con el doble de desviación estándar), y

Lemr=∑klog⁡N(log⁡fk;μlog,k,sdlog,k). L_{emr} = \sum_k \log N(\log f_k;\ \mu_{log,k}, sd_{log,k}).

Además, ff está acotada por un techo fmaxf_{max} (mortalidad_exceso.techo; por defecto, 3 veces la mayor csmr/p\text{csmr}/p del ancla): fuera de la cota, la log-posterior es −∞-\infty. Con mortalidad_exceso.prior: plano, Lemr=0L_{emr} = 0 y solo queda la cota, con log⁡f\log f uniforme entre log⁡fmax−log⁡1000\log f_{max} - \log 1000 y log⁡fmax\log f_{max}.

Para una causa que no aporta muertes, mortalidad_exceso.prior: cero fija f(a)=0f(a) = 0 y no la estima: θ\theta es solo log⁡i\log i en los nudos, la ecuación se resuelve con f=0f = 0 (dp/da=i(1−p)−rpdp/da = i\,(1 - p) - r\,p) y Lemr=0L_{emr} = 0, sin cota. No usa la mortalidad del ancla. Sin esta opción, una causa sin muertes dejaría log⁡f\log f sin información: sus cadenas recorrerían el prior y no convergerían. En la estimación subnacional, ff es 0 en toda ubicación.

Con mortalidad_exceso.prior: tabla, μlog,k\mu_{log,k} y sdlog,ksd_{log,k} no salen del ancla: son los del tramo de edad que contiene al nudo kk en la tabla prior_mortalidad_exceso del proyecto, por sexo. LemrL_{emr} es el mismo término normal y log⁡fk\log f_k queda bajo log⁡fmax\log f_{max}, como con el prior del ancla; μlog,k\mu_{log,k} es el centro de la Normal antes de truncarla y no puede superar log⁡fmax\log f_{max}. Sirve cuando la mortalidad en exceso se conoce por otra vía (un estudio de seguimiento, otra corrida, los años vecinos de un año sin muertes fiables).

El prior del ejemplo, en muertes por 1000 personas-año con la enfermedad (dl_prior_emr()):

insumos <- dl_insumos(dl_proyecto(dl_ejemplo(), causa = 9100))
prior <- dl_prior_emr(insumos)
prior$f_por_mil <- round(1000 * exp(prior$mu_log), 1)
head(prior[prior$sex_id == 1, c("age_start", "age_end", "mu_log", "sd_log", "f_por_mil")], 9)
#>    age_start age_end    mu_log   sd_log f_por_mil
#>        <num>   <num>     <num>    <num>     <num>
#> 1:        40      45 -4.253818 0.212132      14.2
#> 2:        45      50 -4.073958 0.212132      17.0
#> 3:        50      55 -3.946815 0.212132      19.3
#> 4:        55      60 -3.749431 0.212132      23.5
#> 5:        60      65 -3.528606 0.212132      29.3
#> 6:        65      70 -3.489496 0.212132      30.5
#> 7:        70      75 -3.335041 0.212132      35.6
#> 8:        75      80 -3.155352 0.212132      42.6
#> 9:        80      85 -2.889864 0.212132      55.6

El ancla

El ancla es la estimación de referencia de la prevalencia por banda de edad. Cada banda bb trae su valor valbval_b y su intervalo del 95 %, que se lee como el de una normal en escala logarítmica: σlog,b=(log⁡upperb−log⁡lowerb)/3.92\sigma_{log,b} = (\log \text{upper}_b - \log \text{lower}_b) / 3.92. Con qbq_b la prevalencia del modelo en la banda (el promedio de la sección 4) y zb=log⁡qb−log⁡valbz_b = \log q_b - \log val_b,

Lancla=log⁡MVN(z;0,Σ/λ),Σ=diag(σlog)Rdiag(σlog),Rbc=ρ|b−c|. L_{ancla} = \log MVN(z;\ 0,\ \Sigma / \lambda), \qquad \Sigma = \text{diag}(\sigma_{log})\, R\, \text{diag}(\sigma_{log}), \qquad R_{bc} = \rho^{|b - c|} .

  • ρ\rho (ancla.correlacion_edad) correlaciona los errores de bandas vecinas: una estimación publicada no tiene errores independientes entre edades, y tratarlos como independientes le daría más información de la que tiene. Con ρ=0.5\rho = 0.5, la correlación entre bandas a una, dos y tres de distancia es 0.5, 0.25 y 0.125:
rho <- 0.5
round(rho^abs(outer(1:4, 1:4, "-")), 3)
#>       [,1] [,2] [,3]  [,4]
#> [1,] 1.000 0.50 0.25 0.125
#> [2,] 0.500 1.00 0.50 0.250
#> [3,] 0.250 0.50 1.00 0.500
#> [4,] 0.125 0.25 0.50 1.000

La distancia se cuenta en bandas, no en años: con las bandas del ancla tal como vienen (80-84, 85-89, 90-94 y 95 y más, en vez de una sola de 80 y más), la misma ρ\rho correlaciona menos las edades altas que en la versión 1.0.0.

  • λ\lambda (ancla.peso) multiplica la precisión del ancla (un power prior): con λ=1\lambda = 1 pesa entera; con λ=0.5\lambda = 0.5 cuenta como la mitad de la información. Se baja cuando los datos locales que entran al ajuste ya estaban en la estimación de referencia, para no contarlos dos veces.

En el ejemplo, las bandas del ancla de los hombres:

ancla <- insumos$prior_gbd
ancla <- ancla[ancla$sex_id == 1 & ancla$measure_id == 5, c("age_start", "age_end", "val", "lower", "upper",
                                                             "sigma_log")]
ancla
#>     age_start age_end        val       lower      upper sigma_log
#>         <num>   <num>      <num>       <num>      <num>     <num>
#>  1:        40      45 0.01202830 0.008964407 0.01613938      0.15
#>  2:        45      50 0.01801805 0.013428426 0.02417632      0.15
#>  3:        50      55 0.02543882 0.018958955 0.03413340      0.15
#>  4:        55      60 0.03206835 0.023899791 0.04302880      0.15
#>  5:        60      65 0.04099928 0.030555801 0.05501218      0.15
#>  6:        65      70 0.05542917 0.041310057 0.07437397      0.15
#>  7:        70      75 0.06804334 0.050711100 0.09129946      0.15
#>  8:        75      80 0.08157551 0.060796312 0.10945671      0.15
#>  9:        80      85 0.08837533 0.065864054 0.11858059      0.15
#> 10:        85      90 0.11608081 0.086512301 0.15575537      0.15
#> 11:        90      95 0.13296712 0.099097268 0.17841314      0.15
#> 12:        95     125 0.15371055 0.114556857 0.20624634      0.15

Los datos locales

Entran al ajuste las filas nacionales de la tabla datos del año que se estima, de los tipos de datos_en_ajuste y sin excluir. Cada dato dd se compara con la cantidad del modelo qdq_d en su intervalo de edad (sección 4): pp para la prevalencia de un estudio, i(1−p)i(1-p) para la incidencia, pfp\,f para la mortalidad.

  • Un dato con valor y error estándar entra con una log-normal: ℓd=log⁡N(log⁡(qd+η);log⁡(vald+η),slog,d)\ell_d = \log N(\log(q_d + \eta);\ \log(val_d + \eta),\ s_{log,d}), con slog,d=sed/(vald+η)s_{log,d} = se_d / (val_d + \eta). El desplazamiento η\eta (0 por defecto) solo hace falta si algún valor es 0.
  • Un dato con casos y muestra entra con su verosimilitud de conteos: binomial para la prevalencia (xx casos entre nn personas), ℓd=xlog⁡qd+(n−x)log⁡(1−qd)\ell_d = x \log q_d + (n - x) \log(1 - q_d), y Poisson para la incidencia y la mortalidad (xx eventos en nn personas-año), ℓd=xlog⁡(nqd)−nqd\ell_d = x \log(n\, q_d) - n\, q_d.

Ldatos=∑dℓdL_{datos} = \sum_d \ell_d. Las constantes que no dependen de θ\theta (la del truncamiento del prior de la EMR, log⁡(nx)\log\binom{n}{x} de la binomial y −log⁡x!-\log x! de la Poisson) se omiten: el muestreo no las ve.

Dos consecuencias prácticas. Sin datos_en_ajuste (el valor por defecto), el ajuste queda informado por el ancla y los priors, y los datos locales solo validan. Y las covariables no entran al ajuste nacional: solo mueven las estimaciones subnacionales (sección 7).

6. El muestreo y las simulaciones

La posterior se recorre con un Metropolis-Hastings adaptativo por bloques, por sexo: un bloque para log⁡i\log i y otro para log⁡f\log f en los nudos. En cada iteración se propone mover un bloque, θ′=θ+sbLbz\theta' = \theta + s_b L_b z con z∼N(0,I)z \sim N(0, I), y se acepta con probabilidad min⁡(1,elog⁡post(θ′)−log⁡post(θ))\min(1, e^{\log \text{post}(\theta') - \log \text{post}(\theta)}). Durante el calentamiento el muestreador adapta la escala sbs_b (hacia una aceptación de 0.28) y la forma LbL_b (la covarianza de las iteraciones de la primera mitad del calentamiento); después las deja fijas y guarda una de cada adelgazamiento iteraciones. Cada cadena usa una semilla derivada de la semilla del ajuste: el resultado es el mismo en serie o en paralelo.

Cada vector θ\theta guardado es una simulación: con él se resuelve la ecuación y se obtienen pp, ii y ff por edad. Las estimaciones son la media de las simulaciones y su intervalo del 95 %, los percentiles 2.5 y 97.5. La media es lineal, así que las sumas son exactas: las ubicaciones subnacionales suman la nacional y los subtipos suman la causa que los contiene.

La convergencia se mide con el R-hat partido (Gelman y colaboradores) y el tamaño efectivo de muestra (ESS). Una corrida de producción exige R-hat < 1.01 y ESS ≥ 400 en todos los parámetros.

El muestreador está exportado para quien quiera usarlo con otra log-posterior: dl_mh() corre una cadena y dl_mh_cadenas() varias, en serie o en paralelo, cada una con una semilla derivada de la que recibe. dl_ajustar() los usa con la log-posterior de la sección 5.

7. De lo nacional a lo subnacional

La estimación subnacional (subnacional.modo: covariables) desplaza las tasas nacionales de cada ubicación según la diferencia entre sus covariables y las nacionales, con los coeficientes publicados (β\beta, en la tabla betas). Para cada sexo y cada simulación kk:

  1. Diferencia de la covariable. Con TT la transformación de la covariable (log, logit o lineal), el valor nacional Xnac∼N(T(val),sdT)X_{nac} \sim N(T(val), sd_T), con sdT=(T(upper)−T(lower))/3.92sd_T = (T(\text{upper}) - T(\text{lower})) / 3.92, y el de la ubicación dd, Xd∼N(T(valord),seT)X_d \sim N(T(valor_d), se_T), con seTse_T del error estándar de su fila en la tabla covariables por el método delta. La diferencia es dX=(Xd−Xnac)×escaladX = (X_d - X_{nac}) \times \text{escala} (escala, solo con la transformación lineal), por banda de edad del proxy.
  2. Desplazamiento. Con βc∼N(β,sdβ)\beta_c \sim N(\beta, sd_\beta), sdβ=(βsup−βinf)/3.92sd_\beta = (\beta_{sup} - \beta_{inf}) / 3.92, y PbaP_{ba} el peso de la banda bb del proxy en la edad aa (interpolación lineal entre los puntos medios de las bandas), δc(a)=κβc∑bdXbPba,log⁡id(a)=log⁡inac(a)+∑c∈iδc(a),log⁡fd(a)=min⁡(log⁡fnac(a)+∑c∈fδc(a),log⁡fmax), \delta_c(a) = \kappa\, \beta_c \sum_b dX_b\, P_{ba}, \qquad \log i_d(a) = \log i_{nac}(a) + \sum_{c \in i} \delta_c(a), \qquad \log f_d(a) = \min\Big(\log f_{nac}(a) + \sum_{c \in f} \delta_c(a),\ \log f_{max}\Big), donde las covariables con efecto_sobre: prevalencia o incidencia mueven log⁡i\log i y las de mortalidad_exceso mueven log⁡f\log f. κ\kappa (subnacional.kappa) es la fracción del gradiente que se aplica.
  3. Nueva solución: se resuelve dp/dadp/da con idi_d y fdf_d, con la misma remisión.
  4. Renormalización, por sexo, banda de población y simulación, para q=pq = p y q=i(1−p)q = i(1-p): factor=Nnacqnac∑dNdqd,qd←qd×factor, \text{factor} = \frac{N_{nac}\, q_{nac}}{\sum_d N_d\, q_d}, \qquad q_d \leftarrow q_d \times \text{factor}, de modo que la suma ponderada por población de las ubicaciones es exactamente la nacional. Si algún pdp_d queda fuera de [0,1][0, 1], es un error.

Con subnacional.modo: plano, cada ubicación recibe las tasas nacionales. Con subnacional.modo: razon también, y después de los AVD cada medida qq (prevalencia, incidencia y AVD por banda) se reparte con la razón de cada ubicación (tabla razones): con Rdj=razondexp⁡(error_logdzdj)R_{dj} = \text{razon}_d \exp(\text{error\_log}_d\, z_{dj}) y zdj∼N(0,1)z_{dj} \sim N(0, 1), una vez por ubicación dd y simulación jj (la misma en todas las edades, los dos sexos y las tres medidas), qdj=qnac,jRdjNnac∑dRdjNd, q_{dj} = q_{nac,j}\, \frac{R_{dj}\, N_{nac}}{\sum_d R_{dj}\, N_d}, de modo que la suma ponderada por población de las ubicaciones es exactamente la nacional (dl_repartir_razon()). Los datos subnacionales de la tabla datos del año subnacional.anio_validacion no entran al ajuste: los de mortalidad sirven para validar la estimación subnacional (dl_validar_ancla()).

8. Carga: años vividos con discapacidad

Los AVD por persona de cada banda de edad bb y simulación kk son

AVDk,b=pk,b×(∑eπk,eDWk,e)×COMOb, AVD_{k,b} = p_{k,b} \times \Big(\sum_e \pi_{k,e}\, DW_{k,e}\Big) \times COMO_b ,

donde pk,bp_{k,b} es la prevalencia de la banda, πk,e\pi_{k,e} la proporción de los casos en el estado de salud ee y DWk,eDW_{k,e} su peso de discapacidad (de la tabla severidad). Cada proporción y cada peso se simula con una distribución Beta con la media y la varianza de su intervalo del 95 %, v=((superior−inferior)/3.92)2v = ((\text{superior} - \text{inferior})/3.92)^2; las proporciones se renormalizan para que sumen 1 en cada simulación.

COMObCOMO_b calibra el resultado a los AVD del ancla: COMOb=AVDbancla/(pbancla∑eπeDWe)COMO_b = AVD^{ancla}_b / (p^{ancla}_b \sum_e \pi_e DW_e). Absorbe la corrección por comorbilidad y el patrón por edad de la severidad (la tabla de severidad es la misma a todas las edades); puede superar 1. Los AVD de la fórmula son años vividos con discapacidad por persona y año, en la misma escala que pp (por 100 000, multiplicados por 100 000).

9. Supuestos y límites

  • Estado estacionario. El modelo relaciona tasas y prevalencia a lo largo de la edad en un año, como si las tasas de hoy se hubieran mantenido toda la vida de cada cohorte. Con tendencias fuertes en el tiempo la relación entre incidencia y prevalencia se distorsiona.
  • Nadie tiene la enfermedad en edad_inicio (p(a0)=0p(a_0) = 0) y la mortalidad por otras causas es igual con y sin la enfermedad (por eso mm se cancela).
  • Remisión conocida: no se estima.
  • Formas por edad: log⁡i\log i y log⁡f\log f son lineales entre nudos y constantes fuera de ellos; el modelo no puede mostrar rasgos más finos que los que permiten los nudos.
  • El ancla es la fuente principal. Su incertidumbre se resume en una log-normal por banda con correlación AR(1) entre bandas, una simplificación de la publicada. Si los datos locales ya informaron el ancla, hay que bajar λ\lambda y dejar la razón en notas.
  • Solo datos nacionales en el ajuste. Los subnacionales validan, no ajustan.
  • Diferencias subnacionales solo por covariables. Se supone que la asociación publicada entre la covariable y la tasa vale entre las ubicaciones del país (un supuesto ecológico), atenuada por κ\kappa; no hay efectos aleatorios por ubicación. La renormalización impone el total nacional desde arriba.
  • Severidad igual en todas las edades y ubicaciones, con los pesos de discapacidad simulados de forma independiente entre estados; COMOCOMO es una calibración empírica.
  • El estimador puntual es la media de las simulaciones.

Cada corrida registra en su manifiesto sus limitaciones y las claves tomadas por defecto, y las etiquetas (dl_etiquetas()) dicen, celda por celda, si el resultado lo mueven los datos o el ancla.

Siguientes pasos