Integra dp/da = i (1 - p) - r p - f p (1 - p) con Runge-Kutta de orden 4, paso h = 1/nsub años, a partir de
las tasas evaluadas en la malla de paso h/2 (los puntos intermedios de cada paso).
Arguments
- i_media
Incidencia (por persona-año) en la malla de paso h/2: 2 n_pasos + 1 puntos (longitud impar), del inicio al fin de la malla.
- f_media
Mortalidad en exceso (por persona-año) en la misma malla.
- remision
Remisión (por persona-año): un número o un vector de la longitud de
i_media.- p0
Prevalencia en la primera edad de la malla.
- nsub
Subpasos por año (h = 1/
nsub).
Details
Es la ecuación del modelo enfermedad-muerte: con S las personas sin la enfermedad, C las personas con ella, la
incidencia i, la remisión r, la mortalidad en exceso f y la mortalidad por otras causas m (todas por persona-año),
la prevalencia p = C / (S + C) cumple dp/da = i (1 - p) - r p - f p (1 - p), sin m. Con n_pasos pasos de RK4,
la malla h/2 tiene 2 n_pasos + 1 puntos y el paso n, de la edad a a la a + h, usa los puntos 2n - 1 (a), 2n
(a + h/2) y 2n + 1 (a + h). Con h = 0.2 años (el valor por defecto) el error relativo en p frente a la solución
exacta es menor que 1e-6 aun con f = 0.3 por persona-año. Con motor = "rcpp" el ajuste usa su gemelo en C++, que
hace las mismas operaciones en el mismo orden; el compilador puede fundir una multiplicación y una suma en una sola
operación, así que los dos pueden diferir en el último bit.
See also
dl_edo() (desde las tasas en los nudos, en las edades enteras).
Funciones avanzadas:
dl_edo(),
dl_esquema(),
dl_esquema_tabla(),
dl_mh(),
dl_mh_cadenas(),
dl_prior_emr(),
dl_severidad_desde_particion(),
dl_validar_estimaciones(),
dl_validar_tabla()
Examples
# incidencia constante de 0.02 por persona-año, sin remisión ni mortalidad en exceso, durante 10
# años con h = 0.2: la prevalencia exacta es 1 - exp(-0.02 a)
nsub <- 5
n_pasos <- 10 * nsub
p <- dl_edo_resolver(i_media = rep(0.02, 2 * n_pasos + 1), f_media = rep(0, 2 * n_pasos + 1),
nsub = nsub)
edades <- c(0, 5, 10)
cbind(edad = edades, rk4 = p[1 + edades * nsub], exacta = 1 - exp(-0.02 * edades))
#> edad rk4 exacta
#> [1,] 0 0.00000000 0.00000000
#> [2,] 5 0.09516258 0.09516258
#> [3,] 10 0.18126925 0.18126925