viernes, 23 de septiembre de 2016

Integrar SAS y R. Procedimiento proc_R

Vimos en una entrada anterior, como integrar SAS y R de diferentes formar:

Ejecutar script R desde SAS

En esta entrada, recomendamos otra forma de hacerlo basada en la macro proc_R:



Para ello es necesario descargar la macro: macro proc_R  y seguir los pasos que se indican en el siguiente post:

run R from SAS

Aprovechamos para recomendar la página www.listendata.com/ , donde es posible encontrar múltiples recursos de SAS.

lunes, 5 de septiembre de 2016

Videotutorial introducción a la importación de datos y constructor de queries con SAS

Adjunto link sobre el video que he generado sobre cómo realizar una importación de datos en SAS




y un posterior paso para tratar la información importada con el constructor de queries:


jueves, 25 de agosto de 2016

Descomposición de series temporales con SAS

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.



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=(sc tc ic acf iacf);
  /* sc: estacional tc: tendencia ic: irregular acf: autocorrelacion */
      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




lunes, 27 de junio de 2016

Convocatoria cursos SAS en Septiembre

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






- Intensivo fin de semana (viernes tarde + sábado mañana): 9/10 Sept y 16/17  Sept . 20h


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

Interesados: formacion@datademy.es

Localización: Madrid (zona metro Diego de León). Precio: 500 euros (descuento 40% 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.

Igualmente se ofrecerá orientación de carrera a aquellas personas que quieran orientar su perfil hacia el data science.

Interesados escribir a: formacion@datademy.es


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



jueves, 26 de mayo de 2016

Jornada calidad de datos (Deyde)

Interesante jornada  la celebrada por  Deyde y que desde  datademy hemos podido asistir. Los temas relativos a la calidad del dato nos parecen cada vez más relevantes de cara a asegurar una base de información confiable para nuestros procesos analíticos.

En la jornada organizada por Deyde hemos podido ver las presentaciones de Luis Martinez
(director general Deyde) y de Jaime Roig (director comercial de Deyde) sobre la compañía y
sus interesantes productos a la que ha seguido la intervención de María Hernández (data scientist
de BBVA) que nos han mostrado interesantes ejemplos de innovadores proyectos de data science. Posteriormente Miguel Cruz (director marketing Reale) nos explicó los diferentes retos a los que la gestión de clientes se enfrenta en el sector seguros y como su estrategia se apoya en unos datos de clientes de calidad y confiables. Por último David Dominguez nos presentó los servicios de la compañia Wysedo-deyde  y Ana Calvo (analista datos Deyde) nos hizo una interesante demostración de las capacidades de MyDataQ.



viernes, 13 de mayo de 2016

Decisiones basadas en datos

Ante los grandes eventos hay que tomar las mejores decisiones. Para ello es fundamental apoyarse en análisis y en datos.



Para ello es necesario formarse en Business Analytics y conocer las mejores herramientas del mercado: www.datademy.es


domingo, 24 de abril de 2016

Segmentación de clientes basada en RFM con SAS

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 los resultados encontraré clientes de diferentes características. Alguno 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

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 del 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.

Más infomación en:

Formación SAS

Formación Business Intelligence