lunes, 28 de septiembre de 2015

Ejecutar modelos SAS/Enterprise Miner desde SAS/Enterprise Guide

Muchos de los procesos de analítica que habitualmente realizamos en los proyectos SAS  quedan soportados por las funcionalidades de SAS/Enterprise Guide, en los casos en los que trabajamos con modelos más avanzados una de las herramientas de SAS que permite hacerlos es SAS/Enterprise Miner. En este post vamos a ver cómo integrar un modelo generado en Miner en un flujo de proceso de Guide.

En el siguiente ejemplo, tenemos un modelo basado en el algortimo de árbol de decisión generado en Enterprise Miner.



El siguiente paso es generar el modelo como paquete en Miner, para ello:



A continuación es necesario registrar el modelo:




Una vez registrado, ya es posible acceder a él desde un proceso de Enterprise Guide. Para ello hacemos uso de la tarea 'Model scoring' del grupo de tareas 'Data mining'.



Seleccionamos desde la tarea el modelo a aplicar en el flujo:



Finalmente lo integramos dentro del proceso guide para aplicar el modelo a los datasets del proceso.



Más info y formación práctica SAS en: formacion SAS






viernes, 25 de septiembre de 2015

Mapas en Qlikview

Qlikview es una de las principales herramientas de visualización analítica de la actualidad, disponiendo de múltiples opciones de visualización gráfica:




En lo relativo a georeferenciar la información tenemos distintas opciones.

Componentes (de pago):


Extensiones (gratuitas): 

Google maps cluster

A continuación mostramos un breve ejemplo de creación de mapas utilizando la extensión Google maps Cluster.

Cargamos un conjunto de datos breve como ejemplo para georeferenciar:

ventas:
LOAD * INLINE [
latitude, longitude, ciudad, ventas
40.41 , -3.7 , Madrid, 100
48.85, 2.35, Paris, 200
51.51 , -0.12 ,Londres, 100
38.9, -9.1, Lisboa, 50
]
  

El primer paso es bajar el archivo .qar: GoogleMaps - Cluster.qar e instalarlo. 

A continuación desde Qlikview trabajamos en vista webview:


Incluimos objeto de hoja y seleccionamos extensiones:


Seleccionamos la extensión GoogleMaps - Cluster


Por último parametrizamos el objeto seleccionando los campos que van a dar datos de latitud, longitud y métrica a visualizar:



Finalmente obtenemos el mapa:



Más info: B.I. y Qlikview





sábado, 5 de septiembre de 2015

Análisis exploratorio de datos 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: valores atípicos o outliers, saltos o discontinuidades, concentraciones de valores, forma de la distribución, 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.




El lenguaje estadístico R 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),]

# 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)