Trucos SAS. Por qué hay que usar objetos hash

Quiero trabajar un poco con objetos hash en SAS. Pero antes quería demostraros, con una comparativa de código muy sencilla y muy rápida, la necesidad de trabajar con estos objetos en SAS. La problemática es muy habitual en nuestro trabajo diario: tenemos una tabla SAS muy grande, con millones de registros, y tenemos que cruzarla con otra tabla SAS muy pequeña para quedarnos sólo con los registros que aparezcan en la tabla pequeña. Tenemos unos clientes que han recibido un contacto comercial y hemos de quedarnos con sus saldos históricos en determinados productos. Veamos los distintos métodos que planteo para machear registros; conjuntos de datos de partida: ...

1 de septiembre de 2010 · rvaquerizo

Detalles técnicos del seguro de crédito. El factor de uso del importe concedido

El seguro de crédito me sigue pareciendo muy interesante técnicamente y, de vez en cuando, hay que dedicarle alguna entrada en el blog. Voy a recordar viejos tiempos escribiendo sobre el factor de uso del importe concedido. Nos ponemos en antecedentes: en el seguro de crédito, el riesgo es el impago de una transacción comercial. Las empresas que lo contratan tienen que disponer de información muy exacta de las ventas a crédito a sus clientes, a los que llamaremos «deudores». Esta información ha de estar en posesión de la compañía aseguradora que cubre la operación, ya que, en caso de siniestro, define la cantidad máxima a indemnizar al asegurado («importe siniestral»). Es decir, el asegurado «comunica» a la aseguradora el importe de la venta a su deudor y la aseguradora asume el riesgo de impago sobre un porcentaje del total: tiene un «porcentaje garantizado». Un inciso: las aseguradoras de crédito, además, ofrecen información sobre deudores, gestión de recobros… Pero la función fundamental del seguro de crédito es asumir el riesgo de impago de las transacciones de los deudores con sus asegurados; esta función es imprescindible para el desarrollo de un país, así de claro. ...

31 de agosto de 2010 · rvaquerizo

Trucos Excel. Gráficos con caracteres

Quería plantear hoy un truco Excel que no es un truco como tal, sino más bien una idea para que podáis hacer más vistosos vuestros informes con gráficos de caracteres, sobre todo para aquellos dinosaurios que hagáis muchos rankings o puntuaciones. La idea es muy sencilla: se trata de emplear la función REPETIR de Excel pero «con talento». =REPETIR("|"; E12) nos repite el pipe | tantas veces como le indiquemos en la casilla E12. Pero hay algo que sí tiene importancia: la fuente que elijamos para el pipe: ...

13 de agosto de 2010 · rvaquerizo

Trucos SAS. Matrices de adyacencia con SAS

SAS no está pensado para el cálculo matricial, pero hay ocasiones en las que hemos de trabajar con ellas. Uno de los casos típicos es la matriz de adyacencia. Se trata de partir de estos datos: a b a e b c b e c e d a Para crear: a b c d e a 0 1 0 1 1 b 1 0 1 0 1 c 0 1 0 0 1 d 1 0 0 0 0 e 1 1 1 0 0 Yo planteo la siguiente metodología: ...

5 de agosto de 2010 · rvaquerizo

Bootstrap con SAS sin complicaciones

El bootstrap es una técnica de muestreo que, a partir de la simulación, crea sucesivas muestras con reemplazamiento que teóricamente son una buena aproximación al universo muestral. Por aquí podéis encontrar información y bibliografía al respecto. Lo que yo quería comentaros hoy es algo a lo que ya hizo referencia la comunidad de SAS en español. Hacer bootstrap con SAS no es complicado. Cuando buscas información ves unas macros que dan miedo y piensas “esto es un software”, sin embargo el tema no es tan difícil y con un paso DATA ya podemos poner a funcionar esta técnica. Veamos el ejemplo, partimos de un conjunto de datos SAS que obtenemos en esta web interesantes ejemplos verdad. Nos bajamos el archivo a una ubicación de nuestra máquina o leemos la url y comenzamos a trabajar: ...

3 de agosto de 2010 · rvaquerizo

Lecciones de economía de un ignorante. Cosas que no comprendo

Juan Manuel de Prada escribió esto en ABC. Y yo he conocido a un tipo de Indra que es su doble. Pero siguiendo el hilo de este opinador, hay otra cosa que tampoco comprendo: el BBVA obtiene unos “buenos y sólidos resultados superando expectativas en ingresos”, incluido un escandaloso aumento de las comisiones, harina de otro costal. Bueno, pues tras obtener estos resultados con unos márgenes brutos asombrosos, va y emite unos bonos con un diferencial (no decir spread, que es de catetos) con respecto al Euribor a 3 meses (por favor, no decir mindswap) muy por encima de anteriores emisiones. ...

3 de agosto de 2010 · rvaquerizo

Lecciones de economía de un ignorante. La privatización de las cajas será una chapuza

