← Índice de Bioestadística abierta
Cálculo instantáneo en el navegador · verificable con R Activa

Entradas

Del estudio de validación o de la literatura; de 0 a 1 o en porcentaje (85 = 85 %).

De 0 a 1 o en porcentaje.

La de la población donde se aplicará la prueba, o la probabilidad preprueba del paciente; no la del estudio de validación.

Personas con la enfermedad en el estudio del que salen Sn y Sp. Con ambos tamaños se calcula el IC (Mercaldo 2007); déjalo vacío o en 0 si no lo conoces.

Personas sin la enfermedad en ese mismo estudio.

Ejemplo cargado

Ejemplo ilustrativo: prueba rápida de antígeno NS1 con sensibilidad 85 % y especificidad 95 % (estimadas en 80 enfermos y 120 sanos), aplicada donde la prevalencia de dengue entre los febriles es del 30 % (datos ficticios).

Datos ilustrativos, no reales.

Resultados

Valor predictivo positivo (VPP)

87.9 %

76.9 % a 94.1 %

IC 95 % · logit de Mercaldo

Valor predictivo negativo (VPN)

93.7 %

89.8 % a 96.1 %

IC 95 % · logit de Mercaldo

LR+

17.00

LR−

0.16

Verdaderos positivos por 1,000

255

de cada 1,000 personas evaluadas

Falsos positivos por 1,000

35

de cada 1,000 personas evaluadas

Falsos negativos por 1,000

45

de cada 1,000 personas evaluadas

Verdaderos negativos por 1,000

665

de cada 1,000 personas evaluadas

Interpretación

Si la prueba (Sn 85.0 %, Sp 95.0 %) se aplica a 1,000 personas con una prevalencia de 30.0 %, se esperan 255 verdaderos positivos y 35 falsos positivos: 87.9 % de los resultados positivos corresponderán a personas con la enfermedad (VPP). Habrá 45 falsos negativos y 665 verdaderos negativos: 93.7 % de los resultados negativos corresponderán a personas sin la enfermedad (VPN).

Con 80 enfermos y 120 sanos en el estudio de validación, el IC 95 % del VPP es 76.9 % a 94.1 % y el del VPN, 89.8 % a 96.1 % (método logit de Mercaldo 2007, con la prevalencia tomada como fija).

LR+ = 17.00 y LR− = 0.16: estas dos cifras no dependen de la prevalencia y son las que se trasladan a cualquier probabilidad preprueba con la calculadora «Probabilidad posprueba».

La prevalencia debe ser la de la población donde se usará la prueba (o la probabilidad preprueba del paciente), no la del estudio de validación: con la misma Sn y Sp, el VPP cae cuando la enfermedad es rara y el VPN cae cuando es frecuente (Vecchio 1966). La gráfica muestra ambos valores para cualquier prevalencia.

VPP y VPN frente a la prevalencia, con la prevalencia capturada marcadaPrevalencia 30.0 %: Valor predictivo positivo (VPP) 87.9 %, Valor predictivo negativo (VPN) 93.7 %.Valor predictivoValor predictivo positivo (VPP)Valor predictivo negativo (VPN)0 %25 %50 %75 %100 %0 %20 %40 %60 %80 %100 %Prevalencia30.0 %
VPP y VPN frente a la prevalencia, con la prevalencia capturada marcada

Explicación

La sensibilidad y la especificidad describen la prueba, pero la pregunta del clínico es otra: si el resultado es positivo, ¿qué probabilidad hay de que la persona esté enferma? Ese es el valor predictivo positivo (VPP); el negativo (VPN) es la probabilidad de estar sana con un resultado negativo. Ambos dependen de la prevalencia (Vecchio 1966): con la misma prueba, el VPP cae cuando la enfermedad es rara y el VPN cae cuando es frecuente.

Por eso los valores predictivos del estudio de validación no se trasladan a la consulta: hay que recalcularlos con la prevalencia de la población donde se aplicará la prueba (o con la probabilidad preprueba del paciente). Esta calculadora hace ese cálculo con el teorema de Bayes.

Las frecuencias naturales (Gigerenzer y Edwards 2003) lo explican sin fórmulas: de cada 1,000 personas evaluadas, cuántas tendrán la enfermedad y darán positivo, cuántas darán positivo sin tenerla, y así con los negativos. El VPP es simplemente la fracción de positivos que sí están enfermos.

