Quantcast
Channel: Data Science
Viewing all 32 articles
Browse latest View live

Análisis exploratorio en R

$
0
0

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


Conectando SAS y R

$
0
0

En los procesos de tratamiento de datos de los proyectos de Data Science es habitual encontrarse con la necesidad de conectar dos herramientas. Por ejemplo, podemos encontrarnos el caso de realizar la obtención y la preparación del dato en SAS y su modelización y análisis en R. Es una opción útil sobre todo si trabajamos con altos volúmenes de datos para los que R puede tener alguna limitación al trabajar en memoria. Haciendo el tratamiento previo en SAS podemos dejar la información depurada y agregada para R.

 

Nos encontramos encontramos entonces con la necesidad de conectar SAS y R. Para lo cual existen diferentes opciones:

 

proc iml; submit / R; /* código R */ endsubmit; quit;

Seguramente existan muchas más. Yo adjunto un sencillo ejemplo, haciendo uso de la función call system de SAS que permite hacer llamadas al sistema para arrancar un script de R desde el directorio raíz donde se encuentra R en nuestra instalación. Para arrancar el script se hace uso de la utilidad Rscript propia de R.

data _null_;
call system("cd C:\Program Files\R\R-3.1.2\bin");
call system("Rscript C:\temp\R\scripts\ej_exportar_fichero6.R");
run;

 

En lugar de un call system, podemos utilizar cualquiera de las otras formas de llamar al sistema desde SAS:

x "comandos a ejecutar";
%sysexec comandos a ejecutar;

 

Se han enumerado algunas de las opciones para comunicar de forma eficiente SAS y R, la formación de calidad y la experiencia nos harán encontrar otras opciones, como por ejemplo la que tenemos en la web de analisisydecision.es Modelo en R, gestión de datos en SAS

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

 

 

 

Publica tu estudio o crea una presentación con R: slidify, R markdown y Rpubs

$
0
0

R se ha convertido, por méritos propios, en la plataforma Open Source por excelencia cuando hablamos de Data Science. La multitud de paquetes con los que cuenta, la interoperabilidad entre ellos y la legión de seguidores con los que cuenta le avalan. Facilita también la solución de problemas en R el saber que hay infinidad de foros y preguntas y respuestas de todo tipo que nos pueden orientar hacia el resultado deseado.

 

No obstante, el espíritu de abrir datos y estudios de esta plataforma no queda ahí. Tenemos paquetes (slidify) y portales (rpubs) específicos para crear presentaciones y compartir nuestras investigaciones con el gran público. En ambos casos el único inconveniente es que tenemos que usar markdown. 

Esta herramiento ofrece una enorme versatilidad. Modificando levemente un código puedo compilarlo para comprobar que ejecuta correctamente y obtengo los resultados esperados, generar diapositivas para presentarlo o publicarlo con todo lujo de detalles en Internet.

Instalando Knitr

Es preciso que dispongamos del paquete knitr instalado en Rstudio para poder crear nuestras presentaciones, PDFs y publicaciones. Para instalarlo debemos introducir el siguiente comando en la línea de comandos de R:

  1. install.packages("knitr")

Creando nuestro fichero R markdown

Crear un archivo de tipo Markdown es muy sencillo en R: Sólo debemos seleccionar el tipo R markdown al crearlo.

Podemos crear un archivo de tipo html, directamente una presentación o un PDF. 

Si no has usado nunca markdown aquí te dejamos un par de tutoriales sobre el tema:

Si quieres aprender a hacer cosas más complejas verás que es muy sencillo encontrar información en Internet sobre este lenguaje y cómo usarlo.

Una vez tengas escrito tu documento en R markdown necesitarás haber instalado un paquete específico (por ejemplo slidify), si quieres generar una presentación a partir del mismo.

Instalando Slidify

Para instalar slidify en R deberías introducir estos comandos en tu consola de R:

  1. library(devtools)library(devtools)
  2. install_github('slidify', 'ramnathv')
  3. install_github('slidifyLibraries', 'ramnathv')

Si quieres más información sobre slidify te recomendamos consultes su página, slidify.org

En ella encontrarás los pasos necesarios para instalarlo, publicar lo que hayas hecho, mejorar la presentación o adaptarla a una plataforma concreta, como HTML5, por ejemplo.

En cambio, si lo que quieres es hacer público tu estudio o aprovechar los que generosamente han compartido otros usuarios, tu portal es rpubs. 

Usando Rpubs

Rpubs es un portal de libre acceso, que requiere login y password para publicar (se consiguen de forma gratuita también). En él podemos maravillarnos y tomar ideas de los estupendos trabajos hechos públicos por multitud de usuarios. 

Por contra, si lo que nos interesa es dejar con la boca abierta a los demás con nuestra encomiable labor como científico de datos, la haremos pública de la siguiente manera:

  1. Desde tu archivo R markdown selecciona el botón Knit HTML en la barra de herramientas del propio documento
  2. En la ventana de previsualización del documento, selecciona el botón Publicar o Publish (en inglés)

Seguidos estos pasos ya tendremos en la red el trabajo a disposición del que quiera consultarlo.

Ejemplos

Como ejemplo completo podéis ver este markdown publicado en Rpubs sobre la severidad de los fenómenos meteorológicos en EEUU según los daños económicos o víctimas directas causadas. 

Y adjunta os dejo una presentación en PDF hecha con slidify. Ésta fue creada también desde un archivo markdown de R y muestra un análisis de comportamientos de motores turbojet de avión según cambiemos susparámetros de diseño.

Así que... ¡A publicar y a presentar se ha dicho!

AdjuntoTamaño
md.jpg163.95 KB
Dessign_point_simulator.pdf454.79 KB

Open Smart Data 2015

$
0
0
fecha: 
1 October, 2015 - 10:00 - 13:30
Ubicación: 
Barcelona, Llacuna 162

El primer evento en Barcelona sobre Smart Data Open Source

 

Open Smart Data es un evento gratuito orientado al entendimiento de las últimas tendencias en marketing digital con el Open Source. En el evento se tratarán también las distintas formas de visualizar datos de grandes volúmenes de información.

Se entregará a los asistentes material exclusivo del evento en formato digital, y acceso a un directorio de descargas de las herramientas mostradas.

 

Programa

10:00

INTRODUCCIÓN

Presentación e introducción de los motivos por el que se ha creado Open Smart Data

10:30

Ponencia de FRANCISCO JAVIER PULIDO

Nos mostrará las capacidades de diferentes herramientas Open Source para convertir Big Data en Smart Data

11:30

Ponencia de JOSÉ LUIS RODRÍGUEZ

Cómo hacer una buena microsegmentación para mejorar la eficiencia en campañas de marketing

12:30

Ponencia de MAR CASTAÑO FERRADÁS

CRM Social, cómo aprovechar estrategias de marketing para fidelizar y conocer a tus clientes

13:30

DEBATE ABIERTO

Nuestros conferenciantes responderán a las preguntas de los asistentes

 

 

Más información y registro

 

Data science: caso aplicado a sector retail (análisis cesta de la compra)

$
0
0