Interesante noticia leída en Cinco Días. La Ley de Cajas, el FROB y otros artificios se han hecho exclusivamente para la rápida privatización de las Cajas de cara a evitar un posible corralito. Se está pasando de puntillas sobre el tema porque es una verdadera chapuza. Los principales puntos sobre los que se quería incidir con todas estas leyes ad-hoc pensadas a la hora de la comida por nuestros representantes políticos en un restaurante vegetariano que hay detrás del Congreso son: ...

2 de agosto de 2010 · rvaquerizo

David gana a Goliat. La sentencia del caso SAS frente a WPS

Estaba esperando que saliera la sentencia. Además cabía la posibilidad de pertenecer a Goliat y tenía la boca cerrada. Y resulta que tenemos una de las sentencias más interesantes en cuanto a software se refiere: http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html Yo no soy capaz de leerme eso en inglés, pero el traductor de Google me ha ayudado: Por las razones anteriormente expuestas, llego a la conclusión de la siguiente manera: i) Si bien no estoy convencido de que Pumfrey J se equivocó al concluir en Navitaire que, sobre la correcta interpretación del artículo 1 (2) de la Directiva sobre el software, los derechos de autor en los programas de ordenador no protegen a los lenguajes de programación de la copia, estoy de acuerdo con él en que se trata de una cuestión sobre la que se requiere la orientación del Tribunal de Justicia (véanse los párrafos 211-218 supra). ...

30 de julio de 2010 · rvaquerizo

Trucos SAS. Número de días de un mes

Están entrando muchas visitas con las palabras «número de días de un mes en SAS». Y hoy vamos a dar respuesta a estas entradas con una macro y un truco de SAS. Si tenemos una fecha en formato AAAAMM numérica, típica de las particiones de Oracle, disponemos de la siguiente macro: %macro dias(mes); /* VARIABLES AÑO Y MES */ %let y = %sysfunc(int(&mes. / 100)); %let m = %sysfunc(mod(&mes., 100)); /* TRATAMIENTO ESPECIAL PARA LOS DICIEMBRES */ %if &m. = 12 %then %do; %let m1 = 1; %let y1 = %eval(&y. + 1); %end; %else %do; %let m1 = %eval(&m. + 1); %let y1 = &y.; %end; /* 01/MES MAS 1 - 01/MES */ %let ini = %sysfunc(mdy(&m., 1, &y.)); %let fin = %sysfunc(mdy(&m1., 1, &y1.)); %let dias = %eval(&fin. - &ini.); /* AL FINAL LA MACRO SÓLO DEVUELVE UN NÚMERO */ &dias. %mend; * EJEMPLO DE USO; data _null_; pepin = %dias(200402); put pepin =; run; Ejemplo muy sencillo de código macro y que se entiende muy fácilmente; como siempre, recomiendo que copiéis y peguéis en vuestro SAS y lo entenderéis enseguida. El caso es que calculo el número de días de un mes como la diferencia entre el día 1 del mes en estudio frente al día 1 del mes más 1. ...

29 de julio de 2010 · rvaquerizo

Entrenamiento, validación y test

Cuando realizamos modelos, hay 3 conjuntos de datos fundamentales: Conjunto de datos de entrenamiento: son los datos que entrenan los modelos. Conjunto de datos de validación: selecciona el mejor de los modelos entrenados. Conjunto de datos de test: nos ofrece el error real cometido con el modelo seleccionado. Para entender mejor su importancia y cómo funcionan, he preparado el siguiente esquema/ejemplo: Una empresa de telecomunicaciones, de cara a mejorar la efectividad de sus campañas comerciales, decide realizar un modelo de propensión a la desconexión. Se define un universo como los clientes activos al último día de un mes y se determina cuáles de ellos han desconectado nuestra línea al mes siguiente. Podría ser recomendable utilizar varias cosechas de clientes para evitar efectos estacionales o campañas agresivas de la competencia. Para el universo seleccionado, la tasa de desconexión se sitúa en un 12%. Este universo hemos de dividirlo en 2 partes. La primera de ellas formará el conjunto de datos de entrenamiento y validación y, aquí, es importante realizar un sobremuestreo estratificado del número de desconexiones para mejorar el entrenamiento del modelo. El estrato será «tiene evento» vs. «no tiene evento». En el esquema gráfico, aumento la proporción de desconexiones hasta un 50%; no es una proporción imprescindible: si nuestra muestra no nos permite esa proporción, algunos expertos con los que he trabajado y yo mismo aseguramos que un 20% de eventos puede ser suficiente; pero, si es posible, buscaremos el 50-50. En un árbol de decisión (por ejemplo), este sobremuestreo nos identificaría ramas extremas. Una vez definido el conjunto de datos sobremuestreado, lo separamos en entrenamiento y validación. Este dinosaurio siempre deja la proporción 70-30… ...

28 de julio de 2010 · rvaquerizo