14.2 Datos faltantes
Los datos faltantes son comunes y pueden sesgar los análisis si se manejan mal. Los modelos Bayesianos pueden imputar valores faltantes dentro del modelo, tratándolos como parámetros adicionales.
14.2.1 Tipos de datos faltantes
- MCAR (Faltante Completamente Al Azar): La falta es independiente de todo. Eliminar casos es insesgado pero pierde potencia.
- MAR (Faltante Al Azar): La falta depende de variables observadas. Se puede manejar mediante imputación condicional en los datos observados.
- MNAR (Faltante No Al Azar): La falta depende de valores no observados. El más difícil de manejar — requiere un modelo explícito de la falta.
# Demonstrate missing data types and bias
set.seed(42)
n <- 300
# Full data
x <- runif(n, 0, 10)
y <- 2 + 0.5 * x + rnorm(n, 0, 1)
# MCAR: randomly remove 20% of x
mcar_idx <- sample(1:n, 0.2 * n)
x_mcar <- x
x_mcar[mcar_idx] <- NA
# MAR: remove x when y is high (y is observed)
mar_idx <- which(y > quantile(y, 0.8))
x_mar <- x
x_mar[mar_idx] <- NA
# Complete-case analysis (drop NAs)
m_full <- lm(y ~ x)
m_mcar <- lm(y ~ x_mcar[!is.na(x_mcar)] ~ x[!is.na(x_mcar)])
# Fix: proper formula
d_mcar <- data.frame(y = y, x = x_mcar)
m_mcar <- lm(y ~ x, data = d_mcar[complete.cases(d_mcar), ])
d_mar <- data.frame(y = y, x = x_mar)
m_mar <- lm(y ~ x, data = d_mar[complete.cases(d_mar), ])
cat("Missing data bias comparison:\n")
cat(" True slope: 0.500\n")
cat(" Full data slope:", round(coef(m_full)[2], 3), "\n")
cat(" MCAR slope (complete cases):", round(coef(m_mcar)[2], 3), "\n")
cat(" MAR slope (complete cases):", round(coef(m_mar)[2], 3), "(biased!)\n")
cat("\n MCAR: complete-case is unbiased but loses power\n")
cat(" MAR: complete-case is BIASED — need imputation\n")14.2.2 Imputación Bayesiana
El enfoque Bayesiano trata los valores faltantes como parámetros a estimar:
Los valores faltantes se imputan a partir de su distribución posterior, y la incertidumbre en los valores imputados se propaga a los estimados de regresión.
# Bayesian imputation: simple demonstration
set.seed(42)
n <- 300
x <- runif(n, 0, 10)
y <- 2 + 0.5 * x + rnorm(n, 0, 1)
# Create MAR missingness: x missing when y is high
mar_idx <- which(y > quantile(y, 0.8))
x_obs <- x
x_obs[mar_idx] <- NA
# Method 1: Complete-case (biased)
d_cc <- data.frame(y = y, x = x_obs)[complete.cases(data.frame(y = y, x = x_obs)), ]
m_cc <- lm(y ~ x, data = d_cc)
# Method 2: Mean imputation (too simple)
x_mean_imp <- ifelse(is.na(x_obs), mean(x_obs, na.rm = TRUE), x_obs)
m_mean <- lm(y ~ x_mean_imp)
# Method 3: Conditional imputation (impute from y)
# Since x and y are correlated, use y to predict missing x
d_obs <- data.frame(y = y[!is.na(x_obs)], x = x_obs[!is.na(x_obs)])
m_impute_x <- lm(x ~ y, data = d_obs)
x_imputed <- ifelse(is.na(x_obs),
predict(m_impute_x, newdata = data.frame(y = y)),
x_obs)
m_bayes <- lm(y ~ x_imputed)
cat("Imputation comparison:\n")
cat(" True slope: 0.500\n")
cat(" Complete-case:", round(coef(m_cc)[2], 3), "(biased under MAR)\n")
cat(" Mean imputation:", round(coef(m_mean)[2], 3), "(biased)\n")
cat(" Conditional imputation:", round(coef(m_bayes)[2], 3), "(better)\n")
cat("\n Full Bayesian imputation would also propagate\n")
cat(" the uncertainty in the imputed values.\n")Los datos faltantes son una oportunidad de modelado. Los enfoques estándar para datos faltantes — eliminar casos, imputación por la media — son decisiones de modelado, aunque no lo parezcan. Eliminar casos asume que los datos son MCAR. La imputación por la media asume que los valores faltantes igualan la media observada. Ambos suelen ser incorrectos. El enfoque Bayesiano es más honesto: trate los valores faltantes como cantidades desconocidas, modélelos, y deje que los datos informen sus valores. Esto es imputación múltiple dentro de la posterior — cada muestra posterior contiene un valor imputado diferente, y la incertidumbre se propaga naturalmente. El resultado no es solo mejores estimados — es incertidumbre más honesta.
Resumen de la Sección 14.2
- MCAR: La falta es independiente de todo — el análisis de casos completos es insesgado.
- MAR: La falta depende de datos observados — necesita imputación.
- MNAR: La falta depende de datos no observados — el más difícil de manejar.
- Imputación Bayesiana: Trate los valores faltantes como parámetros, estímelos de la posterior.
- La incertidumbre en los valores imputados se propaga a los estimados de regresión naturalmente.