Existen múltiples aplicaciones de business analytics para el sector retail. Desde diferentes perspectivas los sistemas de business intelligence ayudan cuestiones críticas para el negocio, como pueden ser:

  • Basket market analysisAnalizar clientes (segmentación, captación, retención, fidelización)
  • Optimizar precios (elasticidad, pricing)
  • Procesos de previsión de la demanda y previsión de ventas
  • Análisis de las redes de distribución, transporte y almacenamiento
  • Control geográfico de redes comerciales de gran capilaridad
  • Seguimiento transacciones de venta (análisis productos y cesta de la compra)

En este post vamos a centrarnos en los procesos de análisis de cesta de la compra, realizando un rápido ejemplo.

 

Los procesos de análisis de la cesta de compras permiten encontrar asociaciones en los datos. Estas reglas de asociación pueden indicar cuestiones tales como cuáles son los artículos que se suelen comprar al mismo tiempo, en qué medida la compra de un artículo provoca la compra de un segundo, etc..

 

Esta información es útil para implementar estrategias de venta cruzada, realizar recomendaciones a los clientes sobre productos relacionados, y promocionar estos colocándolos muy cerca unos de otros en páginas Web, catálogos o en la misma estantería.

 

Vamos a ver un ejemplo empleando la herramienta de SAS: Enterprise Miner. Esta herramienta dispone de un nodo específico para realizar este tipo de proceso, dentro del grupo de tareas orientadas a la exploración:

 

 

 

Los datos de este ejemplo son datos de compras de supermercado, disponibles en: https://dl.dropboxusercontent.com/u/59930995/R/groceries_4.csv

 

Este fichero es importado en SAS y se realizan las transformaciones para adaptarlos a los que en SAS Enterprise Miner se denomina formato transacción:

 

 

El formato de transacción necesita delimitar claramente los items que componen una transacción: para ello utilizamos un id y un secuencial.

 

Este dataset debe ser incorporado a Enterprise Miner con el tipo transacción y definiendo el  rol de las variables a utilizar:

 

 

 

Este dataset es input del nodo "market basket analysis" que va a obtener las reglas de asociación entre los productos vendidos en las transacciones.

 

 

 

Existen diferentes parámetros a configurar, entre ellos el número de elementos a relacionar y el nivel mínimo de confianza:

 

 

La ejecución del nodo nos dan los resultados estadísticos del estudio de reglas de asociación:

 

 

 

En particular nos fijamos en las reglas de asociación obtenidas:

 

 

En las reglas de asociación obtenidas se analizan cuestiones tales como el soporte de la regla (support%) que es la probabilidad de que aparezcan los dos productos en la cesta de la  compra, la confianza (confidence%) es la probabilidad condicionada de que aparezca el producto B en la cesta de la compra, una vez que aparece el producto A. Confianza esperada es simplemente la probabilidad de que aparezca B en la cesta y Lift (factor de elevación) es el ratio de de dividir confianza por confianza esperada. Un valor de lift = 1 indica que ese conjunto aparece una cantidad de veces acorde a lo esperado bajo condiciones de independencia. Un valor de lift > 1 indica que ese conjunto aparece una cantidad de veces superior a lo esperado bajo condiciones de independencia (por lo que se puede intuir que existe una relación que hace que los productos se encuentren en el conjunto más veces de lo normal).Por último, en el campo Rule vemos la regla de asociación obtenida.

 

