Gráficos de densidades con SAS y el PROC KDE

El PROC KDE de SAS está incluido en el módulo SAS/STAT. Es un procedimiento que nos permite estudiar gráficamente las distribuciones de variables continuas. Lo que nos produce son gráficos de densidades. Para seguir el ejemplo nos vamos a ir a Yahoo Finance y descargarnos un evolutivo del IBEX de los últimos 3 meses (yo realizo este proceso con Excel), una vez tengamos el dataset creado, para el análisis de la densidad univariante podemos hacer: ...

29 de junio de 2010 · rvaquerizo

Trucos SAS. Envío de email con DATA

Si deseamos enviar un email con SAS hemos de realizar un proceso similar al que os presento a continuación. Es una duda que me ha llegado a través de correo electrónico, la resolución la comparto con todos por si vuelve a surgir. No quiero plantear macros complicadas ni parametrizaciones «extrañas». Esto se hace a través de FILENAME EMAIL: ```sas filename outbox email "rvaquerizo@analisisydecision.es"; data _null_; file outbox to=("rvaquerizo@analisisydecision.es") cc=("rvaquerizo@analisisydecision.es") subject="Prueba " attach="c:\temp\borra.sas"; *CUERPO DEL MENSAJE; put " Este es un mensaje automático. "; put " "; put " "; run; En outbox ponemos el correo de salida, después hacemos un DATA NULL que escribe en el buzón de salida, en TO ponemos los destinatarios entre comillados, en CC las copias, en SUBJECT ya sabéis y en ATTACH también. Después si queremos escribir en el cuerpo del mensaje empleamos PUT. Una sintaxis muy sencilla, comentaros que este proceso al final está limitado por la aplicación que nos gestiona el correo. Al final requiere que pulsemos un botón, de hecho si alguien solventa este problema que me comente como lo ha hecho. ...

28 de junio de 2010 · rvaquerizo

Monográfico. Un poco de PROC LOGISTIC

El PROC LOGISTIC es un procedimiento de SAS que nos ha dado muchas satisfacciones a los dinosaurios como el ahora escribiente. La regresión logística es uno de los modelos de regresión más utilizados y es bien conocido por todos mis lectores (bastante más inteligentes que yo). El problema es muy sencillo hemos de clasificar una población dividida en dos partes a partir de unas variables independientes. Su aplicación es muy extensa: patrones de fuga, propensiones a compra, salud, fraude,… Con este monográfico pretendo acercaros en 3 minutos a las sentencias básicas en SAS para crear un modelo de regresión logística y proponer gráficos y validaciones. En la línea habitual del blog partimos de una simulación y analizamos la sintaxis, evitamos poner las salidas para no “cargar” la entrada con tablas de poca utilidad. El ejemplo es el que sigue: ...

24 de junio de 2010 · rvaquerizo

Trucos SAS. Modificar el nombre de una tabla con código

Dando un repaso a las entradas de Google me he encontrado repetida la frase: «cambiar el nobre de un dataset SAS». Imagino que desearán cambiar el nombre de un dataset con código sin realizar un paso DATA. Para hacer esta labor hemos de emplear el PROC DATASETS y la sentencia CHANGE. Veamos un código de ejemplo muy sencillo: *DATASET ALEATORIO; data sasuser.uno; do i=1 to 1000; aleat=ranuni(9); output; end; run; *CAMBIAMOS EL NOMBRE; proc datasets lib=sasuser nolist; change uno=borrar; quit; *ELIMINAMOS EL DATASET; proc delete data=sasuser.borrar; quit; El código es extremadamente sencillo. Imagino que las entradas que estaban llegando con esta duda buscaban algo parecido a esto. El PROC DATASETS es un gran desconocido.

16 de junio de 2010 · rvaquerizo

Macros SAS. Agrupando variables categóricas

Agrupar variables con SAS es una de las tareas más habituales. Las variables continuas las agrupamos según un criterio y las discretas, en principio, ya vienen agrupadas. El problema con las variables discretas es que pueden tomar muchos valores, muchos de ellos con poco valor que habitualmente agrupamos en un rango “OTROS”. Pues bien, hoy quería mostraros una macro muy sencilla que utilizo para crear ese cajón desastre. El código tiene algún aspecto muy interesante, es el que os pongo a continuación: ...

14 de junio de 2010 · rvaquerizo

Truco SAS. Duplicar registros si cumplen una condición

Mejor que truco, tontería SAS pero sirve para entender mejor el paso DATA. Se trata de duplicar registros si cumplen una condición. Es decir, añadimos una fila en SAS si se cumple la condición: data uno; do id_cliente=1 to 10000; output; end; run; data uno; set uno; output; if mod(id_cliente,2)=0 then output; run; No puede ser más sencillo pero me llegó esta duda y me parece un buen ejemplo de uso de OUTPUT.

11 de junio de 2010 · rvaquerizo

Un acercamiento a GRAPH. ANNOTATE macros

No quiero entrar en muchos detalles sobre el uso de ANNOMAC. Esta macro nos permite usar las macros de ANNOTATE. Estas macros sirven para trabajar con el PROC GANNO del que ya hicimos una pequeña revisión. Ahora me gustaría presentaros un ejemplo de uso de estas macros y sobre todo me gustaría que analizáseis el dataset SAS generado. Pongo directamente todo el código necesario: *OPCIONES NECESARIAS; goptions reset=global cback='white' colors=(black) xpixels=1000 ypixels=1000; %LET pos_inicial_x=50; %let pos_inicial_y=99; Iniciamos con goptions y creamos unas posiciones iniciales. Estudiemos como trabaja annomac: ...

7 de junio de 2010 · rvaquerizo

Un acercamiento a GRAPH. ODS GRAPHS PROC SGPLOT

No todos los procedimientos gráficos de SAS son tan malos y tan complejos. Hay una serie de procedimientos como el PROC SGPLOT que nos permiten realizar gráficos muy vistosos y con una sintaxis más sencilla. Estos procedimientos son los que vamos a denominar ODS GRAPHS. Como siempre, en estas líneas, sólo os voy a acercar a algunas de las posibilidades que ofrece el PROC SGPLOT (a futuro veremos más) y despertar vuestra curiosidad. Hay documentación muy completa en la red al respecto, además, y sin que sirva de precedente, la ayuda de SAS es muy correcta. ...

28 de mayo de 2010 · rvaquerizo

Las cuentas claras.

Si hay alguna tarea o procedimiento indispensable y más repetitivo hasta la saciedad por excelencia a la hora de trabajar con bases de datos y tener que reportar alguna información por mínima que sea, esta es contar o contabilizar el número de casos (registros) que tenemos en total o en subtotales (por grupos) dentro de una tabla (los llamados datasets en SAS). Para dar mayor utilidad a este ‘tutorial’ sobre conteo, partiré de una tabla con 2 columnas (campos) tipo cadena, es decir tipo texto, de manera que podamos ver diferentes métodos para contar-contabilizar NO solo campos tipo texto sino también trucos que nos den una solución más ‘elegante’ de la combinación de ambos campos tipo cadena. Estos 2 campos se llamarán grupo y tipo, muy empleados por muchos programadores, pero se podrían llamar tambien familia y familia_segmento o bien comunidad_1 y comunidad_2 o bien zona_tipo1 y zona_tipo2 o bien entorno_primario y entorno_secundario, o si el ejercicio tratase de contar el número de alumnos por sexo y color_ojos bastaría con sexo y color_ojos, etc etc. ...

22 de mayo de 2010 · danifernandez

Curso de lenguaje SAS con WPS

Paro algunas series de las que venía escribiendo para iniciar una que es de mucha importancia para el blog. Voy a acercar el lenguaje SAS a los lectores con un menor nivel. Se trata de crear uncurso introductorio al lenguaje SAS pero con la herramienta WPS. La metodología que seguirá el curso será muy similar a la de un manual que colgué en la red hace unos años. Pero en esta ocasión emplearé un lenguaje más apropiado para el blog y mejoraré algunos puntos del manual e incidiré en otros que no quedan muy claros. ...

21 de mayo de 2010 · rvaquerizo