martes, 3 de enero de 2017

Gestionando del ciclo de vida analítico para la toma de decisiones a gran escala

Recomendamos el siguiente whitepaper de SAS: Gestionando del ciclo de vida analítico para la toma de decisiones a gran escala.  En este whitepaper encontramos recomendaciones y mejores prácticas para el desarrollo del ciclo de vida analítico. Se plantea un marco de trabajo para la explotación y mantenimiento de modelos analíticos aplicados a diferentes ámbitos: marketing de clientes, fraude, riesgos crediticios, riesgos operativos, gestión financiera, etc..



Se repasan los errores comunes en la implementación de estos modelos y se identifican las principales fases de todo proceso de análisis: preparación, exploración, modelización, implementación, evaluación, nuevas preguntas, nueva información en un proceso cíclico que se retroalimenta. Para la automatización y gestión de este ciclo se plantea un entorno analítico basado en soluciones SAS.

Se muestran casos prácticos de empresas tales como: Visa, Orlando Magic, instituciones financieras

Más información sobre las soluciones de SAS que se mencionan en: Formación SAS

domingo, 1 de enero de 2017

Feliz 2017


La foto está tomada con la catedral de Burgos y su fachada principal. Un total de 48 fotos del Sol, sobrepuestas. Hechas durante un año, una vez por semana, en el mismo sitio y hora. El punto más alto es el solstício de verano y el más bajo el de invierno. Formando así la Lemniscata: símbolo del infinito. Feliz 2017

No dejes de aprender una cosa nueva cada día de 2017. Os invitamos a nuestros primeros cursos del año: Formación SAS

martes, 6 de diciembre de 2016

Notificaciones desde procesos SAS: envio de mails

Es común el tener que realizar notificaciones de distinto tipo al finalizar un proceso de reporting. En el siguiente ejemplo mostramos como enviar un e-mail desde un proceso SAS.




filename outbox email
   to='formacion@datademy.es'
   type='text/html'
   subject='Informe SAS'
   attach='/home/datademy/ficheros/consumo_clientes.txt' ;


ods html
   body=outbox /* Enviar por correo, en lugar de una ruta se le indica buzón email */
   rs=none;

title 'Informe consumo clientes';

data clientes_consumo;
id_cliente = 1; cod_periodo = 201610; consumo = 20; output;
id_cliente = 1; cod_periodo = 201611; consumo = 30; output;
id_cliente = 1; cod_periodo = 201612; consumo = 10; output;
id_cliente = 2; cod_periodo = 201610; consumo = 24; output;
id_cliente = 2; cod_periodo = 201611; consumo = 26; output;
id_cliente = 2; cod_periodo = 201612; consumo = 20; output;
run;


proc tabulate data=clientes_consumo;
class id_cliente cod_periodo;
var consumo;
table id_cliente , cod_periodo*consumo;
run;


ods html close;

Más info

sábado, 26 de noviembre de 2016

Video tutorial: trasponer datos en SAS

Adjuntamos un nuevo videotutorial donde mediante un ejemplo vemos como trasponer datos en SAS (procedimiento proc transpose) reorganizando la estructura de la tabla pasando campos de filas a columnas.



Esperamos que os sea de utilidad.

Más info:  Formación SAS

domingo, 6 de noviembre de 2016

Detectar nulos en tablas SAS

Es frecuente la necesidad de validar y gestionar la existencia de nulos en los datos que manejamos en los procesos de análisis de reporting.


A continuación añadimos un pequeño script SAS en el que aparecen ejemplos de asignación de nulos a columnas de tablas o de la validación de los nulos. En el ejemplo se ven los casos en los que el tratamiento de nulos difiere si la columna es numérica o alfanumérica y se muestran ejemplos de funciones útiles tales como: missing(), nmiss() y cmiss(). Igualmente se muestra alguna diferencia que existe entre validar nulos en una sentencia condicional if o en una clausula where. Esperamos sea de utilidad y nos sirva como breve compendio que nos evite los problemas comunes en la detección de nulos.

/* Validar nulos: diferentes opciones */

/* Tabla con campos nulos. Asignación de nulos */

data tabinput;
length campo1 $10 campo2 8.;
campo1 = ""; /* asignar nulos en alfanuméricos */
campo2 = 3;
output;
campo1 = "b";
campo2 = .; /* asignar nulo en numéricos */
output;
campo1 = "a";
campo2 = 5;
output;
run;

data validar_nulos;
set tabinput;
where campo1 is missing; /* funciona en un where pero no en un if */
run;

data validar_nulos;
set tabinput;
where campo1 is null; /* funciona en un where pero no en un if */
run;

data validar_nulos;
set tabinput;
if campo1 eq ""; /* validar nulos en alfanuméricos */
run;


data validar_nulos;
set tabinput;
if campo2 eq .; /* validar nulos en numéricos */
run;

data validar_nulos;
set tabinput;
if missing(campo1); /* función missing valida para alfanuméricos y numéricos */
run;

data validar_nulos;
set tabinput;
if nmiss(campo2) = 1 ; /* contador de missings valida para numéricos */
run;

data validar_nulos;
set tabinput;
if cmiss(campo1) = 1 ; /* contador de missings valida para numéricos y alfanuméricos */
run;

Más info en:

Formación SAS

martes, 25 de octubre de 2016

Estandarización de variables en SAS

Un paso muy habitual en los procesos de analítica es la estandarización o normalización de variables.  La normalización o estandarización es una técnica muy útil a la hora de comparar datos de diferentes distribuciones o que estén en unidades de medida diferentes.
Consiste en aplicar un cálculo sencillo a la variable objeto de estudio, de forma que conseguimos que los datos de la distribución normalizada tengan una media aritmética de 0 y una desviación típica de 1. 

Z i= (Xi - media aritmética)/(desv. típica)
Zi es el valor normalizado y lo obtenemos restando a cada valor original  Xi   la media aritmética y dividiendo el resultado por la desviación típica

Es un paso previo que puede ser necesario en alguno algoritmos tales como la clusterización o las redes neuronales.

Para realizar este proceso en SAS nos basamos en el procedimiento proc standard.
Partimos del siguiente dataset de entrada:


Nos interesa estandarizar las variables: edad, antiguedad y consumo_yyyymm. Para ello:

data clientes1;
set clientes;
s_edad = edad;
s_antiguedad = antiguedad;
s_consumo_201601 = consumo_201601;
s_consumo_201602 = consumo_201602;
s_consumo_201603 = consumo_201603;
run;

PROC STANDARD DATA=clientes1 MEAN=0 STD=1 OUT=clientes2;
  VAR s_edad s_antiguedad s_consumo_201601 s_consumo_201602 s_consumo_201603 ;
RUN;

Tal y como hemos realizado el proceso mantiene las antiguas variables y crea las nuevas estandarizadas:


El proceso también se puede realizar sin necesidad de escribir código utilizando la tarea correspondiente de Enterprise Guide.




Más info en:

Formación SAS