Archivo de la categoría: Consultoría

Trucos Excel. Gráficos dot plot, representando un ranking gráficamente

Los gráficos de puntos son muy prácticos para representar de una forma visual rankings (por ejemplo). En Excel su realización no es inmediata como con otras herramientas (R por ejemplo). Para ilustrar el ejemplo se van a presentar los 20 primeros puestos de la lista TIOBE de mayo de 2012 (la entrada estaba en la nevera).   Entramos en la lista y sin más copiamos y pegamos los datos de tabla HTML a tabla Excel:

 

Es recomendable dar un formato más adecuado a los datos para representarlos, tened cuidado con la configuración regional, eliminad imágenes que pueden causar problemas, quedaros con los datos que deseáis representar,…

Cuando ya tenemos unas tablas adecuadas el siguiente paso es insertar un gráfico de dispersión con la posición y la medida que deseamos que aparezca en el gráfico, en este caso el rating de TIOBE Seguir leyendo Trucos Excel. Gráficos dot plot, representando un ranking gráficamente

Sentencia Test-Achats

 sentencia_test_achats_1.PNG

A pesar del título no voy a hablar del principio de igualdad de trato entre hombres y mujeres en el acceso a bienes y servicios y su suministro que regula los factores actuariales para tarificar en función del sexo. Sólo me he ido a Rastreator.com y he tarificado a una mujer de 32 años con un vehículo de los más vendidos. La fecha de hoy es 06/07/2012. En diciembre de 2012 volveré a recuperar esta entrada y hablaré del derecho. Saludos.

Lecciones de economía de un ignorante. Los bancos pierden dinero para favorecer a unos y luego los salvamos todos

Si pintamos con Excel una línea con el Euribor a 6 meses y otra línea con el interés medio a un año de los depósitos bancarios. Tenemos:

euribor-frente-interes-medio-depositos-a-un-ano.PNG

La fuente de datos es:

  • http://sdw.ecb.europa.eu/quickview.do?SERIES_KEY=143.FM.M.U2.EUR.RT.MM.EURIBOR6MD_.HSTA
  • http://sdw.ecb.europa.eu/quickview.do?SERIES_KEY=124.MIR.M.ES.B.L22.F.R.A.2250.EUR.N

Los datos del interés medio los suministra el Banco de España. Sé que no son datos 100% comparables pero sirve para este argumento. Hasta 2009 los intereses que daban los bancos estaban por debajo del precio del dinero. DESPUÉS LOS BANCOS ESTÁN DANDO DINERO A PÉRDIDAS. Por problemas de liquidez, por problemas de aprovisionamiento, batallas de pasivo, por lo que sea,… PERO ESTÁN PERDIENDO DINERO Y LO SABEN, los márgenes son negativos. En principio los beneficiados son los clientes porque están dando intereses por encima del precio del dinero. Pero la insensatez al final la pagamos todos, tanto el que se beneficia por los altos intereses (tiene dinero) como el que no se beneficia (no tiene un duro) y por si fuera poco suben comisiones, se endurecen las condiciones de crédito y demás. Luego acudimos a las subastas de liquidez y a los fondos de reestructuración de idioteces varias, mentimos en nuestras cuentas de resultados y ¡ya está!

¿Y esto quién lo ha permitido?

Sentencia del Tribunal de Justicia de la UE sobre el caso WPS y SAS

El caso de WPS y SAS por fin tiene un final. World Programing Software ha vencido (por fin) al todo poderoso SAS Institute Inc. La sentencia establece que:

De este modo, procede señalar que no puede haber infracción del derecho de autor sobre el programa de ordenador cuando, como sucede en el caso de autos, el adquirente legítimo de la licencia no ha tenido acceso al código fuente del programa de ordenador correspondiente a esa licencia, sino que se limitó a estudiar, observar y verificar ese programa con el fin de reproducir su funcionalidad en un segundo programa.

WPS no tiene el código fuente de SAS por lo tanto está dentro de la ley y cuesta mucho menos, esto último no lo dicen, lo digo yo. También hay algún aspecto sobre el software propietario que es muy interesante pero tengo que estudiar si pone lo que pone:

40 En efecto, tal como el Abogado General señala en el punto 57 de sus conclusiones, admitir que el derecho de autor pudiera proteger la funcionalidad de un programa de ordenador supondría ofrecer la posibilidad de monopolizar las ideas, en perjuicio del progreso técnico y del desarrollo industrial.

¿Cómo se puede interpretar este artículo?