Este proceso Miner precisa de una preparación de datos en Enterprise Guide y de una integración ( http://sasybi.blogspot.com.es/2015/09/ejecutar-modelos-enterprise-miner-desde.html )  de ambos procesos.

 

Podemos realizar este tipo de análisis de forma no costosa con otras potentes herramientas de análisis de datos tales como Knime, R (librería arules), entre otras.

 

Un estudio similar a este realizado hace tiempo en la cadena Wall-Mart dio lugar a la famosa y curiosa historia de la correlación entre los pañales y la cerveza: http://www.businessintelligence.info/dss/ejemplo-data-mining-panales-y-cerveza.html

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

 

 

Curso de análisis de datos con SAS

$
0
0
fecha: 
26 October, 2015 - 16:00 - 21:00
Ubicación: 
C/Pechúan (28002 - Madrid)

Inicio de curso de análisis de datos con herramienta SAS impartido por empresa Eproned.

El curso tiene una duración de 20h, de Lunes a Jueves (16h -> 21h).

http://www.emagister.com/programacion-sas-base-cursos-3006561.htm

Información e insscripción escribir a:

cursos_a_medida_r@yahoo.es

training@eproned.com

En el mismo se repasan los fundamentos del análisis de datos (extracción, procesado, análisis) con la herramienta SAS (los alumnos deberán contar con acceso a SAS OnDemand for Academics)

Data Science con datos de Twitter: Obtención de datos de Twitter

$
0
0

Twitter, la red social de los 140 caracteres, se ha convertido en una fuente imprescindible para los que buscan tendencias locales o globales. No sólo eso, sino que podemos encontrar rápidamente los personajes o ideas más influyentes en dicha red analizando los datos que nos proporciona la API de Twitter.

Este artículo pretende darnos unas primeras nociones sobre el paso inicial en el análisis de datos de Twitter, que no es otro que obtener los datos con los que trabajar desde la conocida red social.

Para ello tenemos dos modos distintos de hacerlo:

  • Programáticamente. Mediante un código hecho a medida o por nosotros mismo en PHP, .NET o similares, para conectar con la API y trasladar los datos de interés a un fichero, sea hoja de cálculo, base de datos o un simple archivo de texto.
  • Mediante servicios web. Si queremos evitar pelearnos con líneas de código, errores de sintaxis y pormenores similares, nuestra solución será alguno de los servicios existentes que lo hacen de manera predefinida desde una web. La mayoría de ellos nos permiten descargar los datos obtenidos en una hoja de cálculo.

En este hilo os mostraremos dos ejemplos de los del segundo tipo, es decir, de servicios que se utilizan directamente desde la web. En nuestro caso serán dos: IFTTT y Zapier. Ambos se enmarcan dentro de la categoría de triggers. Estos triggers (disparadores en castellano), efectúan una acción concreta cuando un evento sucede o se dispara. Por ejemplo, cuando detecto un tweet nuevo de un usuario (proceso a detectar disparado) lo almaceno en mi hoja de cálculo.  

IFTTT: Sencillez y versatilidad en la obtención de datos

Este servicio sólo requiere de un rápido registro para poder usarlo (nos solicitará mail y contraseña). Será más complicado encontrar la funcionalidad deseada que utilizarla, pues las posibilidades de obtención de datos son muy elevadas. Hallamos diferentes recipes, que son las diversas funcionalidades o servicios que pueden utilizarse. Si hacemos una búsqueda de recipes con el texto twitter podemos ver un variado listado: obtención por hashtag, por retweets, por nombre de usuario, almacenamiento en hoja de cálculo de Google...

Recomendamos buscar el servicio más genérico, uno que obtiene datos de twitter y los almacena en una hoja de cálculo de Google, que se llama Twitter to spreadsheet. Nos pedirá permiso para conectarse a nuestra cuenta de Twitter y a Google Drive para almacenar los datos y aparecerá una pantalla como la que mostramos bajo estas líneas.

En nuestro caso hacemos una búsqueda con el hashtag #DataScience. Para ver todas las operaciones posibles presionamos el enlace marcado en azul Search operations. Podemos buscar tweets de un usuario concreto, dirigidos a otro usuario, o de un lugar o fechas concretos. Una vez configurado el campo de búsqueda proseguimos con la configuración de nuestro recipe. Nos faltan por definir las opciones relativas a la hoja de cálculo de Google Drive.

Como veis podemos definir el nombre de la hoja de cálculo, su ubicación en nuestro espacio de almacenamiento Drive y los campos a almacenar.

Este es sólo un ejemplo sencillo de uso de IFTTT. Con otras recipes podemos almacenar datos de tweets cuando se marcan favoritos de un determinado hashtag, cuando se retwittean, al ganar un nuevo seguidor, y múltiples opciones más. Recomendamos una navegación por ellas para hacernos una idea de las posibilidades.

Finalmente, para ver una obtención final de datos, mostramos los tweets generados la noche de entrega del Premio Planeta 2015 entre las 00:49 y las 00:52, con el hashtag #PremioPlaneta2015, almacenados ya en una hoja de cálculo de Google Drive.

La primera columna corresponde al usuario que twittea, la segunda es el texto del tweet, la tercera la dirección del tweet y la última la fecha. Remarcamos que éste es un ejemplo sencillo y que podemos obtener resultados con un número de campos mayor.

Veamos ahora otro potente servicio web para genera datos a través de tweets.

Zapier: la potente alternativa profesional

Si las opciones de IFTTT se nos quedan cortas, podemos probar Zapier, bastante similar en cuanto a idea original, pero más potente. Sólo tiene un inconveniente: que las posibilidades de la versión libre son reducidas y si queremos más deberemos rascarnos el bolsillo. Disponemos de un periodo de prueba de 14 días para usar todas las posibilidades a nuestro antojo. Requiere registro también, éste un poco más completo, pues nos solicitará también nombre y apellido.

Los menús son más sencillos y nos pide las opciones paso a paso, de manera que se hace más fácil de configurar y encontraremos las opciones deseadas probablemente más rápido que con el servicio anterior. Por contra, es probable que tarde más a ejecutarse.

Con este servicio se hace más sencillo seleccionar los campos a importar, ya que nos permite seleccionarlos directamente desde una lista con todas las opciones posibles. El resultado final es una hoja de cálculo de Google Drive, pero podríamos configurar otros ficheros de salida distintos. Para este segundo caso, el número de alternativas también es más amplio que con IFTTT.

Estos son sólo dos ejemplos de triggers o programas que automatizan el registro de datos cuando se produce un determinado evento en Twitter. Queda en vuestras manos ampliar la lista de servicios web a utilizar y probar si se ajustan mejor a vuestros intereses. Si encontráis alguno interesante no os olvidéis de dejar un comentario compartiéndolo. 

 

AdjuntoTamaño
IFTTT_3.jpg281.01 KB
IFTTT_4.jpg50.16 KB
IFTTT_1.jpg53.26 KB
IFTTT_2.jpg49.37 KB

Facetas del Data Scientist

$
0
0

¿Cuáles son las facetas del data scientist? 

La figura del data scientist es clave para ser capaz de ir de los datos a la información, y de la información a la decisión. 

Las facetas del científico de datos - DataScience

 

El data scientist tiene tres facetas principales: técnica, analítica y funcional. 

  • La faceta funcional es la que se refiere al conocimiento del negocio en el que uno trabaja. Por ejemplo, si un data scientist trabaja en el sector financiero, debe conocer todos los detalles de cómo funciona el negocio en ese sector. Este conocimiento es difícil de adquirir solo con formación, y es necesario desarrollarlo en el desempeño de la actividad profesional.
    La faceta funcional es la que nos ayuda a plantear las preguntas adecuadas. El análisis de datos, el big data por sí mismos no tienen ningún valor, el valor lo adquieren en el momento en el que se convierten en herramientas para transformar el dato en información, y para responder a las preguntas que son interesantes para el negocio. 
     
  •  La faceta analítica consiste en ser capaces de extraer información de los datos mediante el uso de métodos cuantitativos de análisis. En esta faceta entran la Estadística, Machine Learning y en general cualquier método de análisis de datos. Es importante tener una sólida base analítica, ya que los métodos cuantitativos suelen tener unas condiciones de aplicación muy precisas y restrictivas. Si aplicamos el método incorrecto a una situación, solo obtendremos resultados sin sentido (garbage in,garbage out).
    Cuando aprendemos un nuevo método, nuestra tentación puede ser intentar aplicarlo a todos los problemas que se nos presenten. Debemos ser capaces de resistir la tentación, y de desarrollar la experiencia para saber qué métodos aplicar en qué situaciones. Esta faceta sí es posible adquirirla mediante la formación adecuada. Por ejemplo, muchos matemáticos, ingenieros y físicos (entre otros) han desarrollado este tipo de habilidades y es por ello que solemos ver que estos perfiles son de los más demandados para cubrir los puestos de data scientist
     
  •  Por su parte, la faceta técnica se refiere a ser capaces de implementar nuestro método analítico en un ordenador, para que se pueda ejecutar de manera automática y desasistida. Aquí es donde entra el big data. Muchas veces, una vez que ya hemos identificado la pregunta que necesitamos responder, cómo la vamos a responder, es el turno de ponerlo todo en marcha.
    En esta faceta, se requiere ser capaces de escribir código fuente. Muchas veces el volumen de datos, su complejidad y variedad, o el ritmo frenético al que entran en nuestros sistemas, harán que el uso de un simple ordenador sea insuficiente para resolver el problema. En estos casos es donde necesitamos acudir al big data. De hecho, muchas veces esta faceta cristaliza en la forma de un tipo específico de data scientist o de big data engineer, dedicado a transformar un pequeño modelo que se ejecuta en un portátil en una solución que es capaz de ejecutarse en un clúster sin limitaciones en cuanto a volumen, variedad o velocidad a la que nos vienen los datos. 

Por Israel Herraiz

@herraiz

 

Texto extraído de la Guía INKS2015, descarga gratuitahttp://bit.ly/1LnZelH


Analitica de datos de Twitter con hojas de cálculo de Google: Hashtags influyentes de un topic

$
0
0

En el primer artículo de esta serie tratamos cómo obtener datos de Twitter desde triggers o disparadores. En este punto deberíamos empezar a pensar qué campos incluimos en nuestro análisis e ir estudiando el formato de los mismos.

Para ello, recomendamos este enlace a la página de desarrollo de la API de Twitter, donde se enumeran todos los campos generados por cada tweet y su formato exacto: https://dev.twitter.com/overview/api/tweets

 

En nuestro caso hemos definido un trigger que nos guarda una fila por cada nuevo tweet con el hashtag #datascience y con un número de retweets mayor a 5.

Los campos que registramos son:

RT

Número de veces que el tweet se ha retweeteado

Cuenta

Usuario que twittea

Followers

Número de seguidores del usuario

URL

URL asociada al tweet

URL Tweet original

URL original a la que apunta la del tweet

Text

Texto completo del tweet

 

Os dejamos un enlace al documento de hoja de cálculo de Google Apps donde se guardan los datos obtenidos:

Analítica de hashtags de Twitter con Spreadsheets de Google

Enlace al documento de hoja de cálculo, con datos origen y resultados

 

En la pestaña 'DataScience', tenemos los datos almacenados, tal y como se guardan directamente. Es decir, sin aplicar ningún filtrado, limpieza de datos o similar.

En nuestro análisis vamos a buscar los hashtags más exitosos. Para medirlo, usaremos dos criterios diferentes:

  • Número de apariciones de hashtag: Consitirá, simplemente, en contar el número de tweets que contienen el hashtag analizado
  • RT’s alcanzados por el hashtag: Contaremos la suma total de retweets obtenidos por cada tweet que contenga el hashtag medido

Para hacer esto, lo primero que debemos obtener son los hashtags de cada tweet. Conociendo el formato de los mismos, que comienzan por el carácter “#” y acaban con un espacio, podremos hacerlo directamente en las hojas de cálculo de Google. Lo hemos implementado en la pestaña 'Hashtags' del documento enlazado. Lo primero que encontraremos en la misma, en las columnas A, B, C y D son los primeros 757 registros de tweets de la Pestaña DataScience. A partir de ellos, que ya suponen un número considerable, realizaremos nuestro análisis.

 

Buscando la posición de inicio de los hashtags

Creamos ahora 9 columnas auxiliares: Hashtag_pos_1, Hashtag_pos_2, … , hasta Hashtag_pos_9. En Hashtag_pos_1 buscamos, empezando por el carácter 1 del campo Text (columna D), la posición de la cadena de caracteres de texto donde hallamos el primer “#”. Dicho de otro modo, donde empieza el primer hashtag. La fórmula de las hojas de cálculo de Google que hace esto es la siguiente, tal y como está en nuestra hoja, en la celda E2:

=find("#";$D2;1)

Siendo "#" el carácter buscado, $D2 la referencia a la celda donde tenemos el texto y 1 el carácter donde quiero iniciar la búsqueda.

Para hallar el segundo hashtag deberemos buscar de forma análoga el mismo carácter, pero ahora empezando en la posición donde se hallaba el anterior +1, para no volver a obtener el mismo resultado. Ponemos la fórmula usada en la celda F2 como ejemplo:

=find("#";$D2;E2+1)

Como vemos el carácter buscado es el mismo, buscamos en el mismo texto $D2 haciendo la misma referencia y lo que cambia es el tercer parámetro, que utiliza la posición obtenida para el carácter “#” del primer hashtag y le suma uno para obtener el siguiente.

Así, encadenamos la búsqueda de estos resultados hasta el número máximo de hashtags que creamos que vamos a obtener. En nuestro caso lo hemos hecho para obtener un máximo de 9, y vemos que el máximo encontrado ha sido de 8.

¿Cómo sé que el máximo obtenido ha sido 8? Porque la última columna, la de Hashtag_pos_9 no obtiene ningún resultado válido, son todo #VALUE!

El siguiente paso será extraer los hashtags.

 

Extrayendo los hashtags

Haré uso ahora de las posiciones de inicio de cada hashtag. Deberé extraer texto de mi tweet empezando por la posición encontrada hasta que encuentre un espacio. Usaremos la fórmula de la celda N2

=iferror(mid($D2;E2;find(" ";$D2;E2+1)-E2);" ")

Analizar toda la fórmula de golpe puede ser un poco complejo… La función “iferror”, la última en aplicarse, nos cambia los resultados de error por un espacio en blanco en lugar de mensaje de error. Esto es muy conveniente para luego poder aplicar otras fórmulas a los textos de hashtags extraídos. Lo hacemos mediante el siguiente comando:

=iferror(HASHTAG_EXTRAIDO;" ")

Pasamos ahora a analizar el bloque correspondiente al HASHTAG_EXTRAIDO, devuelto por la siguiente fórmula:

HASHTAG_EXTRAIDO = mid($D2;E2;find(" ";$D2;E2+1)-E2)

En esta fórmula $D2 indica el texto de donde extraer caracteres, E2 indica el carácter inicial a extraer, que es el primer carácter “#” encontrado y el tercer parámetro es el número de caracteres a extraer, que calculamos restando la posición del espacio y la de inicio del hashtag:

find(" ";$D2;E2+1)-E2

Obtenemos la posición del primer espacio después del hashtag con la fórmula find(" ";$D2;E2+1), y E2 es directamente la posición de inicio del hashtag, calculada anteriormente.

Aplicando esta operación en las sucesivas columnas obtenemos todos los hashtags de los textos.

Ahora pasaremos a aplicar la operación más compleja del ejemplo, que es extraer todos los resultados únicos de etiquetas.

 

Extrayendo resultados únicos

Extraer resultados únicos de una sola columna en hojas de cálculo de Google es rápido y fácil con la función unique. Aquí nuestro problema radica en que tengo los datos en 8 columnas distintas. La función citada, si selecciono más de una columna, compara los valores por filas completas, no los de cada celda en particular. La solución más rápida sería copiar los valores de las 8 columnas a una sola. Mi objetivo, no obstante, es usar una fórmula que me permita un cálculo automatizado sin tener que andar copiando y pegando columnas manualmente.

Realizamos este proceso con la fórmula de la celda W2, en una fórmula con diversas operaciones anidadas:

=unique(transpose(split(ArrayFormula(concatenate(N2:U757&" "));" ")))

Paso a paso, estamos haciendo lo siguiente:

Ponemos todas las etiquetas obtenidas en una única secuencia de caracteres, donde cada etiqueta estará separada de la anterior por un espacio en blanco.

SECUENCIA_UNICA = ArrayFormula(concatenate(N2:U757&" "))

Separamos ahora los elementos de la secuencia de caracteres obtenidos en diversas columnas. Cada vez que encuentra un espacio crea una nueva columna. Esto me generará una lista con todas las etiquetas en una sola fila.

=split(SECUENCIA_UNICA;" ")

Nos queda, por tanto, pasar nuestro resultado de una sola fila a una sola columna, cosa que realizamos con la función transpose.

=transpose(split(SECUENCIA_UNICA;" "))

Y para finalizar, lo que estábamos buscando desde el principio, la lista de valores no repetidos de hashtags, extraída con la fórmula unique que ahora sí funciona bien porque nuestros datos ya están en una sola columna.

=unique(transpose(split(SECUENCIA_UNICA;" ")))

Finalmente, con nuestra lista de valores únicos podemos realizar los dos tipos de cálculos que teníamos previstos.

 

Obteniendo el número de apariciones de un hashtag

Ahora, como se muestra en la columna X, la etiquetada como repeticiones y la inestimable ayuda de la fórmula “countif”, aplicada sobre la lista completa de hashtags, obtenemos el número de repeticiones para cada entrada. Aplicamos esta fórmula:

=countif(N$2:U$757;W2)

N$2:U$757 corresponde a la lista completa de todos los hashtags y W2 a la entrada particular que estamos buscando y contando. Es importante poner los caracteres de dólar ($) para que en las sucesivas filas la fórmula cuente siempre buscando dentro de la misma lista de elementos.

Una vez obtenida la lista completa de hashtags queremos ordenarlos por número de apariciones, de mayor a menor y que este cálculo quede automatizado también. Nos encargamos de ellos con la fórmula “sort”, seleccionando la lista de valores únicos con su correspondiente número de repeticiones (W2:X69) como primer parámetro. Ponemos un 2 como segundo parámetro, haciendo que ordene la lista por número de repeticiones y FALSE como tercer parámetro, para ordenar de mayor a menor:

=sort(W2:X69;2;FALSE)

Así, en esta aplicación concreta nuestros resultados más repetidos son, en ese orden:

  1. DataScience
  2. datascience
  3. BigData
  4. bigData
  5. abdsc
  6. Analytics
  7. MachineLearning
  8. machinelearning
  9. datascience?
  10. DeepLearning

La función que cuenta los resultados no distingue entre mayúsculas y minúsculas, por eso DataScience y datascience salen con el mismo número de repeticiones.

Este resultado, no obstante, sólo valora las veces que es etiquetada una temática en los tweets de #DataScience, pero no valora la repercusión final o la llegada al público.

 

Valorando el alcance de los tweets por hashtag utilizado

Para medir la repercusión de cada etiqueta usaremos el criterio de número total de retweets obtenidos por cada uno de ellos.

Creamos primero unas columnas auxiliares para cada hashtag a analizar, donde aparecerá un 1 si el texto del tweet lo contiene y un 0 si no. Analizamos los 5 resultados con más apariciones según la ordenación del apartado anterior. Una vez obtenido este resultado binario lo multiplicaremos por el número de retweets y obtendremos el alcance global de cada etiqueta.

Empezamos entones. Para ver si la etiqueta analizada aparece en cada tweet concreto usamos ahora la función “find” que SÍ distingue entre mayúsculas y minúsculas y podremos ver si realmente un grupo tiene mayor repercusión según si se escriben algunos caracteres con mayúsculas o no:

=FIND($Z$3;$D2)

La función en las líneas superiores busca el texto “#DataScience” y si lo encuentra devuelve un número entero indicando el carácter donde comienza. Si no lo encuentra devuelve un error. Así, para obtener el resultado binario explicado anteriormente usamos la siguiente función:

=IF(IFERROR(FIND($Z$3;$D2);0)>0;1;0)

Con la función “iferror”, transformamos los errores en el valor 0 y los números enteros quedan igual. Posteriormente, con la función “if”, cambiamos los enteros que nos indican la existencia de la etiqueta en un 1 y dejamos el resto de valores en 0.

Para concluir, sólo nos queda multiplicar el número de RT de cada tweet por el 1 o el 0 que nos indica si la etiqueta en concreto está o no. Como ejemplo, la función usada para calcular los retweets logrados con el hashtag DataScience.

=SUMPRODUCT($A$2:$A$757;AC2:AC757)

Donde el parámetro $A$2:$A$757 se refiere a la columna con los RT’s de cada entrada y el segundo parámetro, AC2:AC757 al indicador de si la etiqueta está o no.

Podemos ver ahora que, según el criterio elegido, la influencia de las etiquetas es bastante más dispar que la obtenida anteriormente.

Etiqueta

Número de apariciones

Número de RT’s

#DataScience

677

20485

#datascience

34

707

#BigData

478

14735

#bigdata

14

162

#abdsc

226

7596

 
 

Vemos así como #abdsc obtiene proporcionalmente pocos retweets en comparación con los que obtienen #BigData y #DataScience.

Por otro lado, los resultados de #bigdata y #datascience, obviando las mayúsculas en lugar que les corresponde, son extremadamente inferiores a los que sí escriben las iniciales con mayúsculas.

Los criterios y condiciones a aplicar son mejorables, especialmente las agrupaciones de diversos hashtags similares dentro del mismo grupo, pero este artículo se enfoca a la utilización de Zapier y de las hojas de cálculo de Google Apps para obtener resultados trascendentes. Así, según nuestro análisis, la etiqueta BigData es, con diferencia, la que más retweets consigue. Faltaría, por ejemplo, obtener el ratio de retweets conseguidos por apariciones de etiqueta, que nos daría una idea de la efectividad real de cada una de ellas. Pero eso ya lo dejamos en vuestra mano.

 

Conectar Qlikview y R

$
0
0

En el siguiente post vamos a conectar Qlikview con R. Si desde Qlikview necesitamos realizar tareas de clasificación y predicción podemos conectar con R y hacerlo en los scripts de R para después visualizarlo y analizarlo en Qlikview.

  

 

Cargamos los siguientes datos:

 

Consumo_clientes:
LOAD * INLINE [
cod_cliente,     estado_civil, profesion,  ciudad,  Consumo,  
    1,         Casado,      Empresario,     Madrid,             30
    2,         Casado,      Empresario,     Madrid,             31
    3,         Soltero,     Empresario,     Madrid,             32
    4,         Casado,       Desempleado,    Madrid,             33
    5,         Casado,       Empleado,       Madrid,             29
    6,         Viudo,       Empleado,       Barcelona,             28
    7,         Soltero,     Empleado,       Barcelona,             20
    8,         Casado,      Empleado,    Barcelona,             21
    9,         Casado,      Empleado,       Barcelona,             22
    10,       Casado,       Desempleado,    Valencia,             19
    11,        Casado,      Empleado,    Valencia,             20
    12,        Soltero,     Empleado,    Valencia,             10
    13,        Soltero,     Empresario,     Valencia,             11
    14,        Casado,       Desempleado,    Lisboa,             12
    15,       Soltero,     Empresario,     Lisboa,             9
    16,       Casado,      Empleado,    Lisboa,             10
    17,       Soltero,     Empleado,       Lisboa,             11];

 

 

Exportamos a csv:

 

STORE Consumo_clientes into C:\temp\R\ficheros\clientes1.csv (txt);

DROP TABLE Consumo_clientes;

 

Vamos a realizar un clustering de clientes basado en el campo consumo, utilizando el algoritmo k-means y para ello llamamos a un script de R, ya que el k-means no está soportado por Qlikview.

 

Llamamos a R utilizando el comando EXECUTE

 

EXECUTE "C:\Program Files\R\R-3.2.1\bin\R.exe" CMD BATCH "C:\temp\R\scripts\agrup_clientes.R";  

 

El script de R realiza lo siguiente:

 

------------------------------------------------------------------------

 

#Importar fichero

clientes1 <- read.csv("C:/temp/R/ficheros/clientes1.csv")

consumo <- clientes1$Consumo

 

#Agrupación utilizando k-means con 3 grupos

km_res <- kmeans(consumo, 3)

 

#Le añado a la tabla el centro en que ha caído cada valor

clientes1$grupo <- km_res$cluster

 

# Exportamos ficheros con cluster

write.csv(clientes1, file = "C:\\temp\\R\\ficheros\\clientes2.csv")

 

------------------------------------------------------------------------

 

Finalmente leemos el fichero de salida de R en Qlikview para poder visualizarlo.

 

LOAD cod_cliente, 
     estado_civil, 
     profesion, 
     universitario, 
     Consumo, 
     grupo
FROM
[C:\temp\R\ficheros\clientes2.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

 

Creamos un gráfico de rejilla para visualizar los grupos:

Dimensiones: cod_cliente y grupo

Expresión: consumo

 

 

 

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

 

Obtén el máximo rendimiento de Tableau con ClearPeaks

$
0
0

Que Tableau se está convirtiendo en una herramienta de referencia en el mundo de la visualización de datos no es una afirmación que vaya a resultar novedosa. El porqué de ello y las posibilidades que ofrece quizás sean un objeto más profundo de discusión.

 

Pues bien, hoy, 11 de noviembre de 2015, la importante empresa de BI ClearPeaks (partners de Tableau) acogía un evento en su sede de Barcelona para demostrarnos algunas de estas cosas. Bajo el nombre Obtén el máximo rendimiento de Tableau con ClearPeaks, Fran Rodríguez, su Sales Manager, nos presentaba de manera cercana y muy ilustrativa estas realidades con una trabajada selección de ejemplos y demostraciones.

Destacaba la increíble capacidad de Tableau para llegar a usuarios con un perfil menos técnico a nivel informático y llegar de manera más amigable a profesionales con cargos más en las líneas de negocio. El rango de funcionalidades disponibles a nivel de visualización es enorme. Nombraremos sólo algunas de ellas:

  • Definir un modelo de datos más o menos complejo de mi conjunto de origen
  • Crear visualizaciones geolocalizadas
  • Obtener gráficas de distintos tipos con atractivas visualizaciones
  • Crear nuevos campos calculados: sumas, máximos, mínimos, etc.
  • Obtener visualización de datos en formato de tabla
  • Trabajar con datos de prácticamente cualquier Base de Datos imaginable

Aquí mostramos un dashboard con indicadores mundiales de renta per cápita, con resultados en formato de tabla, geolocalizados y en un diagrama.

 

Así, este puntero software, nos ofrece una versión Desktop desde la que podremos controlar y desarrollar hojas, consultas y cuadros de mando y una versión Server destinada al uso como usuario final en red o en entornos corporativos.

Destaca también el visor gratuito que Tableau ofrece, el Tableau Reader, que permite a cualquier usuario visualizar y modificar (con limitaciones) los datos almacenados en el archivo de Tableau Reader.

Agradecemos a ClearPeaks la buena organización, seriedad y profesionalidad del evento y les animamos a seguir con la realización de los mismos.

 

Segmentación de clientes basada en RFM con SAS

$
0
0

 

El análisis RFM es una conocida técnica de segmentación del clientes. El modelo toma en consideración tres métricas:

1) Ticket medio de compra (Money)

2) Frecuencia de compra (Frecuency)

3) Tiempo qué hace que no compra (Recency)

 

En base a estas métricas clasifico a los clientes.

 

El análisis RFM es una técnica útil y extendida para clasificar clientes

 

 

En base a los resultados encontraré clientes de diferentes características. Algunos de los grupos que encuentro son:

  • frecuencia de compra alta y ticket medio alto: clientes de alto valor (que debo cuidar)
  • frecuencia de compra alta y bajo ticket medio: me interesa subir ticket medio (ofrecer otros productos)
  • frecuencia de compra baja y ticket medio alto: me interesa subir frecuencia de visita (promociones con fecha)
  • frecuencia alta y ticket medio alto, pero recencia baja : buenos clientes que debo recuperar ya que hace tiempo que no compran (campaña marketing)

Son sólo algunos de los grupos que puedo identificar y algunas acciones a tomar.

 

A continuación vamos a ver los pasos a dar para realizar un análisis RFM con SAS Enterprise Guide.

Partimos de un datasets con transacciones de compra como el que sigue:

 

 

Tenemos transacciones de compra donde tenemos identificada la fecha, el cliente, el producto y el importe de compra. Sobre este dataset ejecutamos la tarea de Guide 'Analisis RFM'.

 

 

 

Para parametrizar el análisis debemos seleccionar, el tipo de dataset de entrada, el rol que juega cada campo y el número de grupos de obtener por cada métrica y el tipo de gráficas a visualizar.

 

 

 

Tenemos dos salidas: un dataset con la puntuación RFM de cada cliente y un conjunto de gráficas que nos permiten analizar los grupos obtenidos. El campo puntuacion_rfm resume la puntación obtenida en las tres categorías (recency, frecuency, money). Los clientes con alta puntuación en las tres son clientes de alto valor.

 

Posiblemente los clientes con puntuaciones RFM: 233, 333 (alta frecuencia y alto ticket y recencia no baja) sean responsables de un porcentaje alto de las compras totales.

También podemos analizar este efecto en el siguiente mapa de calor:

 

Otro efecto interesante a estudiar es identificar grupos de baja recencia y alta frecuencia y ticket que son clientes que interesa reactivar y son candidatos a target en campaña de marketing.

 

Estas conclusiones son sólo algunas de las que se pueden obtener en un análisis de este tipo que como hemos visto resulta sencillo de realizar con SAS Enterprise Guide. Existe también la posibilidad de utilizar otros productos de SAS como Customer Intelligence http://www.sas.com/en_us/software/customer-intelligence.html

 

Más infomación en:

Formación SAS

Formación Business Intelligence

datademy

Curso de gestión y análisis de datos con SAS

$
0
0
fecha: 
27 June, 2016 - 16:00 - 30 June, 2016 - 21:00
Ubicación: 
Madrid