Si se conocen los tamaños del estudio de validación (enfermos y sanos con los que se estimaron Sn y Sp), el intervalo de confianza de cada valor predictivo se calcula por el método logit de Mercaldo, Lau y Zhou (2007), que propaga la incertidumbre de Sn y Sp tomando la prevalencia como fija. Cuando Sn o Sp valen 0 o 1 se usa su variante ajustada (0.5 sumado a cada celda).

Ecuaciones

VPP=Sn⋅PSn⋅P+(1−Sp)(1−P),VPN=Sp (1−P)Sp (1−P)+(1−Sn) P\mathrm{VPP}=\frac{\Sn\cdot P}{\Sn\cdot P+(1-\Sp)(1-P)},\qquad \mathrm{VPN}=\frac{\Sp\,(1-P)}{\Sp\,(1-P)+(1-\Sn)\,P}
Sn, Sp\Sn,\ \Sp
sensibilidad y especificidad
PP
prevalencia (probabilidad preprueba) donde se usará la prueba
Teorema de Bayes (1763) aplicado a un resultado positivo y a uno negativo.
SE⁡[logit⁡VPP]=1−SnSn nD+Sp(1−Sp) nDˉ,SE⁡[logit⁡VPN]=1−SpSp nDˉ+Sn(1−Sn) nD\se[\logit \mathrm{VPP}]=\sqrt{\frac{1-\Sn}{\Sn\,n_D}+\frac{\Sp}{(1-\Sp)\,n_{\bar D}}},\qquad \se[\logit \mathrm{VPN}]=\sqrt{\frac{1-\Sp}{\Sp\,n_{\bar D}}+\frac{\Sn}{(1-\Sn)\,n_D}}
nD, nDˉn_D,\ n_{\bar D}
enfermos y sanos del estudio de validación
logit⁡p=ln⁡p1−p\logit p=\ln\frac{p}{1-p}
escala logit; el intervalo se construye en esa escala y se devuelve a probabilidad con expit(x) = 1/(1 + e^{−x})
Intervalo logit de Mercaldo, Lau y Zhou (2007): IC = expit(logit VPP ± z·EE). Variante ajustada: Sn y Sp se reemplazan por (Sn·n_D + 0.5)/(n_D + 1) y (Sp·n_D̄ + 0.5)/(n_D̄ + 1), con n + 1 en cada grupo.
VP=1000 P Sn,FN=1000 P (1−Sn),FP=1000 (1−P)(1−Sp),VN=1000 (1−P) Sp\mathrm{VP}=1000\,P\,\Sn,\qquad \mathrm{FN}=1000\,P\,(1-\Sn),\qquad \mathrm{FP}=1000\,(1-P)(1-\Sp),\qquad \mathrm{VN}=1000\,(1-P)\,\Sp
Frecuencias naturales por cada 1,000 personas evaluadas (Gigerenzer y Edwards 2003); VPP = VP/(VP + FP) y VPN = VN/(VN + FN).

Código R

# Predictive values from sensitivity, specificity and prevalence - Bioestadistica abierta, UDG-CA-1190
# Runs as is in R, RStudio or webR; prints the results as JSON at the end.
library(jsonlite)

sn <- 0.85; sp <- 0.95; prev <- 0.3   # sensitivity, specificity and prevalence where the test will be used (0-1)
n_d <- 80; n_nd <- 120             # diseased and non-diseased in the validation study; 0 = unknown (no CI)
nivel <- 0.95
z <- qnorm(1 - (1 - nivel) / 2)

vpp_punto <- sn * prev / (sn * prev + (1 - sp) * (1 - prev))         # Bayes' theorem
vpn_punto <- sp * (1 - prev) / (sp * (1 - prev) + (1 - sn) * prev)
lr_pos <- sn / (1 - sp)
lr_neg <- (1 - sn) / sp

