En este tutorial vamos a aprender cómo realizar análisis exploratorio de datos con R. El primer paso para analizar datos es comenzar a explorar las variables de nuestra base de datos para:
Encontrar patrones
Identificar errores
Plantear nuevas hipótesis o preguntas
Identificar relaciones entre variables
Empezar a encontrar respuestas a nuestras preguntas de investigación.
Es importante considerar que este es un primer paso y no corresponde a un análisis estadístico riguroso, pero puede permitirnos encontrar respuestas o guiarnos en el tipo de análisis que queremos realizar.
¿Qué es análisis exploratorio?
Lectura recomendada: Exploratory Data Analysis-Howard Seltman El análisis exploratorio puede ser gráfico o no gráfico y univariado o multivariado (normalmente de dos variables).
No gráfica: Calcula estadísticas descriptivas de las variables
Gráfico: Calcula estadísticas de forma gráfica
Univariado: Analiza una sola variable a la vez
Multivariado: Analiza dos o más variables
A su vez, cada uno de esas dividisiones puede subdividirse según los tipos de datos con los que trabajemos: cateógicos o numéricos.
¿Cómo lo haremos?
No hay una regla sobre qué preguntas debe hacer para guiar su investigación. Sin embargo, dos tipos de preguntas siempre serán útiles para hacer descubrimientos dentro de sus datos. Puede redactar libremente estas preguntas como:
¿Qué tipo de variación ocurre dentro de mis variables?
¿Qué tipo de covariación ocurre entre mis variables?
El resto de este capítulo analizará estas dos preguntas. Explicaré qué son la variación y la covariación, y te mostraré varias formas de responder cada pregunta. Para facilitar la discusión, definamos algunos términos:
Una variable es una cantidad, cualidad o propiedad que se puede medir.
Un valor es el estado de una variable cuando la mides. El valor de una variable puede cambiar de una medida a otra.
Cargar paquetes
Lo primero que tenemos que hacer es cargar los paquetes que vamos a utilizar para el análisis. En este caso vamos a usar:
Ahora si queremos tabular dos variables, simplemente las separamos por coma. Por ejemplo la frecuencia de estanteria según zona, si es urbano o no:
table(carseats$estanteria, carseats$urbano)
Proporciones
Los números absolutos a veces no son útiles para entender los datos, por lo que es mejor utilizar proporciones. Para ello usamos el comando prop.table().
Por ejemplo si quisieramos mostrar la tabla anterior como proporciones, lo que hacemos es ingresar ese comando dentro del comando de prop.table().
En este caso nos muestra los datos como proporciones totales, pero ¿cómo hacemos si queremos ver porcentajes por fila o columna?. +Esto lo hacemos poniendo una coma y luego 1 (filas) o 2 (columnas).
Un comando muy útil para simplificar los pasos es el comando CrossTable() del paquete gmodels(). + El comando nos permite presentar en una misma tabla los porcentajes por fila o columna y el total de la tabla.
CrossTable(carseats$estanteria, carseats$urbano)
Descripción de los datos
Code
desc <-describe(carseats)
Code
desc
Observaciones
skewness (sesgo): Los datos de distribución están sesgados a la izquierda, es decir, las variables con un gran sesgo positivo, deben considerar las transformaciones logarítmicas o raíz cuadrada para seguir la distribución normal.
La variable publicidad parecen necesitar considerar la transformación de variables.
mean, sd y se_mean: La variable poblacion, tiene un desviación estandar del error bastante grande of the mean(se_mean) tiene baja representatividad de la media arithmetica mean(mean).
standard deviation(sd) es mucho mayor que el promedio aritmético.
Estadísticas descriptivas
A continuación se explican las estadísticas descriptivas solo para unas pocas variables seleccionadas:
Code
# seleccionar columnas por nombresdescribe(carseats, c("ventas", "compPrecio", "ingreso"))# Seleccionar todas las columnas entre año y día (incluir)describe(carseats, 1:3)# Seleccionar todas las columnas excepto las del año al día (excluir)describe(carseats, -(1:3))
Diagrama de barras e histograma
Histograma
Una forma útil de explorar las variables numéricas es con histogramas. Estos podemos hacerlos con el comando hist(), donde ponemos como argumento la variable que deseamos graficar.
hist(carseats$ventas)
Más adelante veremos cómo hacer los gráficos más estéticos con ggplot2. Este es el código para hacer ese mismo gráfico:
ggplot(data = carseats, aes(x = estanteria)) +geom_bar(color="#28324a", fill="lightblue") +labs(title ="Tipo de muestrario o estanteria", x="Ubicación de la estanteria", y ="Frecuencia absoluta")
Prueba de normalidad sobre variables numéricas utilizando la función normality()
normality() realiza una prueba de normalidad en datos numéricos. Shapiro-Wilk normality testes interpretado. Cuando el número de observaciones es superior a 5000, se prueba tras extraer 5000 muestras mediante muestreo aleatorio simple.
Las variables del objeto tbl_df devueltas por normality() son las siguientes:
statistic: Estadísticas de la prueba de Shapiro-Wilk
p_value: valor p de la prueba de Shapiro-Wilk
sample: Número de observaciones de muestras realizadas Prueba de Shapiro-Wilk
Prueba de normalidad para los datos carseats
normality() realiza la prueba de normalidad para todas las variables numéricas de carseatsla siguiente manera:
Code
normality(carseats)
Code
normality(carseats, ventas, compPrecio, ingreso)
Code
# seleccionar columnas por nombresnormality(carseats, c("ventas", "compPrecio", "ingreso"))# Seleccionar todas las columnas entre año y día (incluir)normality(carseats, 1:3)# Seleccionar todas las columnas excepto las del año al día (excluir)normality(carseats, -(1:3))
Usemos la librerya dplyr para ordenar las varables con menor p-valor
El ingreso variable no sigue la distribución normal. Sin embargo, el caso donde eeuu es No y estanteria es Goody Bad al nivel de significancia de 0.01, sigue la distribución normal.
El siguiente ejemplo funciona el test de normalidad si hacemos una transformación de los datos en logaritmo. Es decir:
log(ingreso) para cada nivel de la variable estantería, la variable categórica eeuu, tiene subniveles y podemos ver si siguen una distribución normal.
Cálculo de correlation coefficienteude correlación con la función correlate()
correlate() calcula el coeficiente de correlación de todas las combinaciones de los datos carseats para las variables numéricas. Así:
Code
# todas las variablescorrelate(carseats)# selección por nombrecorrelate(carseats, ventas, compPrecio, ingreso)# seleccion de las columnas ventas, compPrecio, ingresocorrelate(carseats, 1:3)# seleccion de todas las columnas excepto ventas, compPrecio, ingresocorrelate(carseats, -(1:3))
Correlaciones pareadas de las variables
La función correlate() produce dos variables pareadas. El siguiente ejemplo se usa filter() para obtener el coeficiente de correlación para variables pareadas y ordenarlas de forma descendente.