Próximas convocatoria del curso de SAS/BASE y Enterprise Guide en Madrid:

 

 

 

Los días 27,28, 29 y 30 de Junio se van a lanzar una nueva convocatoria del curso.

En horario: Lunes - Jueves de 16h a 21h. (total 20h).

http://www.datademy.es

Interesados: formacion@datademy.es

 

Localización: Madrid (zona M-30)

Precio: 500 euros (descuento 20% para desempleados)

 

Es una formación muy práctica y el objetivo es conocer mediante la introducción de conceptos y la realización de ejercicios prácticos la herramienta SAS/Enterprise Guide y la programación SAS/BASE.

Perfiles a los que puede interesar:

- Consultores business intelligence
- Data scientists
- Actuarios de seguros
- Analistas de riesgos
- Perfil investigación: bioestadísticos, físicos, quimicos, etc..

 

No es necesario tener conocimientos iniciales en SAS, aunque es útil conocer a nivel básico el lenguaje SQL.

A las personas que hayan realizado un aprovechamiento óptimo del curso y estén interesadas en una oportunidad profesional o bien un cambio, se les facilitará una entrevista de trabajo con empresas interesadas en perfiles SAS.

Interesados escribir a: cursos_a_medida_r@yahoo.es.

 

Profesorado: Consultores senior Business Intelligence ( > 15 años experiencia) con dilatada experiencia en SAS

datademy
 

Temario:

 

Programación SAS 1. Introducción a SAS

·         Introducción a SAS:

o        Soluciones Business Intelligence SAS

o        Capacidades SAS/BASE. Visión general.

·         Entorno trabajo SAS/BASE:

o        Acceso versión SAS for academics (entorno Cloud)

o        Inicio de sesión

o        Program editor

o        Ventanas log y output

o        Gestión de librerías y directorios

·         Acceso a fuentes de datos:

o        Lectura de ficheros planos (posiciones, delimitados)

o        Lectura de ficheros Excel

o        Acceso a bases de datos

·         Manejar tablas SAS. Crear informes lista:

o        Explorar tablas SAS

o        Indentificar observaciones

o        Salida en output (sentencia print).

·         Programar pasos DATA:

o        Leer conjuntos de datos SAS y crear variables

o        Procesos condicionales

o        Gestionar variables (sentencias keep y drop)

o        Filtrar observaciones (sentencias where)

·         Combinar conjuntos de datos:

