lunes, 25 de noviembre de 2013

AUDPC en R

Área bajo la curva del progreso de la enfermedad en <strong>R</strong>

Á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))

plot of chunk unnamed-chunk-1

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