#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'