o        Unir conjuntos de datos SAS (sentencia set)

o        Combinar conjuntos de datos SAS (sentencia merge)

·         Agregación de conjuntos de datos:

o        Procedimientos de agregación (procedimientos means y summary)

o        Manejo de informes (procedimientos report y tabulate)

·         Salidas de conjuntos de datos:

o        Personalizar la apariencia, aplicar formatos (sentencias title, footnote, proc format)

o        Crear informes HTML

Programación SAS 2.  Gestión de datos

·         Programación de pasos DATA:

o        Escribir en muchos conjuntos de datos SAS 

o        Escribir a la salida varias observaciones (sentencia ouput)

o        Escribir en un fichero de datos externo (sistema ods)

o        Filtrar observaciones en entrada y en salida. Diferencias if vs where.

·         Tratamiento de conjuntos de datos con sql:

o        Utilización de sql en SAS (procedimiento sql)

o        Unir y combinar conjuntos de datos SAS con sql

o        Agregaciones de conjuntos de datos SAS con sql

o        Extracción de datos y volcado a bases de datos externas

·         Agregación de conjuntos de datos:

o        Suma acumulada para un grupo de datos

o        Manejo de grupos de observaciones ( sentencias first, last, retain)

·         Transformaciones en los datos y funciones:

o        Manipular valores alfanuméricos

o        Manipular valores numéricos

o        Manipular fechas

o        Cambiar tipo de variables

o        Funciones tratamiento alfanuméricos, numéricos y fechas

·         Procesar datos de forma iterativa:

o        Tipos de bucles (sentencia do y while)

o        Arrays SAS

·         Empleo de procedimientos:

o        Procedimientos generalistas de utilidad (contents, compare, etc..)

o        Procedimientos estadísticos (freq, univariate, etc..)

·         Técnicas depuración de errores:

o        Uso de la sentencia PUT

o        Uso de la opción DEBUG

·         Introducción a los gráficos:

o        Diagramas de barras y circulares (GCHART)

o        Perfeccionar la salida

Programación SAS 3.  Programación macro

·         Visión general de las macros:

o        Aplicaciones habituales de las macros

o        Procesado de las macros

·         Creación de macrovariables:

o        Conceptos básicos

o        Creación de macrovariables en paso DATA

o        Inferfaz SQL y macrovariables

o        Obtención de valores en ejecución

·         Macro programas:

o        Estructura básica y definición

o        Parámetros de una macro

o        Proceso condicional

o        Procesos iterativos

o        Operaciones aritméticas y lógicas

o        Inferfaz SQL y macrovariables

·         Técnicas de almacenamiento de macros:

o        Sentencia %INCLUDE

o        Autocall

o        Almacenamiento de macros compiladas

R

$
0
0

R es una suite open source de utilidades y un lenguaje de programación para manipulación de datos, cálculos estadisticos, analítica y visualización de gráficos.

El entorno es fácilmente ampliable con nuevos paquetes (estadisticos, de gráficos, analíticos, etc.) aportados por la comunidad de usuarios y desarrolladores de R.

Dada su flexibilidad, sus capacidades y el hecho de tratarse de software libre un gran número de aplicaciones empresariales, especialmente de software de business intelligence y analítica, están creando conectores con R, o incluso lo integran dentro de la misma herramienta.

Existen varios IDE's o entornos visuales que facilitan el trabajo con R, pero quizás el más extendido es RStudio, cuya versión Desktop se distribuye también como Open Source.

 


Recursos sobre R

Página oficial del proyecto R

Página de descarga de distribuciones y packages de R

 

Manuales en español sobre R

  • “R para Principiantes”, the Spanish version of “R for Beginners”, translated by Jorge A. Ahumada (PDF).
  • A Spanish translation of “An Introduction to R” by Andrés González and Silvia González (PDF,Texinfo sources).
  • “Gráficos Estadísticos con R” by Juan Carlos Correa and Nelfi González (PDF).
  • “Cartas sobre Estadística de la Revista Argentina de Bioingeniería” by Marcelo R. Risk (PDF).
  • “Introducción al uso y programación del sistema estadístico R” by Ramón Díaz-Uriarte, transparencies prepared for a 16-hours course on R, addressed mainly to biologists and bioinformaticians (PDF).
  • “Generacion automatica de reportes con R y LaTeX” by Mario Alfonso Morales Rivera (PDF).
  • “Metodos Estadisticos con R y R Commander” by Antonio Jose Saez Castillo (PDFZIP, 2010-07-08).
  • “Optimización Matemática con R: Volumen I” by Enrique Gabriel Baquela and Andrés Redchuk (PDF, 161 pages).
    Data sets and complementary information are available athttp://www.modelizandosistemas.com.ar/p/optimizacion-con-r.html.
  • “Introducción al uso de R y R Commander para el análisis estadístico de datos en ciencias sociales” by Rosario Collatón Chicana (PDF, 128 pages, 2014-05-11).
  • “El arte de programar en R” by Julio Sergio Santana and Efraín Mateos Farfán (PDF, 197 pages, 2014-12-15; online).

 

Publicaciones sobre R en Dataprix

Análisis exploratorio en R

Análisis exploratorio con RDentro 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...

 

Data Science - Breve guía para interpretar modelos cluster

Análisis de clusterEn clustering se deja que los datos se agrupen de acuerdo a su similitud. Estos modelos son agrupaciones de segmentos -clusters- que contienen casos, tales como clientes, pacientes, autos, etc.

Una vez que un modelo de cluster es desarrollado, una pregunta emerge: ¿Cómo puedo describir mi modelo?

Aquí presentaremos una manera para acercarnos a la respuesta, a través de la implementación del Gráfico de Coordenadas in R(código disponible al final del post)..

 

Data Science - Análisis dinámico de outliers con R

Los outliers, (o "valores extremos"), son un tema siempre presente cuando se analizan datos, sin importar el origen de los mismos.

Aquí se presenta un análisis didáctico y visual hecho con el lenguaje R..

 

Geo Data Science con R

El siguiente análisis está realizado con el lenguaje R y la libreria Google Vis para la visualización de gráficos. Es tan importante medir la esperanza de vida así como también la calidad de la misma. Se analizarán datos de eurostat basados en las variables Healthy life years y Life expectancy..

 
 

Aprendiendo a crear informes automáticos desde R con rmarkdown y knitr

Evento de R Automatic Report with rmarkdownLa semana pasada asistí a un encuentro de RugBcn, el Grupo de Usuarios de R de Barcelona, que tenía por objetivo mostrar cómo crear informes automáticos directamente desde R gracias a las librerías rmarkdown y knitr. El título del evento era 'Automatic Reporting with rmarkdown'..

 

 R en el foro de Data Science
Libros y recursos gratuítos de R y Data Science

 

Ejecutar modelos de SAS/Enterprise Miner desde SAS/Enterprise Guide

$
0
0

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 nuestros cursos Septiembre:

 

Cursos SAS Septiembre

 

Descomposición de series temporales con SAS

$
0
0

 

En este post vamos a ver un caso práctico de descomposición de series temporales con SAS. Inicialmente introducimos el concepto de serie temporal y su descomposición.

