Análisis exploratorio en R

Dentro de las actividades de análisis de datos, está el análisis exploratorio de los datos fuente. Datos fuente que se utilizarán en diferentes tipos de procesos: integración de datos, reporting, modelos predictivos, etc..

Dicho análisis se basa en gráficos y estadísticos que permiten explorar la distribución identificando características tales como: frecuencias, valores atípicos o outliers, saltos o discontinuidades, concentraciones de valores, disperión, forma de la distribución, correlaciones, etc...

Es un paso básico y necesario en lo que llamamos data science y en general muchas actividades relacionadas con el análisis y tratamiento avanzado de datos.

 

Análisis exploratorio con R

 

El lenguaje estadístico R https://www.r-project.org/ dispone de una gran cantidad de funciones y utilidades que facilitan este trabajo.  A continuación listamos algunas de las más importantes y útiles con ejemplos. Los pasos del ejemplo se basan en un dataset creado en el paso inicial, lo cual facilita su reproducción.

 

# Análisis exploratorio

# dataset de ejemplo: dataf

 

producto <- sample(c("P1","P2","P3","P4","P5","P6"), 1000, replace=TRUE, 

               prob=c(0.2,0.3,0.2,0.1,0.1,0.1))

 

centro <- character()

 

for (i in 1:1000){

  centro[i] <- paste("C", sample(1:50,1), sep="")

}

 

ventas <- round(rnorm(1000, mean=20, sd=5), digits=2)

 

fecha <- rep(as.Date("2015/1/1"),1000)

for (i in 1:1000){

  fecha[i] <- fecha[i] + sample(1:200,1)

}

 

 

dataf <- data.frame(producto=producto,centro=centro,

                    fecha=fecha, ventas=ventas)

 

# resumen del tipo de datos

str(dataf)

 

# primeros 10 regs

muestra1 <- head(dataf,10)

 

# ultimos 10 regs

muestra2 <- tail(dataf,10)

 

# Obtener una muestra de 20 regs

muestra3 <- dataf[sample(1:nrow(dataf),20),]

 

# Obtener valores únicos

unique(dataf$producto)

 

# tablas de frecuencia

 

table(dataf$producto)

pie(table(dataf$producto)) # gráfico de tarta

table(dataf$centro)

 

# Divide en tramos un valor numérico y hace un conteo

table(cut(dataf$venta, breaks=5))

 

# Valores medios

mean(dataf$ventas)

 

# Desviación estandar

sd(dataf$ventas)

 

# percentiles

 

quantile(dataf$ventas, 0.95) # valor por debajo del cual están el 95% de los valores

 

quantile(dataf$ventas, 0.50) # valor por debajo del cual están el 50% de los valores

 

quantile(dataf$ventas, 0.25) # valor por debajo del cual están el 25% de los valores

 

quantile(dataf$ventas, 0.05) # valor por debajo del cual están el 5% de los valores

 

# resumen de una columna (perfilado):

summary(dataf$ventas)

 

# Rango de valores

range(dataf$ventas)

 

# Varianza

var(dataf$ventas)

 

# Rango intercuartilico

IQR(dataf$ventas) # distancia entre cuartiles 25 y 75

quantile(dataf$ventas, 0.25)

quantile(dataf$ventas, 0.75)

 

 

# Histrograma

hist(dataf$ventas)

 

# Boxplot

boxplot(dataf$ventas)

 

dataf1 <- dataf

 

#Detección Valores nulos

 

nulos <- which(is.na(dataf1)==TRUE)  

 

# Ejemplos de correlación en base a dos columnas nuevas creadas en el dataset: ventas2 y ventas3

 

dataf$ventas2 <- round(rnorm(1000, mean=15, sd=3), digits=2)

 

cor(dataf$ventas, dataf$ventas2)

 

dataf$ventas3 <- dataf$ventas + runif(1000,0,10)

 

cor(dataf$ventas, dataf$ventas3)

 

R dispone de paquetes y librerías específicas para realizar este trabajo donde se pueden encontrar más funciones y utilidades ( http://sasybi.blogspot.com.es/2014/07/formacion-medida-en-r.html), pero las aquí señaladas son la base y de uso común en estos procesos.

Más info y formación en B.I. especializada en: ​datademy