Las
series económicas pueden estar influidas por una serie de procesos no
determinista, ni conocidos para el analista y que pueden incidir en que estas
observaciones presenten estructura distinta al del resto de estas series, teniendo la capacidad
de sesgar los resultados obtenidos y de afectar la capacidad de estimaciones de los
modelos. Por tanto, antes de cualquier análisis estadístico es recomendable
observar si existen datos atípicos que puedan incidir sobre los resultados. En
el siguiente ejemplo se genera una variable aleatoria x con valores aleatorios
de 100 edades de niños en un determinado centro escolar (x<-sample(5:16,100,replace=T)) y se
introducen tres valores atípicos intencionalmente en las observaciones [10,21,33] correspondiente a las edades de 21,31 y 40 años, respectivamente.
>
x<-sample(5:16,100,replace=T)
>
x[c(10,21,33)]<- c(21,31,40)
>
plot(x, type="b", pch=16)
Peña
(nd) muestra como la inclusión de valores atípicos influye en la estimación de
los parámetros en los modelos de series temporales estacionarios (ARMA), por lo
que, dado que la posición de los atípicos será siempre desconocida, es
recomendable identificarlos y estimar sus efectos, con el objetivo de eliminar
sus efectos sobre la serie. Adicionalmente, en el enlace http://r-statistics.co/Outlier-Treatment-With-R.html
se muestra como los datos atípicos pueden incidir en el análisis de regresión.
1. Identificación a partir
de gráficos
El
gráfico de caja (boxplot) constituye una primera opción al momento de analizar e identificar datos atípicos,
el mismo presenta la mediana, el primer y tercer cuartil, además del 1.5*iqr
o rango intercuartílico. En el caso de R, se puede verificar que la opción boxplot.stats(x)$out permite identificar los valores
considerados como atípico y los valores utilizados para representar el boxplot.
>
boxplot(x)
>
boxplot.stats(x)
$`stats`
[1]
5.0 8.0 10.0 13.5 21.0
$n
[1] 100
$conf
[1]
9.131 10.869
$out
[1] 31 40
2. Normalización de
variables: identificación a partir de la distancia de la media
Otra estrategia para la identificación de valores atípicos, consiste en normalizar
la variable de interés de la forma tradicional, lo que permite obtener una
nueva variable xz,
que se interpreta como el número de unidades (positivas o negativas, dependiendo del signo) en que se una observación se encuentre alejada de la media de la serie.
> zx<- (x-mean(x))/sd(x)
Una vez tenemos la variable normalizada, se consideran como valores atípicos las observaciones que se encuentren a más de 3 desviaciones estándar del promedio (abs(zx)>3). En tal sentido, verifique que las próximas líneas de instrucciones muestran: i) la creación de la variable edad normalizada; ii) el uso de la función which para identificar la posición de aquellas observaciones que cumplen la regla establecida (abs(zx)>3), en palabras, edades que se encuentren a más de 3 desviaciones desde su media; iii) por último, se utiliza el concepto de indexación, para acceder mediante las coordenadas de posición, a las edades que superan este margen [x[which(zx>3)]]. Este valor se deriva del hecho que Zx~N(0,1), por tanto, una observación que diste de 3 desviaciones de la media se considera como un valor atípico.
> zx<- (x-mean(x))/sd(x)
Una vez tenemos la variable normalizada, se consideran como valores atípicos las observaciones que se encuentren a más de 3 desviaciones estándar del promedio (abs(zx)>3). En tal sentido, verifique que las próximas líneas de instrucciones muestran: i) la creación de la variable edad normalizada; ii) el uso de la función which para identificar la posición de aquellas observaciones que cumplen la regla establecida (abs(zx)>3), en palabras, edades que se encuentren a más de 3 desviaciones desde su media; iii) por último, se utiliza el concepto de indexación, para acceder mediante las coordenadas de posición, a las edades que superan este margen [x[which(zx>3)]]. Este valor se deriva del hecho que Zx~N(0,1), por tanto, una observación que diste de 3 desviaciones de la media se considera como un valor atípico.
>
which(abs(zx)>3)
[1] 21 33
>
x[which(zx>3)]
[1] 31 40
>
pch_site<-as.numeric(abs(zx)>3)
>
plot(x, pch=pch_site, col = gray((1:4)/6)[abs(zx)])
>
valcol <- (x + abs(min(x)))/max(x + abs(min(x)))
>
plot(x, pch = 16, col = rgb(0, 0, valcol))
3. Identificación a partir
de la prueba de Tukey
El
problema de la identificación anterior es que los mementos a partir del cual se
estandariza la variable, dependen del
valor medio estimado, y por tanto, están incidido por los valores robustos. Una
alternativa es utilizar una mediad de dispersión robusta a valores
atípicos, y posteriormente establecer los rangos que permitan la identificación
de los datos atípicos.
La
prueba Tukey propone establecer un rango a partir del rango intercuartílico (IQR=q3-q1), que no depende de los valores
extremos. Este no es una regla del universo, más bien es una convención o
acuerdo entre los estadísticos. Posteriormente, se establece un rango para
determinar datos atípicos a partir de los datos que excedan el intervalo:
>
q1 <- quantile(x, 0.25)
25%
7
>
q3 <- quantile(x, 0.75)
75%
14
> iqr<-q3-q1
# Rango = IQR(x)
iqr
75%
7
>
ati_tukey <- x<(q1-1.5*iqr) | x>(q3+1.5*iqr)
>
which(ati_tukey)
[1] 21 33
>
x[ati_tukey]
[1] 31 40
4. Identificación a partir
de la prueba de Tukey ajustada
Como
observan en el ejemplo anterior, las observaciones identificadas como atípicas
siguen siendo 21 y 33, donde se registran individuos con edades de 31 y de 40
años, por lo que, continua sin reconocer el valor de 21 años (insertado
intencionalmente) como un atípico. Una alternativa práctica para aumentar la sensibilidad de la prueba, es
obtener los quintiles a partir del vector de variables originales recortado a
partid de los valores extremos. Es decir, desprendernos de un porcentaje
determinado de los valores extremos (por ejemplo el 5% de los datos colocados
en el extremo en ambas colas de la distribución de la variable) y a partir de
este vector recortado [xrecortada<-x[x>x5_95[1] & x<x5_95[2]]], obtener los quantiles y el rango intercuartílico (quantile(xrecortada, 0.25)), por tanto, obteniendo un rango más estrecho. Ahora, se obtienen los valores anormales, utilizando el rango creado a partir del vector recortado (ati_tukeyR <- x<(q1a-1.5*iqra) | x>(q3a+1.5*iqra)).
> (x5_95
<- quantile(x, c(0.1, 0.90)))
10% 90%
6 16
> xrecortada<-x[x>x5_95[1] & x<x5_95[2]]
>
> (q1a
<- quantile(xrecortada, 0.25))
25%
9
> (q3a
<- quantile(xrecortada, 0.75))
75%
13
>
iqra<-q3a-q1a # Rango = IQR(x)
>
ati_tukeyR <- x<(q1a-1.5*iqra) | x>(q3a+1.5*iqra)
>
which(ati_tukeyR)
[1] 10 21 33
>
x[ati_tukeyR]
[1] 21 31 40
>
plot(x, pch = 16, col = rgb(0, 0, valcol),
ylim=c(-0,50))
>
abline(h=c(q1-1.5*iqr,q3+1.5*iqr),
col="blue")
> abline(h=c(q1a-1.5*iqra,q3a+1.5*iqra),
col="red", lwd=3, lty=2)
Las líneas discontinuas representan el rango creado a partir del vector recortado
5. Identificación a partir
de la distancia de Cooks
Considere
el siguiente ejemplo, donde solo se regresa la variable de interés en función
de una constante (lm(x ~ 1)),
por lo que, el ajuste condicionado del modelo corresponde al promedio.
> #Distancia de cooks
> #Fuente: codigos tomados de:
http://r-statistics.co/Outlier-Treatment-With-R.html
>
mod <- lm(x ~ 1)
>
cooksd <- cooks.distance(mod)
>
plot(cooksd, pch="*", cex=2)
>
abline(h = 4*mean(cooksd, na.rm=T), col="red")
>
text(x=1:length(cooksd)+1, y=cooksd,
labels=ifelse(cooksd>4*mean(cooksd, na.rm=T),
names(cooksd),""),
col="red")
“Una vez que se ha identificado la presencia de una observación atípica, se debe investigar su procedencia y si se concluye que se ha generado por errores en el muestreo se debe eliminar. En otro caso, es conveniente repetir el análisis estadístico sin la observación atípica y examinar las nuevas conclusiones. Si dichas conclusiones son semejantes a las obtenidas con ella, la observación puede mantenerse. Si, por el contrario, las conclusiones se modifican drásticamente, la observación atípica se denomina influyente. En este punto, el experimentador debe enjuiciar si es posible su aparición por un error experimental (eliminarlo) o si tal observación podría volver a aparecer (buscar modelos más complejos)” (Fuente: Universidad de Coruña).