Se presenta un boxplot de cada variable cuantitativa. Además se realiza una tabla con las estimaciones robustas y no robustas de tendencia central y dispersión para cada variable cuantitativa.
Presentar un boxplot para cada variable cuantitativa
Se muestran los boxplots de las variables Years, Cig, PC, Weight, Age, Height
par(mfrow=c(2,2))
for (i in 1:4){
boxplot(mydata[,res[i]], main=names(mydata)[res[i]],col="gray")
}
par(mfrow=c(1,1))
par(mfrow=c(1,2))
for (i in 5:6){
boxplot(mydata[,res[i]], main=names(mydata)[res[i]],col="gray")
}
par(mfrow=c(1,1))
Aún que se observan algunos valores atípicos en los boxplots de las variables Years y Cig podemos considerar que son un artefacto debido a que hay dos grupos de datos: ceros y diferentes de cero, con una proporción similar.
Ahora se presentan los valores atípicos del resto de las variables cuantitativas:
# Outlier values
vars.cuantitativas <- res[-c(1,2)]
for(i in 1:length(vars.cuantitativas) ) {
# i <- 1
#print(boxplot.stats(mydata[,i])$out)
indices <- which(mydata[,vars.cuantitativas[i]] %in% boxplot.stats(mydata[,vars.cuantitativas[i]])$out)
cat(names(mydata)[vars.cuantitativas[i]],":", toString(indices), "\n" )
}
PC : 2
Weight : 9, 11, 13, 14, 21, 34, 48, 53, 61, 94, 104, 110, 125, 133, 147, 180, 207, 213, 222, 267
Age : 247, 254
Height :
La variable que tiene un mayor número valores atípicos es Weight y claramente fuera de las magnitudes lógicas para pesos de personas expresadas en Kg. Esto hace pensar que se trate de un error, tal como se indica en el enunciado. Posiblemente se trate de un cambio de unidades de medida, en lugar de kg están medidos en gramos. El resto de variables presentan valores atípicos que no se pueden considerar erróneos.
Pasemos a corregir los valores erroneos de la variable Weight:
i <- 2
indices <- which(mydata[,vars.cuantitativas[i]] %in% boxplot.stats(mydata[,vars.cuantitativas[i]])$out)
mydata[indices, vars.cuantitativas[i]] <- mydata[indices, vars.cuantitativas[i]]/1000
Ahora se comprueba con un boxplot los cambios efectuados:
boxplot(mydata[,vars.cuantitativas[i]], main=names(mydata)[vars.cuantitativas[i]],col="gray")

Tabla de las estimaciones de tendencia central y dispersión (robustas y no robustas) para cada variable cuantitativa
mean.n <- as.vector(sapply( mydata[,res ],mean,na.rm=TRUE ) )
std.n <- as.vector(sapply(mydata[,res ],sd, na.rm=TRUE))
median.n <- as.vector(sapply(mydata[,res],median, na.rm=TRUE))
mean.trim.0.05 <- as.vector(sapply(mydata[,res],mean, na.rm=TRUE, trim=0.05))
mean.winsor.0.05 <- as.vector(sapply(mydata[,res],winsor.mean, na.rm=TRUE,trim=0.05))
IQR.n <- as.vector(sapply(mydata[,res],IQR, na.rm=TRUE))
mad.n <- as.vector(sapply(mydata[,res],mad, na.rm=TRUE))
kable(data.frame(variables= names(mydata)[res],
Media = mean.n,
Mediana = median.n,
Media.recort.0.05= mean.trim.0.05,
Media.winsor.0.05= mean.winsor.0.05
),
digits=2, caption="Estimaciones de Tendencia Central")
Estimaciones de Tendencia Central| Years | 8.46 | 0.00 | 7.01 | 8.11 |
| Cig | 7.27 | 0.00 | 6.11 | 7.05 |
| PC | 3.33 | 3.55 | 3.36 | 3.33 |
| Weight | 67.72 | 68.00 | 67.73 | 67.71 |
| Age | 45.59 | 46.00 | 45.49 | 45.54 |
| Height | 171.44 | 172.00 | 171.47 | 171.43 |
kable(data.frame(variables= names(mydata)[res],
Desv.Standard = std.n,
IQR = IQR.n,
MAD = mad.n
),
digits=2, caption="Estimaciones de Dispersión")
Estimaciones de Dispersión| Years | 12.54 | 15.25 | 0.00 |
| Cig | 10.41 | 13.00 | 0.00 |
| PC | 0.63 | 0.88 | 0.54 |
| Weight | 3.83 | 6.00 | 4.45 |
| Age | 10.63 | 14.00 | 10.38 |
| Height | 5.74 | 10.00 | 7.41 |
Se puede observar que para las variables Years y Cig las medidas robustas discrepan bastante de las ordinarias debido a que los datos contienen un gran número de ceros.