Área bajo la curva del progreso de la enfermedad en R
El área bajo la curva del progreso de enfermedad es una mide la intesidad de la enfermedad en el tiempo, por comparasión durante años, sitios o estrategias de manejos de alguna enfermedad. El método trapezoidal es el más usado para estimar la AUDPC, y consiste en discretizar la variable tiempo (horas, días, semanas, meses o años) y calcular el promedio de la severidad entre cada para de puntos adyacentes.
Podemos considerar los puntos de muestreo en una secuencia {ti}, donde el intervalo de tiempo entre dos puntos puede ser constante o variar y, también tiene asociado una medidad del nivel de enfermedad {yi}. Definamos \( y(0) = y_0 \) como el nivel inicial de infección o enfermedad en \( t=0 \) (la primera medición de severidad en nuestro estudio). \( A(t_k) \), la AUDPC en \( t=t_k \), es la enfermedad total acumulada hasta \( t=t_k \), dada por: \[ A_k=\sum_{i=1}^{N_i-1}\frac{y_i+y_{i+1}}{2}(t_{1+1}-t_i) \]
A continuación generaremos un código en R para calcular la AUDPC:
En un vector colocar todas las mediciones de severidad:
s0 <- 1
s1 <- 2
s2 <- 7
s3 <- 7.5
severidad <- c(s0, s1, s2, s3)
Agregar un segundo verctor que contiene los tiempos de medición de la severidad:
t0 <- 0
t1 <- 2
t2 <- 5
t3 <- 6
tiempo <- c(t0, t1, t2, t3)
Creamos el gráfico severidad en el tiempo:
plot(tiempo, severidad, ylim = c(0, (s3 + 1)), xlim = c(0, (t3 + 0.5)), xlab = "Tiempo",
ylab = "Severidad (%)", type = "o", pch = 19, col = "mediumblue", main = "Cálculo de AUDPC")
mtext("=t0", 1, at = 0.3, 1)
mtext("=t1", 1, at = 2.3, 1)
mtext("=t2", 1, at = 5.3, 1)
mtext("=t3", 1, at = 6.3, 1)
# Ahora ilustremos el área bajo la curva de desarollo de la enfermedad con
# rectángulos:
rect(t0, 0, t1, ((s0 + s1)/2), border = "orange")
text(1, 1, "A1")
rect(t1, 0, t2, ((s1 + s2)/2), border = "orange")
text(((t1 + t2)/2), (((s1 + s2)/2)/2), "S2")
segments(0.4, ((s1 + s2)/2), t2, ((s1 + s2)/2), col = "black", lty = "18")
text(0, ((s1 + s2)/2), ((s1 + s2)/2))
rect(t2, 0, t3, ((s2 + s3)/2), border = "orange")
text(((t2 + t3)/2), (((s2 + s3)/2)/2), "S3")
segments(0.4, ((s2 + s3)/2), t2, ((s2 + s3)/2), col = "black", lty = "18")
text(0, ((s2 + s3)/2), ((s2 + s3)/2))
Ahora consturimos una función para calcular la AUDPC:
audpc <- function(severidad, tiempo) {
n <- length(tiempo)
promsev <- matrix(-1, (n - 1))
inttiem <- matrix(-1, (n - 1))
for (i in 1:(n - 1)) {
promsev[i] <- mean(c(severidad[i], severidad[i + 1]))
inttiem[i] <- tiempo[i + 1] - tiempo[i]
}
producto <- promsev * inttiem
sum(producto)
}
audpc(severidad, tiempo)
## [1] 23.75
El paquete agricoale implementa una función llamada audpc de forma nativa.
Referencias
Este post es basado en información consignada en los siguientes artículos:
Sparks, A.H., P.D. Esker, M. Bates, W. Dall' Acqua, Z. Guo, V. Segovia, S.D. Silwal, S. Tolos, and K.A. Garrett, 2008. Ecology and Epidemiology in R: Disease Progress over Time.
Sparks, A..H., P.D. Esker, G. Antony, L. Campbell, E.E. Frank, L. Huebel, M.N. Rouse, B.Van Allen, and K.A. Garrett, 2008. Ecology and epidemiology in R: Introduction to spatial analysis. The Plant Health Instructor. On-line: DOI:10.1094/PHI-A-2008-0129-03. The Plant Health Instructor. DOI:10.1094/PHI-A-2008-0129-02.
0 comentarios:
Publicar un comentario