En fin, aunque comercialmente la gente de WPS deja mucho que desear ya pueden decir que tienen un software 100% legal.

Data mining, Business intelligence (y/o la nube)

Hace tiempo que quería publicar una entrada en respuesta a estos comentarios escritos en el blog. Se trata de analizar las búsquedas en Google a través de Google Trends de los términos: Business Intelligence, Data Mining, Cloud Computing y NOSQL. El resultado es más que interesante:

busquedas_google.png

En rojo tenemos Data Mining, en azul tenemos Business Intelligence, en naranja Cloud Computing y en verde NOSQL. A la vista de este gráfico cabe preguntarse ¿es R en la nube el futuro de la profesión? 

En la regresión logística ¿el sobremuestreo es lo mismo que asignar pesos a las observaciones?

Hoy vamos a volver sobre el tema del sobremuestreo. Respondemos a un lector, Roberto, que hace mucho tiempo planteó una duda al respecto. La duda se puede resumir: En un modelo logístico, ¿equivale entrenar un modelo con las observaciones sobremuestreadas a entrenar el modelo poniendo un peso a cada observación? Esta cuestión nunca me la había planteado. Siempre había realizado un sobremuestreo de las observaciones adecuando la población de casos negativos a la población de casos positivos. Si estás habituado a trabajar con Enterprise Miner de SAS es habitual asignar pesos a las observaciones para realizar el proceso de sobremuestreo. ¿Obtendremos distintos resultados?

Vamos a estudiar un ejemplo con SAS y analizar que está pasando:

*REGRESION LOGISTICA PERFECTA;
data logistica;
do i=1 to 100000;
  x=rannor(8);
  y=rannor(2);
  prob=1/(1+exp(-(-5.5+2.55*x-1.2*y)));
  z=ranbin(8,1,prob);
  output;
end;
drop i;
run;

title "Logistica con un 5% aprox de casos positivos";
proc freq data=logistica;
tables z;
quit;

Tenemos un conjunto de datos SAS con 100000 observaciones aleatorias y dos variables independientes (x e y) con distribución normal y creamos una variable dependiente z que toma valores 0 o 1 en función de la probabilidad de un modelo logístico. Es decir, podemos modelizar una regresión logística perfecta con parámetros Z=5.5 – 2.55x + 1.2y Esta distribución nos ofrece aproximadamente un 5% de casos positivos. A ser un modelo logístico perfecto Seguir leyendo En la regresión logística ¿el sobremuestreo es lo mismo que asignar pesos a las observaciones?

Begraphic un add in para Excel muy interesante

 

Me he descargado de Begraphic un add in gratuito en su versión lite para Excel que nos permite realizar algunos gráficos interesantes como velocímetros o mapas. También tiene la posibilidad de realizar dashboard en hojas Excel. Todas estas tareas las realizamos mediante menús de forma bastante sencilla. En realidad es un add in que nos permite vincular las características de formas de Excel a celdas, ¿a qué os suena esto? Efectivamente, a los mapas de Excel que publico periódicamente en este sitio. Pero en este caso la gente de Begraphic pone a vuestra disposición en este enlace unos cuantos mapas más.

¿A qué estás esperando para registrarte y descargarte este complemento de Excel?

En futuras entradas trabajaremos con él, pero si alguien se anima que nos cuente su experiencia.

Informes con R en HTML. Comienzo con R2HTML (I)

En las III jornadas de R tuve el placer de asistir al taller de Gregorio Serrano sobre informes con R. Me abrió los ojos. Siempre he pensado que R no es una herramienta que sirva para hacer informes [modo consultor = ON] R no servía para realizar reporting  [modo consultor = OFF]. Pero R tiene un poderoso motor gráfico y dispone del paquete R2HTML para poder realizar tablas en HTML y si trabajamos con libros CSS de estilos podemos obtener resultados muy atractivos. Así que la otra tarde me puse manos a la obra y creo que puede salir una trilogía interesante. Bueno, depende del interés que despierte esta entrada del blog haré más entregas, pero de momento tengo en mente llegar a 3.

Seguimos con el sistema habitual. Simulo unos datos de ejemplo que podéis copiar  y pegar en vuestra consola de R:

clientes=20000
saldo_vista=abs(rnorm(clientes,0,1)*10000+5000)
saldo_ppi=(runif(clientes,0.1,0.6)*rpois(clientes,2))*60000
saldo_fondos=abs(rnorm(clientes,0,1)*100000+3000)*(runif(clientes)>=0.6)
edad=rpois(clientes,60)
datos_ini<-data.frame(cbind(saldo_vista,saldo_ppi,saldo_fondos,edad))
datos_ini$saldo_ppi=(edad<65)*datos_ini$saldo_ppi
#Creamos la variable objetivo a partir de un potencial
datos_ini$potencial= runif(clientes,0,1)
datos_ini$potencial= datos_ini$potencial +
log(edad)/2 +
runif(1,0,0.03)*(saldo_vista>20000)+
runif(1,0,0.09)*(saldo_fondos>30000)+
runif(1,0,0.07)*(saldo_ppi>10000)
datos_ini$pvi=(datos_ini$potencial>=quantile(datos_ini$potencial,
0.85))*1
#Eliminamos la columna que genera nuestra variable dependiente
datos_ini = subset(datos_ini, select = -c(potencial))

Datos simulados de una entidad bancaria donde tenemos edad, saldos en distintos productos de pasivo e identificamos a aquellos clientes que tienen contratada una pensión vitalicia. Nos solicitan realizar un informe con los datos de contratación por edad y por pasivo. Cuando realizamos informes es muy habitual tramificar variables continuas. Para crear los tramos de edad y de pasivo vamos a emplear Seguir leyendo Informes con R en HTML. Comienzo con R2HTML (I)

Análisis del programa electoral del Partido Popular antes de las elecciones en España

Ya empleamos R en alguna entrada anterior para analizar textos. Ahora nos metemos con el programa electoral del Partido Popular a 20 días de las elecciones en España. En este link podéis descargaros el programa del Partido Popular. Lejos de lo insustanciales que suelen ser este tipo de documentos y alguna frase mítica del tipo “Crecimiento sin empleo no es recuperación” nos limitaremos a contar las palabras que emplean en este programa.

En el link donde tenemos el programa accedemos al mismo en formato PDF, seleccionamos todo el documento, lo copiamos en un archivo de texto y ya podemos trabajar con R. El código ya ha sido comentado en este blog:

#Análisis del programa del PP
#Leemos el fichero de una ubicación de nuestro equipo
ubicacion="D:\\raul\\wordpress\\text minning R\\programa_PP.txt"
texto = read.table (ubicacion,sep="\r")
#Dejamos todas las palabras en mayúsculas
texto = toupper(texto$V1)
#El texto lo transformamos en una lista separada por espacios
texto_split = strsplit(texto, split=" ")
#Deshacemos esa lista y tenemos el data.frame
texto_col = as.character(unlist(texto_split))
texto_col = data.frame(texto_col)
names(texto_col) = c("V1")

#Eliminamos algunos caracteres regulares
texto_col$V1 = sub("([[:space:]])","",texto_col$V1)
texto_col$V1 = sub("([[:digit:]])","",texto_col$V1)
texto_col$V1 = sub("([[:punct:]])","",texto_col$V1)
#Creo una variable longitud de la palabra
texto_col$largo = nchar(texto_col$V1)
#Controles que utilizo
head(texto_col)
hist(texto_col$largo)

texto_col = subset(texto_col, largo>4)

library(sqldf)
contador = sqldf("
select V1 as palabra,count(*) as frec
from texto_col
where largo > 4
group by palabra
order by count(*) desc ;")

CAMBIO, POLÍTICA, SOCIEDAD y EMPLEO son las palabras más empleadas. SOCIAL aparece en la posición 50 y JÓVENES mucho más abajo. CRISIS es otra de las palabras que no son muy destacadas. Abrid R, seguid los pasos que os indico y obtendréis un análisis muy interesante. Saludos.

Univariantes de campos de nuestra BBDD con kettle

El kettle no sólo puede servirnos para subir y bajar tablas a nuestra BBDD. También puede ayudarnos a describir las tablas de nuestras BBDD de una forma muy sencilla. El paso Univariate Statistics será nuestro aliado para esta sencilla tarea.

transfomacion_kettle.png

Lo primero que tenemos que hacer es crear una conexión a nuestra BBDD. Hace tiempo ya hablamos de esta labor con Postgres. Una vez creada la conexión comprobamos su correcto funcionamiento y el primer paso será una Entrada Tabla donde seleccionaremos la tabla que deseamos describir:

entrada_tabla_kettle.png

El botón Obtener consulta SQL nos permite navegar de forma sencilla por los distintos esquemas de la BBDD, seleccionamos la tabla y podemos ver la consulta a realizar, por supuesto podemos manipular el código SQL a nuestro antojo. Como siguiente elemento vamos a Seguir leyendo Univariantes de campos de nuestra BBDD con kettle