# Logit confidence interval of Mercaldo, Lau & Zhou (2007); with Sn or Sp at 0 or 1 the standard
# error is undefined and the adjusted logit is used (0.5 added to each cell of the validation study)
logit <- function(p) log(p / (1 - p))
expit <- function(x) 1 / (1 + exp(-x))
ic_logit <- function(s, e, d, nd) {      # s = Sn, e = Sp, d = diseased, nd = non-diseased
  vpp <- s * prev / (s * prev + (1 - e) * (1 - prev))
  vpn <- e * (1 - prev) / (e * (1 - prev) + (1 - s) * prev)
  ee_vpp <- sqrt((1 - s) / (s * d) + e / ((1 - e) * nd))
  ee_vpn <- sqrt((1 - e) / (e * nd) + s / ((1 - s) * d))
  list(vpp = c(expit(logit(vpp) - z * ee_vpp), expit(logit(vpp) + z * ee_vpp)),
       vpn = c(expit(logit(vpn) - z * ee_vpn), expit(logit(vpn) + z * ee_vpn)))
}
if (n_d > 0 && n_nd > 0) {
  ajustado <- sn %in% c(0, 1) || sp %in% c(0, 1)
  ic <- if (ajustado) ic_logit((sn * n_d + 0.5) / (n_d + 1), (sp * n_nd + 0.5) / (n_nd + 1), n_d + 1, n_nd + 1) else ic_logit(sn, sp, n_d, n_nd)
  vpp <- c(vpp_punto, ic$vpp); vpn <- c(vpn_punto, ic$vpn)
} else {
  vpp <- vpp_punto; vpn <- vpn_punto     # without the study sizes there is no interval
}

# Natural frequencies per 1,000 people tested (Gigerenzer & Edwards 2003)
vp_mil <- 1000 * prev * sn;       fn_mil <- 1000 * prev * (1 - sn)
fp_mil <- 1000 * (1 - prev) * (1 - sp); vn_mil <- 1000 * (1 - prev) * sp

res <- list(vpp = vpp, vpn = vpn, lr_pos = lr_pos, lr_neg = lr_neg,
            vp_mil = vp_mil, fp_mil = fp_mil, fn_mil = fn_mil, vn_mil = vn_mil)
cat(toJSON(res, auto_unbox = TRUE, digits = NA))

Este es el mismo código que valida la calculadora: cópialo y ejecútalo en R o RStudio para reproducir el resultado.

La verificación con R dentro del navegador llegará en una próxima versión; mientras tanto, copia el código y ejecútalo en RStudio.

Métodos para manuscrito

Los valores predictivos se derivaron de la sensibilidad, la especificidad y la prevalencia supuesta mediante el teorema de Bayes [4,1]. Los intervalos de confianza al 95 % se calcularon con el método logit de Mercaldo et al. [2] a partir de los tamaños del estudio de validación (80 con la enfermedad y 120 sin ella), con la prevalencia tomada como fija. Los resultados se expresaron también como frecuencias naturales por cada 1,000 personas [3]. Los cálculos se realizaron con la calculadora «Valores predictivos» de Bioestadística abierta (Cuerpo Académico UDG-CA-1190, https://udgca1190.com.mx/herramientas/bioestadistica/valores-predictivos), verificada contra R.

Párrafo listo para la sección de Métodos; los números entre corchetes remiten a la lista de referencias.

Referencias

  1. 01 Vecchio TJ. Predictive value of a single diagnostic test in unselected populations. New England Journal of Medicine. 1966;274(21):1171–1173. doi:10.1056/NEJM196605262742104 PMID: 5934954 Fuente original
  2. 02 Mercaldo ND, Lau KF, Zhou XH. Confidence intervals for predictive values with an emphasis to case-control studies. Statistics in Medicine. 2007;26(10):2170–2183. doi:10.1002/sim.2677 PMID: 16927452 Fuente original
  3. 03 Gigerenzer G, Edwards A. Simple tools for understanding risks: from innumeracy to insight. BMJ. 2003;327(7417):741–744. doi:10.1136/bmj.327.7417.741 PMID: 14512488 Fuente original
  4. 04 Bayes T. An essay towards solving a problem in the doctrine of chances. Philosophical Transactions of the Royal Society of London. 1763;53:370–418. doi:10.1098/rstl.1763.0053 Fuente original
  5. 05 Altman DG, Bland JM. Diagnostic tests 2: predictive values. BMJ. 1994;309(6947):102. doi:10.1136/bmj.309.6947.102 PMID: 8038641 Lectura didáctica
  6. 06 Fletcher RH, Fletcher SW, Fletcher GS. Clinical Epidemiology: The Essentials. 5.ª ed. Philadelphia: Lippincott Williams & Wilkins; 2014. Lectura didáctica