Archivo de la categoría: Business Intelligence

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? 

Mapa de España por provincias en HTML

gmap.gif

Nueva entrada en el blog dedicada a mapas, esta vez con HTML. Se trata de un mapa de España por provincias lo más sencillo posible. Es una imagen gif en blanco con el mapa de España, la imagen tiene un link para cada provincia. El link corresponde al identificador numérico de la provincia, los dos primeros dígitos del código postal. El resultado lo podéis ver y guardar en este enlace . No incluye las Ciudades Autónomas. No es un mapa muy vistoso, es lo más sencillo posible, sois vosotros los que tenéis que darle el formato que más se adecúe a vuestras necesidades. Una idea: trabajad sobre el gif para mejorarlo, el trabajo más complicado es asignar el link con el AREA SHAPE y eso ya está hecho. También podéis aprovechar las coordenadas de ese mismo AREA SHAPE y algún script para hacer mapas mucho más vistosos. En fin, no puedo daros todo hecho, si alguien está especialmente interesado que contacte. También podéis mandarme modificaciones y las iré subiendo a la web, como hacemos con los mapas de España en Excel.

Espero que este mapa sea de utilidad, para mi será el siguiente paso en la creación de informes en HTML con R. Saludos.

Gráficos de velocímetros con Excel hechos con Begraphic

En el blog ya hemos hablado de Begraphic. Ahora vamos a descubrir algunas de sus posibilidades. En concreto vamos a realizar gráficos del tipo velocímetro con Excel de una forma muy sencilla. Tan sencilla que vamos a partir de tener instalado Begraphic y de estos datos:

velocimetro_excel1.png

En la pestaña Begraphic tenemos el complemento Gauge y empezaremos con el primer paso que nos sirve para ubicar el gráfico resultante:

velocimetro_excel2.png

Seleccionamos donde queremos que se genere el gráfico. Y el siguiente paso nos pregunta si deseamos mantener  el tamaño, no he jugado con este paso:

velocimetro_excel3.png

Tras validarlo lo siguiente que nos encontramos es la ventana más importante Seguir leyendo Gráficos de velocímetros con Excel hechos con Begraphic

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)

Trucos Excel (y SAS). Complemento para cambiar la configuración regional

Pasar salidas de SAS a Excel trae de cabeza a muchos usuarios de SAS. A este  blog llegan un gran número de entradas desde Google con términos del tipo  importar datos de sas a Excel, conectar SAS a excel, cambiar la configuración  regional con macros,… Hoy quería ayudaros un poco con esta problemática. Bueno, en realidad os va a ayudar el compañero Salva que hace unos meses me pasó un complemento de Excel tremendamente útil para aquellos que movemos datos  entre SAS y Excel. Para trabajar con este complemento sólo tenéis que  descargarlo en este enlace y activar el complemento en Opciones de Excel  Administrar complementos. Una vez hayamos hecho esto tendremos en nuestra  pestaña complementos lo siguiente:

configuracion-regional-excel.PNG

Muy sencillo, si elegimos Excel Americano habremos cambiado la configuración regional de Excel a . para separar decimales y , para separar miles. Si elegimos configuración Excel del sistema tendremos la configuración habitual europea. Si elegimos eliminar el Add-in… Ahora podéis copiar y pegar directamente salidas de Enterprise Guide o SAS en Excel. También os será mucho más sencillo exportar ficheros de Excel a SAS para aquellos que no tenéis los módulos necesarios ya que podéis guardar los archivos SAS como texto e importarlos desde SAS sin problemas. No me lo agradezcáis a mi, yo sólo escribo estas líneas, agradecédselo a Salva. Por cierto, el complemento está protegido con una contraseña que no diré sin su permiso.

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.

Trucos SAS. Operaciones con tablas de dimensiones con SAS

Algunos llaman a las tablas de dimensiones tablas de lookup, yo me niego. Con SAS ya hemos visto como crear cruces de tablas de dimensiones con tablas de hechos a través de formatos, bajo mi punto de vista el método más eficiente. Pero hoy quería traeros un ejemplo de cruce de tabla pequeña con tabla grande a través de arrays multidimensionales con SAS. Se trata de guardar los valores de la tabla “pequeña” en un array temporal multidimensional cuando leemos la tabla grande. Para ilustrar esta tarea he preparado un ejemplo:


data aleatorio;
do i =1 to 2000;
grupo = round(1+3*ranuni(4));
importe=ranuni(34)*grupo*1000;
output; end;
run;
proc summary data=aleatorio nway;
class grupo;
output out=medias (keep=grupo importe) mean(importe)=;
quit;

Generamos un conjunto de datos SAS aleatorio con una variable grupo y una variable importe, calculamos la media del importe por grupo y deseamos medir registro a registro la diferencia con respecto a la media del grupo. Para estos casos podemos trabajar con formatos o, por ejemplo, con macro variables:


data _null_;
set medias;
if grupo = 1 then call symput('med1',importe);
if grupo = 2 then call symput('med2',importe);
if grupo = 3 then call symput('med3',importe);
if grupo = 4 then call symput('med4',importe);
run;
data aleatorio;
set aleatorio;
if grupo = 1 then dif = importe/&med1.-1;
if grupo = 2 then dif = importe/&med2.-1;
if grupo = 3 then dif = importe/&med3.-1;
if grupo = 4 then dif = importe/&med4.-1;
run;

Estoy de acuerdo en que este código se puede hacer más eficiente pero sigue siendo algo engorroso. Bien, hoy quería plantearos otra forma de hacerlo a través de arrays multidimensionales. Planteo el código, lo ejecutáis y comentamos:

data aleatorio;
array med(4,2) _temporary_;
if _n_ = 1 then do i=1 to 4;
set medias;
med(i,2) = importe;
end;
set aleatorio;
dif = importe/med(grupo,2)-1;
run;

Se trata de recorrer nuestra tabla de dimensiones, en este caso la tabla con las medias y meter su contenido en un array temporal de 2 dimensiones que denomino med, este array tiene 4 filas y 2 columnas, la dimensión de nuestra tabla de dimensiones. Posteriormente leo la tabla de hechos y empleo el campo grupo para seleccionar el elemento del array que deseo. Es un código sencillo de replicar sobre todo si nuestras variables índices (en este caso la variable grupo) son números, en otro caso el código se complica ligeramente pero sigue siendo sencillo de interpretar. Estoy seguro de que este truco SAS puede resultaros útil (sobre todo a algún pésimo jugador de golf). 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

What about newer competition from free, open-source alternatives like R?

El tito Goodnight está más pendiente de IBM y Oracle que de R. Está mayor el hombre, pero sigue siendo un genio y un figura. Nunca ha sido mi jefe (no porque yo no quisiera) y no comparto ni una sola de las opiniones que tiene en la entrevista que le hacen pero hay que reconocer que no se ha equivocado mucho en 40 años porque es una de las fortunas más importantes del mundo. Así que le tendré en cuenta, al fin y al cabo llevo 10 años diciento que el futuro pasa por R y empiezo a cansarme, me estoy haciendo más dinosaurio día a día.