Ejemplos de implementación en R y SAS
Implementación lado a lado en R y SAS de las recomendaciones del Módulo 14, con dos casos clínicos integradores y tablas de equivalencias.
Datasets: Presión arterial en ensayo clínico (simulado), Infecciones posoperatorias multicéntricas (simulado)
Objetivos de aprendizaje
- Traducir las recomendaciones del Módulo 14 a sintaxis ejecutable en R y SAS, lado a lado.
- Resolver dos casos clínicos integradores de principio a fin: exploración, modelado, diagnóstico e interpretación.
- Comparar la salida de R y SAS para los mismos modelos e interpretar diferencias de nomenclatura.
- Aplicar buenas prácticas de programación reproducible en R (lme4, nlme, ggplot2, DHARMa) y en SAS (ODS, opciones de estimación).
Este módulo retoma las recomendaciones metodológicas del Módulo 14 y las aplica de punta a punta sobre dos casos clínicos, mostrando en cada paso el código en R (ejecutable, celdas WebR) junto con el código SAS equivalente ("Código SAS equivalente"). El objetivo es que, dado un escenario, sepas qué opciones usar en cada lenguaje y cómo leer la salida correspondiente.
Caso 1: presión arterial en un ensayo con medidas repetidas
Un ensayo clínico aleatorizado mide la presión arterial sistólica (PAS) de cada paciente en 5 visitas (basal + 4 seguimientos), comparando un nuevo fármaco contra placebo. La pregunta es si el fármaco reduce la PAS con el tiempo más que el placebo, y cuál es la estructura de correlación intra-sujeto más adecuada.
Siguiendo el Módulo 14: (1) explorar con spaghetti plot y perfil medio; (2)
ajustar un LMM con intercepto y pendiente aleatorios (o, alternativamente,
gls con una estructura de correlación residual tipo AR(1)); (3) comparar
estructuras de covarianza por AIC/BIC; (4) diagnosticar con DHARMa.
Caso 2: infecciones posoperatorias en un estudio multicéntrico
Un estudio observacional multicéntrico (10 centros) registra si cada paciente desarrolló o no una infección posoperatoria (sí/no) tras dos tipos de intervención. Interesa tanto el efecto específico de cada centro (¿cuánto cambia el riesgo dentro de un centro dado?) como el efecto poblacional promedio (¿cuál es el efecto medio del tipo de intervención en la población de centros?).
Siguiendo el Módulo 14: (1) explorar proporciones de infección por centro; (2)
ajustar un GLMM (glmer, familia binomial, intercepto aleatorio por
centro) para el efecto condicional, y un GEE (geeglm, correlación
exchangeable) para el efecto marginal; (3) comparar e interpretar los odds
ratio condicional vs. marginal; (4) diagnosticar con DHARMa.
Comparación directa de salidas R vs. SAS
Aunque la nomenclatura difiere, los resultados deben ser numéricamente
equivalentes (o muy cercanos, según el algoritmo de estimación). La tabla al
final de esta lección resume las correspondencias más comunes entre la salida
de summary()/anova() en R y las tablas "Solution for Fixed Effects" /
"Covariance Parameter Estimates" / "Fit Statistics" de PROC MIXED /
PROC GLIMMIX.
Buenas prácticas de programación
En R: mantener un script reproducible con set.seed() explícito, cargar
paquetes al inicio (library(lme4), library(nlme), library(ggplot2),
library(DHARMa)), separar exploración / modelado / diagnóstico en secciones
claramente comentadas, y usar broom.mixed::tidy() o summary() para extraer
resultados de forma consistente.
En SAS: usar ods graphics on y ods output para capturar tablas y
gráficos de forma reproducible, documentar las opciones de estimación
(method=reml vs method=ml, ddfm= para grados de libertad), y preferir
PROC GLIMMIX sobre PROC MIXED cuando el desenlace no es continuo (PROC
MIXED asume normalidad de la respuesta condicional).
| Cantidad | R (lme4 / nlme / geepack) | SAS |
|---|---|---|
| Estimación de efecto fijo | summary(modelo)$coefficients (columna Estimate) | Tabla "Solution for Fixed Effects" (columna Estimate) |
| Error estándar | columna Std. Error | columna Standard Error |
| Varianza de efecto aleatorio | VarCorr(modelo) | Tabla "Covariance Parameter Estimates" |
| AIC / BIC | AIC(modelo) / BIC(modelo) | Tabla "Fit Statistics" (AIC, BIC) |
| OR condicional (GLMM) | exp(fixef(modelo)) | "Odds Ratio Estimates" (PROC GLIMMIX) |
| OR marginal (GEE) | exp(coef(modelo_gee)) | Estimación exponenciada en PROC GEE |
| Correlación de trabajo (GEE) | summary(modelo_gee)$corr | "Working Correlation Matrix" (PROC GEE) |
Repaso rápido: flashcards
Autoevaluación
1. En el Caso 1 (PAS con medidas repetidas), ¿qué dos enfoques son razonables para capturar la correlación intra-paciente?
2. En el Caso 2, si el objetivo es "el efecto promedio del tipo de intervención sobre el riesgo de infección en la población de centros", ¿qué OR es el relevante?
3. ¿Qué tabla de SAS corresponde a VarCorr() en R?
4. Para diagnosticar sobredispersión en el GLMM binomial del Caso 2 usando R, ¿qué función es la adecuada?