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

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

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

Interesante noticia leída en el cincodias.

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:

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, derechos de autor en los programas de ordenador no protege a los lenguajes de programación de la copia, estoy de acuerdo con él que se trata de una cuestión sobre la que se requiere la orientación de la Tribunal de Justicia (véanse los párrafos 211-218 supra).

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 SOLO DEVUELVE UN NUMERO;

&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 facilmente, 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 mas 1 en estudio. Si disponemos de una fecha SAS recomiendo usar la función INTNX para determinar el número de días del mes, ejemplo:

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 como funcionan he preparado el siguiente esquema/ejemplo:

entrenamiento-validacion-test.PNG

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 a ultimo día de un mes y se determina cuales 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…

Trucos R. La función mod para R

Buscando algunas cosas sobre R he encontrado esta función que hice hace mucho tiempo. De hecho puedo decir que de las primeras que hice allá en 2001 (creo) cuando empecé a conocer esto de R. Por aquellos entonces aseguré que el futuro pasaba por R y 9 años después sigo diciendo lo mismo, el tiempo me dará la razón, lo que no me imaginaba que hacía falta tanto tiempo. En fin, historias del dinosaurio. Vamos con la función «histórica». Al no disponer de la función mod en R la programé:

Gráficos dinámicos en R con la función text

En graphics tenemos la función text y hoy nos vamos a divertir con esta función. Simplemente lo que hace es poner un texto en un gráfico. Lo más sencillo:

#Gráfico sin nada

plot(rep(10,10),rep(10,10),ann=FALSE,type="n",axes=FALSE)

#Ponemos un texto en el centro

text(10,10,"Ejemplo de uso de text")

En un gráfico sin nada escribimos, sólo indicamos la posición y el texto a escribir. Vamos añadiendo opciones:

#Gráfico sin nada

plot(rep(10,10),rep(10,10),ann=FALSE,type="n",axes=FALSE)

#Ponemos un texto en el centro

text(10,10,"Ejemplo de uso de text",srt=45,col=1,cex=3,

vfont=c("sans serif", "plain"))

Ahora modificamos la inclinación del texto con SRT , el color, el tamaño y con vfont la fuente. Podemos jugar con los colores del texto realizando un bucle for:

Laboratorio de código SAS. Vistas + PROC MEANS vs. PROC SQL

Las vistas son muy importantes cuando trabajamos con SAS. El problema del espacio en disco se acentúa cuando trabajamos con SAS. Este problema podemos minimizarlo empleando vistas. También hay otras situaciones en las que se recomienda usar vistas, cuando realizamos agregaciones sobre campos de una tabla y a la vez realizamos una operación sobre estos campos es muy habitual emplear el PROC SQL. Ejemplo de lo que cuento:

data importes;

do idcliente=1 to 2000000;

importe=ranuni(34)*1000;

output;

end;

run;

*FORMA 1: SQL;

proc sql;

select var(sqrt(importe)), var(importe)

from importes;

quit;

Sobre una tabla con 2.000.000 de registros hacemos la varianza de un campo importe y de la raiz cuadrada de ese mismo campo importe. Es decir, hacemos la varianza sobre la operación aritmética de un campo. Para hacer este trabajo con PROC MEANS sin tener que crear un nuevo campo en la tabla haríamos una vista y un MEANS posteriormente:

Monográfico. Funciones INTNX e INTCK para fechas en SAS

Las funciones INTNX e INTCK de SAS atraen muchas visitas a esta web. Aunque ya hay algún mensaje en el que muestro como funcionan creo que algunos trabajadores me agradecerán este monográfico. INTNX e INTCK son funciones para trabajar con fechas en SAS. INTNX sirve para trabajar con periodos luego el resultado que ofrece será una fecha e INTCK sirve para trabajar con intervalos, luego el resultado que nos ofrece será un número entero. Esta es la premisa fundamental. Entonces:

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:

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:

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.

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: