¡Bienvenido! Este tutorial está diseñado para guiarte a través de los conceptos fundamentales de las distribuciones de probabilidad más utilizadas en bioestadística. Cada sección combina la teoría esencial con ejemplos clínicos prácticos y el código en R para que puedas aplicar lo que aprendes de inmediato.
Al finalizar esta sección, serás capaz de describir las propiedades de la distribución normal, interpretar sus parámetros (media y desviación estándar) y calcular la probabilidad de un evento utilizando la estandarización (puntuación Z).
La distribución normal, o “campana de Gauss”, es el
modelo de probabilidad más importante para variables continuas en
ciencias de la salud. Se caracteriza por su forma de campana simétrica y
se define completamente por dos parámetros: la media
(μ), que indica su centro, y la desviación estándar
(σ), que mide su dispersión. Para calcular probabilidades,
estandarizamos cualquier valor (X) a una puntuación Z
usando la fórmula Z = (X - μ) / σ.
Los niveles de glucosa en sangre en ayunas de una población de adultos no diabéticos se distribuyen de forma aproximadamente normal, con una media (μ) de 90 mg/dL y una desviación estándar (σ) de 13 mg/dL.
Pregunta: ¿Qué porcentaje de esta población tendría niveles de glucosa en el rango de prediabetes (entre 100 mg/dL y 125 mg/dL)?
# 1. Definir los parámetros de la distribución
media_glucosa <- 90
de_glucosa <- 13
limite_inferior <- 100
limite_superior <- 125
# 2. Calcular la probabilidad usando pnorm()
# pnorm() calcula la probabilidad acumulada (área a la izquierda)
prob_hasta_125 <- pnorm(limite_superior, mean = media_glucosa, sd = de_glucosa)
prob_hasta_100 <- pnorm(limite_inferior, mean = media_glucosa, sd = de_glucosa)
# La probabilidad del rango es la diferencia
prob_prediabetes <- prob_hasta_125 - prob_hasta_100
cat("La probabilidad de estar en el rango de prediabetes es:",
round(prob_prediabetes * 100, 2), "%\n")
## La probabilidad de estar en el rango de prediabetes es: 21.73 %
# 3. Generar el gráfico de la distribución
x_vals <- seq(media_glucosa - 4 * de_glucosa, media_glucosa + 4 * de_glucosa, length.out = 500)
y_vals <- dnorm(x_vals, mean = media_glucosa, sd = de_glucosa)
# Dibujar la curva y suprimir el eje X por defecto
plot(x_vals, y_vals, type = "l", lwd = 2, col = "blue",
main = "Distribución de Niveles de Glucosa en Sangre",
xlab = "Nivel de Glucosa (mg/dL)",
ylab = "Densidad de Probabilidad",
frame.plot = FALSE,
xaxt = "n")
# Añadir un eje X personalizado con saltos de 10
marcas_eje_x <- seq(40, 140, by = 10)
axis(side = 1, at = marcas_eje_x)
# Sombrear el área de interés
x_sombreado <- seq(limite_inferior, limite_superior, length.out = 100)
y_sombreado <- dnorm(x_sombreado, mean = media_glucosa, sd = de_glucosa)
polygon(c(limite_inferior, x_sombreado, limite_superior),
c(0, y_sombreado, 0),
col = rgb(1, 0, 0, alpha = 0.5), border = NA)
# Añadir leyenda
legend("topright",
legend = c("Distribución Normal", "Área de Prediabetes"),
fill = c(NA, rgb(1, 0, 0, alpha = 0.5)),
border = NA,
lty = c(1, NA),
bty = "n",
cex = 0.8)
Serás capaz de utilizar métodos gráficos (histogramas, gráficos Q-Q) y pruebas formales (Shapiro-Wilk) para evaluar si un conjunto de datos se ajusta a una distribución normal.
Antes de usar pruebas que asumen normalidad (ej. prueba t), debemos verificar si nuestros datos cumplen este supuesto.
Histograma: Da una primera impresión de la forma (buscamos una campana simétrica).
Gráfico Q-Q: Es la mejor herramienta visual. Compara los cuantiles de nuestros datos con los de una normal teórica. Si los puntos siguen una línea recta, los datos son normales.
Prueba de Shapiro-Wilk: Es una prueba de hipótesis formal.
H₀: Los datos provienen de una distribución normal.
Si p-valor > 0.05, no rechazamos H₀ y asumimos normalidad.
Un investigador mide los niveles de colesterol LDL (mg/dL) en una muestra de 25 pacientes para evaluar si los datos se distribuyen normalmente.
# 1. Crear el vector con los datos
colesterol_ldl <- c(112, 118, 123, 109, 134, 128, 115, 104, 120, 125,
130, 111, 107, 122, 138, 119, 127, 131, 106, 114,
129, 133, 117, 124, 110)
# 2. Evaluación Gráfica (Histograma y Gráfico Q-Q)
par(mfrow = c(1, 2)) # Ventana para dos gráficos
# Histograma
hist(colesterol_ldl, main = "Histograma de Colesterol LDL", xlab = "Colesterol LDL (mg/dL)", col = "lightblue")
# Gráfico Q-Q
qqnorm(colesterol_ldl, main = "Gráfico Q-Q de Colesterol LDL")
qqline(colesterol_ldl, col = "red", lwd = 2)
par(mfrow = c(1, 1)) # Restaurar ventana gráfica
# 3. Prueba de Hipótesis Formal (Shapiro-Wilk)
test_normalidad <- shapiro.test(colesterol_ldl)
print(test_normalidad)
##
## Shapiro-Wilk normality test
##
## data: colesterol_ldl
## W = 0.97181, p-value = 0.6911
Interpretación: El gráfico Q-Q muestra puntos alineados y el p-valor de la prueba de Shapiro-Wilk es alto (ej. > 0.05), por lo que concluimos que los datos son consistentes con una distribución normal.
Serás capaz de calcular probabilidades para un rango y determinar el valor (cuantil) que corresponde a un percentil.
Con datos normales, podemos responder a dos preguntas clave:
Calcular Probabilidad: ¿Qué porcentaje de la población supera cierto valor? (Usamos la función pnorm()).
Calcular Cuantil: ¿Qué valor define al 5% más bajo de la población? (Usamos la función qnorm()).
Presión Intraocular (PIO): En adultos sanos, la PIO es N(μ=15.5, σ=2.5) mmHg. ¿Qué porcentaje tiene una PIO superior a 21 mmHg?
Peso al Nacer: El peso al nacer es N(μ=3400, σ=450) gramos. ¿Qué peso máximo define al 5% de los recién nacidos con menor peso?
# Ejemplo 1: Probabilidad de PIO elevada
media_pio <- 15.5
de_pio <- 2.5
prob_alta_pio <- pnorm(21, mean = media_pio, sd = de_pio, lower.tail = FALSE)
cat("Porcentaje con PIO > 21 mmHg:", round(prob_alta_pio * 100, 2), "%\n")
## Porcentaje con PIO > 21 mmHg: 1.39 %
# Ejemplo 2: Punto de corte para bajo peso al nacer
media_peso <- 3400
de_peso <- 450
peso_corte <- qnorm(0.05, mean = media_peso, sd = de_peso)
cat("Peso máximo para el 5% inferior:", round(peso_corte, 0), "gramos\n")
## Peso máximo para el 5% inferior: 2660 gramos
Serás capaz de identificar escenarios binomiales, calcular probabilidades de un número exacto de “éxitos” y calcular la media y desviación estándar.
La distribución binomial modela el número de “éxitos” en una serie de ensayos, siempre que se cumplan 4 condiciones (BINS): Binario (dos resultados), Independiente, Número fijo de ensayos (n), y Siempre la misma probabilidad de éxito (p).
Media: μ = n * p
Desviación Estándar: σ = sqrt(n * p * (1 - p))
Se sabe que el 20% (p=0.20) de los pacientes que reciben una vacuna experimentan efectos secundarios. Un médico vacuna a 10 pacientes (n=10).
Pregunta: ¿Cuál es la probabilidad de que exactamente 2 pacientes experimenten efectos secundarios?
# 1. Parámetros del modelo
n <- 10 # Número de ensayos (pacientes)
p <- 0.20 # Probabilidad de éxito (efectos secundarios)
k <- 2 # Número exacto de éxitos
# 2. Calcular la probabilidad con dbinom()
prob_exactamente_2 <- dbinom(x = k, size = n, prob = p)
cat("Probabilidad de que exactamente 2 de 10 tengan efectos:", round(prob_exactamente_2, 4), "\n")
## Probabilidad de que exactamente 2 de 10 tengan efectos: 0.302
# 3. Calcular media y DE
media_binomial <- n * p
de_binomial <- sqrt(n * p * (1 - p))
cat("Valor esperado (media):", media_binomial, "pacientes.\n")
## Valor esperado (media): 2 pacientes.
cat("Desviación estándar:", round(de_binomial, 2), "pacientes.\n")
## Desviación estándar: 1.26 pacientes.
Serás capaz de determinar cuándo usar la aproximación normal y aplicarla, incluyendo la corrección de continuidad.
Cuando el número de ensayos (n) es grande, calcular probabilidades binomiales acumuladas es tedioso. Si se cumple la condición de éxito-fracaso (n * p ≥ 10 y n * (1-p) ≥ 10), podemos usar la distribución normal como una excelente aproximación. Es crucial usar la corrección de continuidad (ajustar el valor discreto en ±0.5) para mejorar la precisión.
La prevalencia de hipertensión en adultos mayores es del 40% (p=0.40). En una muestra de 150 pacientes (n=150), ¿cuál es la probabilidad de que 70 o más tengan hipertensión?
# 1. Parámetros
n <- 150
p <- 0.40
# 2. Verificar condición y calcular parámetros para la aproximación
if (n * p >= 10 && n * (1 - p) >= 10) {
cat("La condición se cumple. Se puede usar la aproximación.\n")
media_aprox <- n * p
de_aprox <- sqrt(n * p * (1 - p))
# 3. Aplicar corrección de continuidad para P(X >= 70)
punto_corregido <- 70 - 0.5
# 4. Calcular la probabilidad con pnorm()
prob_aprox <- pnorm(punto_corregido, mean = media_aprox, sd = de_aprox, lower.tail = FALSE)
cat("Probabilidad aproximada de que >= 70 tengan hipertensión:", round(prob_aprox, 4), "\n")
}
## La condición se cumple. Se puede usar la aproximación.
## Probabilidad aproximada de que >= 70 tengan hipertensión: 0.0567
Serás capaz de calcular probabilidades binomiales acumuladas para un rango de resultados (ej. “al menos k” o “como máximo k”).
En la práctica, nos interesan rangos de resultados. La función pbinom() en R es ideal para esto, ya que calcula la probabilidad acumulada P(X ≤ k). Para calcular P(X ≥ k), usamos la regla del complemento: 1 - P(X ≤ k-1).
Un tratamiento tiene una tasa de adherencia del 70% (p=0.70). Se receta a 25 pacientes (n=25). ¿Cuál es la probabilidad de que al menos 20 se adhieran al tratamiento?
# 1. Parámetros
n <- 25
p <- 0.70
k <- 20
# 2. Calcular P(X >= 20)
# pbinom(q, ...) calcula P(X <= q)
# P(X >= 20) es lo mismo que 1 - P(X <= 19)
prob_al_menos_20 <- 1 - pbinom(q = k - 1, size = n, prob = p)
cat("Probabilidad de que al menos 20 se adhieran:", round(prob_al_menos_20, 4), "\n")
## Probabilidad de que al menos 20 se adhieran: 0.1935
# Alternativa directa con el argumento lower.tail = FALSE
# Calcula P(X > q), por lo que P(X >= 20) es P(X > 19)
prob_directa <- pbinom(q = k - 1, size = n, prob = p, lower.tail = FALSE)
cat("Probabilidad (método directo):", round(prob_directa, 4), "\n")
## Probabilidad (método directo): 0.1935
¡Felicitaciones por completar este tutorial!
Has dominado los fundamentos de las distribuciones de probabilidad más importantes en las ciencias de la salud: la Normal para datos continuos y la Binomial para datos discretos. Has aprendido a describir estas distribuciones, a calcular probabilidades y a entender cómo se conectan a través de la aproximación normal.
Estas distribuciones no son solo conceptos teóricos; son las herramientas fundamentales que nos permiten entender la variabilidad y el azar en los datos biológicos. Son los cimientos sobre los que se construye el siguiente gran pilar de la bioestadística: la estadística inferencial.
¿Qué Sigue? De la Probabilidad a la Inferencia Hasta ahora, hemos trabajado con poblaciones donde conocíamos los parámetros (como la media μ y la desviación estándar σ). En el mundo real, casi nunca tenemos esa información. Lo que sí tenemos son muestras: un pequeño subconjunto de la población que podemos estudiar.
La estadística inferencial es el arte y la ciencia de usar los datos de una muestra para hacer conclusiones educadas (inferencias) sobre la población entera. Las preguntas que responderemos serán:
¿Qué tan seguros podemos estar de que la media que calculamos en nuestra muestra se parece a la media real de toda la población? (Intervalos de Confianza).
¿La diferencia que observamos entre dos grupos (ej. un grupo con tratamiento y un grupo con placebo) es real, o podría haber ocurrido solo por azar? (Pruebas de Hipótesis).
Tu conocimiento de las distribuciones de probabilidad será esencial, ya que nos permitirá cuantificar la probabilidad de observar los resultados de nuestra muestra y, a partir de ahí, tomar decisiones basadas en evidencia.
Estás listo para dar el siguiente paso y empezar a usar los datos para responder preguntas de investigación fundamentales. ¡Adelante!