#1.- Introducción

Tal y como se ha visto en documentos anteriores, el método de regresión por mínimos cuadrados ordinarios OLS (regresión lineal simple y regresión lineal múltiple) es muy útil para estudiar una variable respuesta continua en función de uno o mÔs predictores. Sin embargo, bajo determinadas circunstancias y a pesar de existir una relación lineal entre las variables, el método de mínimos cuadrados ordinarios puede no ser adecuado. Datos censurados: Se considera que los datos estÔn censurados (censored) cuando existe un determinado límite en la variable respuesta (superior, inferior o ambos) a partir del cual a todas las observaciones se les asigna un mismo valor. Algunos ejemplos de datos censurados son:

Un instrumento de medida, por ejemplo una balanza, tiene un límite de detección por debajo del cual todo valor se considera de 0 (censura inferior). En una encuesta se pregunta por el nivel de ingresos de las personas. Se divide la escala en múltiples intervalos, el último de los cuales, contempla como iguales a todas aquellas personas que cobren 5000 euros o mÔs (censura superior).

La característica fundamental de un escenario censurado es que hay una población subyacente en la que sí existen observaciones fuera de los límites de censura, sin embargo, debido a la incapacidad para detectarlas/seleccionarlas en el muestreo, la población observada parece no contenerlas. Datos truncados: Las situaciones con datos truncados aparecen cuando en una población a partir de un determinado límite no existen observaciones. La diferencia fundamental respecto a los datos censurados es que, en estos últimos, las observaciones sí existen en la población latente pero no se pueden captar en el muestreo.

Aunque la diferencia puede parecer mínima, es muy importante tenerla en cuenta puesto que, si el objetivo último de la inferencia es obtener información sobre la población real, en el caso de escenarios censurados, hay que incluir de alguna forma esos eventos que existen pero no se observan. Este documento se centra en el tratamiento de casos censurados.

Las siguientes imÔgenes muestran una representación grÔfica e intuitiva del impacto que tienen los datos censurados sobre la regresión por mínimos cuadrados. Supónganse dos variables X e Y que tienen una relación lineal. (Para poder simular los datos se considera que la relación sigue la ecuación Y=X+2+error ).

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
#----------------------------------
simulador <- function(x){x + 20}
observaciones <- simulador(seq(0,50,length.out = 200))
#----------------------------------
set.seed(12345)
observaciones <- observaciones + rnorm(n = 200, mean = 0, sd = 12)
#-----------------------------------
datos <- data.frame(x = seq(0,50,length.out = 200), y = observaciones)
ggplot(data = datos, aes(x = x, y = y)) +
geom_point(size = 2) +
geom_smooth(method = "lm", se = FALSE) +
theme_bw() +
lims(y = c(0,100)) +
labs(title = "Regresión OLS con los datos no censurados")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 1 rows containing missing values (`geom_point()`).

ggplot(data = datos, aes(x = x, y = y)) +
geom_point(size = 2) +
geom_point(data = filter(datos, y < 30), size = 2, color = "grey") +
geom_hline(yintercept = 30, linetype = "dashed") +
theme_bw() +
lims(y = c(0,100)) +
labs(title = "Observaciones por encima y debajo\ndel límite de detección")
## Warning: Removed 1 rows containing missing values (`geom_point()`).
## Removed 1 rows containing missing values (`geom_point()`).

datos_0 <- datos
datos_0$y[datos_0$y < 30] <- 0
p1 <- ggplot(data = datos_0, aes(x = x, y = y)) +
      geom_point(size = 2) +
      geom_point(data = filter(datos_0, y == 0), size = 2,
                 color = "firebrick") +
      geom_smooth(data = datos,method = "lm", se = FALSE) +
      geom_smooth(data = datos_0, method = "lm", se = FALSE,
                  color = "firebrick") +
      geom_hline(yintercept = 30, linetype = "dashed") +
      lims(y = c(0,100)) +
      theme_bw() +
      labs(title = "Observaciones censuradas ajustadas a 0")
datos_30 <- datos
datos_30$y[datos_30$y < 30] <- 30
p2 <- ggplot(data = datos_30, aes(x = x, y = y)) +
      geom_point(size = 2) +
      geom_point(data = filter(datos_30, y == 30), size = 2,
                 color = "firebrick") +
      geom_smooth(data = datos,method = "lm", se = FALSE) +
      geom_smooth(data = datos_30, method = "lm", se = FALSE,
                  color = "firebrick") +
      geom_hline(yintercept = 30, linetype = "dashed") +
      theme_bw() +
      lims(y = c(0,100)) +
      labs(title = "Observaciones censuradas ajustadas a 30")
grid.arrange(p1, p2, ncol = 1)
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 rows containing non-finite values (`stat_smooth()`).
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 rows containing non-finite values (`stat_smooth()`).
## `geom_smooth()` using formula = 'y ~ x'