Gráficos y Tablas
Análisis exploratorio y corrección de errores detectados
No siempre vamos a poder realizar de forma tan sencilla la detección de errores, sobre todo cuando tenemos un gran volumen de datos, algo habitual en ciencia de datos. Por tanto, para poder detectar problemas presentes en los datos, es necesario llevar a cabo un análisis exploratorio de los mismos a través de gráficos y tablas.
Algunas de las funciones más útiles para este propósitos son:
summary(dataFrame)
: Ofrece un resumen de todas las variables presentes en el conjunto de datos. Para las variables numéricas, muestra valor mínimo, máximo, media, mediana y primer y tercer cuartil; mientras que para las variables de tipo factor, muestra los 6 niveles mayoritarios, junto con sus frecuencias. En ambos casos se muestra además el número de casos perdidos.
psych::describe(Filter(is.numeric,dataFrame))
: Esta función ofrece más medidas de las variables numéricas como la desviación estándar y el índice de simetría
table(varCuali), prop.table(table(varCuali)
: Muestra la tabla de frecuencias de la variable cualitativa seleccionada.
hist(varCuant)
: Muestra el histograma de la variable cuantitativa seleccionada.
barplot(table(varCuali))
: Muestra el diagrama de barras de la variable cualitativa seleccionada.
A partir de estas funciones es posible hacerse una idea muy clara de cómo son las variables del conjunto de datos y de sus problemas. Para ello es importante fijarse en los siguientes aspectos:
Límites de las variables cuantitativas: Una forma rápida de verificar que las variables cuantitativas toman valores lógicos, es verificar que el máximo y el mínimo de las variables se encuentran dentro de los límites que marque la variable (por ejemplo, las variables que representan porcentajes deben situarse entre 0 y 100 o medidas como el peso, la altura, la edad, etc tomarán un número positivo).
Niveles de las variables cualitativas: En línea con el punto anterior, también debemos verificar que los niveles de las variables cualitativas tienen sentido, teniendo en cuenta el significado de las mismas.
Número de datos perdidos: Este tema lo veremos con mas detalle en el Tema 3, pero si en una variable observamos muchos datos faltantes (más de la mitad), es recomendable rechazarla al inicio del proceso, pues carece de suficiente información.
Datos perdidos codificados: En ocasiones, en lugar de deja "huecos" para representar los datos faltantes, se utiliza algún tipo de codificación que facilite el envío y la lectura de los conjuntos de datos. Ejemplo: En variables cualitativas el símbolo ? o el clásico NSNC (no sabe/no contesta) y en variables cuantitativas, el valor -1 (si la variable no puede tomar valores negativos) o 999. Es fundamental detectar este aspecto para poder analizar de manera correcta la presencia de ausentes.
Frecuencia de las categorías de las variables cualitativas: Dado que los modelos predictivos se basan en detectar patrones en las variables input que nos permitan aproximar el valor de la variable objetivo, es imprescindible que todos los niveles de las variables cualitativas estén bien representados pues, de los contrario, se podrían detectar patrones que no fueran extrapolbles al estar basados en muy pocas observaciones. Por ello, se debe verificar que la frecuencia de todas ellas sea superior al 2-5% (el porcentaje exacto depende del número de observaciones del conjunto de datos).
Tablas
Vamos a construir una base de datos sencilla para ver este apartado
Tablas de frecuencias unidemensionales
Construimos las tablas de frecuencias para la variable sexo
table()
: frecuencias absolutas
prop.table(table())
: frecuencias relativas
Tablas de frecuencias cruzadas
Las tablas cruzadas también se construyen usando table()
y prop.table()
especificando las dos variables a representar. En prop.table()
incluimos un 1 si las queremos por filas, un 2 si por columnas, o nada si queremos las frecuencias relativas globales
¿Qué porcentaje de los hombres tiene estudios primarios?
¿Qué porcentaje de los que tienen estudios secundarios son mujeres?
Tablas de frecuencias de una variable continua agrupada por intervalos
Una tabla de frecuencia para una variable cuantitativa no tiene sentido, veamos que pasa si representamos la edad con una tabla de frecuencia:
No nos está dando informacióm adicional ni resumiendo la variable. Para trabajar este tipo de variables, podemos construir intervalos. Primero vamos a ver los valores entre los que se sitúa la variable con la función range()
y luego vamos a construir los intervalos de edad usando la regla de Sturges, que nos proporciona un número adecuado de intervalos en función del rango de los datosnclass.Sturges()
y finalmente utilizando la función cut()
para que nos construya una nueva variable que recodifica la edad en dichos intervalos.
Ahora ya podemos construir la tabla de frecuencias de esta variable:
También podemos querer ver simplemente la frecuencia de los individuos menores y mayores de edad, así podemos crear una variable de dos categorías como hemos visto en el apartado anterior:
Descriptivos
De la misma forma que podemos hacer tablas de frecuencias, podemos llevar a cabo un resumen descriptivo de las variables que contiene un data.frame
con summary()
También podemos calcular media y desviación típica de la variable edad por sexo con la función aggregate()
En el caso de los hombres nos encontramos con el problema de los valores perdidos. Para obtener el resultado prescindiendo de dichos valores, es preciso utilizar la opción na.rm=TRUE
La librería psych
contiene las funciones describe()
y describeBy()
que no sólo calculan la media sino que añaden otros estadísticos de interés
Gráficos
Estos serían las cuatro representaciones gráficos más sencillas para las variables que estamos viendo:
Ahora es tu turno: Realiza los siguientes ejercicios:
Last updated