Una serie temporal se define como una colección de observaciones de una variable recogidas secuencialmente en el tiempo. Este tipo de datos son útiles cuando se quiere predecir la evolución de una variable que cambia a lo largo del tiempo. Las series temporales pueden mostrar una gran variedad de patrones. Suele ser útil descomponer una serie en partes, de forma de cada parte represente una parte del comportamiento:

Tendencia: incremento o decremento sostenido a medio o largo plazo en la serie

Estacionalidad: efectos estacionales (momento del año, mes, día de la semana..)

Ciclos: Subidas y bajadas variables e inestables sin aparente periodicidad fija. Puede ser ruido o puede contener información.

Descomposición de serie temporal en estacionalidad, tendencia y resto

Podemos trabajar con series temporales en SAS en distintos módulos: SAS Enterprise Guide, SAS Visual Analytics, SAS Forecast Studio, etc..., el ejemplo que vamos a plantear puede realizarse con SAS Enterprise Guide utilizando procedimientos de SAS/ETS

El siguiente código SAS/BASE nos permite crear nuestro dataset de ejemplo:

data tabpre (keep =  periodo_f periodo val);
length mm $2. periodo $8.;
do a = 2013 to 2016;
if a = 2016 then tope = 6; else tope = 12;
do m = 1 to tope;
mm=put(m,z2.);
periodo = compress(a||mm||'01');
periodo_f = mdy(input(substr(put(periodo,8.),5,2),8.) ,input(substr(put(periodo,8.),7,2),8.) ,input(substr(put(periodo,8.),1,4),8.) );
ten = (a - 2000)*100;
val = ten + round(100*ranuni(1));
if m = 1 then val = 1.35*val;if m = 2 then val = 1.15*val;
if m = 3 then val = 1.22*val;if m = 4 then val = 1.05*val;
if m = 5 then val = 1*val;if m = 6 then val = 0.9*val;
if m = 7 then val = 0.85*val;if m = 8 then val = 0.8*val;
if m = 9 then val = 1.1*val;if m = 10 then val = 1.05*val;
if m = 11 then val = 1.24*val;if m = 12 then val = 1.3*val;
FORMAT periodo_f  MONYY5.;
output;
end;
end;
run;

 

Una vez creado este dataset podemos ver la serie gráficamente empleando el procedimiento gplot:

proc gplot data=tabpre;
plot val*periodo_f;
run;

 

 

A simple vista comprobamos que los datos representan un negocio estacional con correlación interanual, vemos pico en ene-dic y valle en jul-ago, hay tendencia alcista a lo largo de los años.

Es interesante analizar la autocorrelación de la serie. Decimos que en una serie temporal hay autocorrelación cuando existe una correlación entre un periodo dado y periodos anteriores a este:

PROC AUTOREG data=tabpre; 
MODEL val = periodo_f / NLAG=12; 
run;

 

 

Encontramos una correlación positiva alta en t - 12 (interanual) y una correlación negativa alta en t-5 , t-6 y t -7, tal y como se intuía en la gráfica anterior.

Vamos a descomponer la serie en tendencia, estacionalidad y parte irregular. Para ello empleamos el procedimiento proc timeseries.

ods graphics on;
proc timeseries data=tabpre
                   out=series
                   outtrend=trend
                   outseason=season plots=(cc tc ic acf iacf);
   /* cc: estaciona tc: tendencia ic: irregular acf: autocorrelacion */
   /* acf estandarizado no va de -1 a 1 es acf con transformación */
      id periodo_f interval=month ;
      var val;
run;
ods graphics off;

 

La salida de este procedimiento nos muestra la descomposición de la serie:

 

 

 

 

El procedimiento proc timeseries nos puede dar más información útil de la serie temporal que en pasos posteriores puede ser utilizada para modelizar.

Más información en: Formación SAS

 

 

Curso de Data Science de Microsoft, online y gratuito

$
0
0
Tipo de recurso: 
Manual o guía

Data Science and Machine Learning Essentials es un Curso online de Data Science y aprendizaje automático de la Microsoft Virtual Academy. El curso es gratuíto, organizado en módulos con capítulos, con un video de formación por capítulo, y con prácticas de lo aprendido construyendo una solución cloud de data science con Azure Machine Learning, R y Python y examen final, altamente recomendable.

Módulos que componen el curso de Data Science y Machine Learning

  • Welcome
  • Module 1: Introduction to Data Science
  • Module 2: Working with Data
  • Module 3: Visualizing Data and Exploring Models
  • Module 4: Building Machine Learning Models
  • Module 5: Creating Recommenders and Publishing Models

Incrusto aquí el video de introducción al curso, y como muestra el video del primer capítulo del módulo de visualización y exploración de modelos. Desde aquí se puede acceder al curso completo

Video introductorio del curso

 

Vídeo del capítulo de exploración de datos y visualización

Data Science and Business Intelligence - Salary and Skills report

$
0
0
Tipo de recurso: 
Estudio

What you need to know to earn more in data science and business intelligence

 

Data Science & Business Intelligence - Salary & Skills Report

What are the money-making skills you need to know to get ahead in IT's most valuable and most competitive industry?

 

Download this report to know who's hiring with the top salaries, and what they're looking for on your résumé.

 

Is there finally a victor in the battle between R and Python?

And how are the pros getting more performance out of their algorithms?

 

Informe sobre salarios y competencias en Data Science y Business Intelligence

$
0
0
Tipo de recurso: 
Estudio

Lo que necesitas saber para ganar más con data science y business intelligence

 

Data Science & Business Intelligence - Salary & Skills Report

¿Cuáles son las habilidades que más valoran las empresas para contratar profesionales IT bien pagados?

¿Qué se valora más en las ofertas de empleo de Data Science, R o Python?

¿Qué merece más la pena, ser especialista en Data Science, o especialista en Business Intelligence?

 

Descarga este informe para saber qué compañías pagan los sueldos más altos y qué valoran más de los curriculums de los candidatos.

SAS Forum España 2016

$
0
0
fecha: 
19 October, 2016 - 08:45 - 18:30
Ubicación: 
IFEMA, Feria de Madrid. Centro de Convenciones Norte

 

SAS Forum 2016 mostrará cómo analytics permite ser más rápido que los cambios

 

Un año más, Saima Solutions, como partner de referencia de SAS en España, participará en el evento de Analytics más importante de España que tendrá lugar el próximo 19 de Octubre en el Centro de Convenciones de IFEMA.

Según las previsiones de Cisco, para el 2020 habrá 50.000 millones de dispositivos conectados. La estimación de Gartner, más «modesta», afirma que serán 26.000 millones de dispositivos. Además, en cuanto al valor del mercado del Internet de las Cosas (IoT), se predice que para 2025 crecerá hasta los 6,1 billones de dólares (McKinsey), o incluso hasta los 7,1 billones de dólares (IDC).

 

En SAS Forum se verá cómo las organizaciones más innovadoras extraen valor de toda esa información. Te lo contarán en primera persona líderes internacionales, clientes y expertos de SAS.

Saima Solutions estará presente con un stand y una presentación que tendrá lugar el día 19 por la tarde en una de las salas paralelas más importantes del evento.

Rellene este formulario para solicitarnos su inscripción gratuíta a SAS Forum España 2016:

 

Solicitud de inscripción a SAS Forum España 2016
Viewing all 32 articles
Browse latest View live