Archivos de la categoría Consultoría

Como obtener los centroides de municipios con SAS. Mapas con SGPLOT

mapa_municipios_sas2

Un amigo y lector del blog me ha pedido un mapa de códigos postales donde poder identificar los centroides para andar calculando distancias a otros puntos. Yo no tengo un mapa de España por códigos postales para poder usar con fines comerciales, pero si cuento en el blog como poder obtenerlo bajo ciertas condiciones. Lo que si puedo contar a Juan es como hacer un mapa por municipios con SAS, aunque ya he hablado de ello hay ciertos aspectos que pueden ser interesantes. y todo empieza donde siempre http://www.gadm.org/country la web donde tenemos los mapas "libres" por países, seleccionáis Spain y el formato shapefile una vez descargados los mapas en vuestros equipos empezamos con el trabajo en SAS:

proc mapimport datafile="\directorio\mapa\ESP_adm_shp.shp"
out = work.espania;
run;
proc contents;quit;

mapa_municipios_sas1

El procedimiento MAPIMPORT ha creado un conjunto de datos SAS donde tenemos caracterizados todos los polígonos que componen el shapefile. Entonces si tenemos que calcular el centroide de un municipio con SAS sugiero realizar un PROC SQL de la siguiente forma Sigue leyendo Como obtener los centroides de municipios con SAS. Mapas con SGPLOT

El parámetro gamma, el coste, la complejidad de un SVM

letra_o_svm_r

Cuando clasificamos datos con SVM es necesario fijar un margen de separación entre observaciones, si no fijamos este margen nuestro modelo sería tan bueno tan bueno que sólo serviría para esos datos, estaría sobrestimando y eso es malo. El coste C y el gamma son los dos parámetros con los que contamos en los SVM. El parámetro C es el peso que le

damos a cada observación a la hora de clasificar un mayor coste implicaría un mayor peso de una observación y el SVM sería más estricto (este link aclara mejor las cosas). Si tuvieramos un modelo que clasificara observaciones en el plano como una letra O podemos ver como se modifica la estimación en esta secuencia en la que se ha modificado el parámetro C:

r_svm_2

Sigue leyendo El parámetro gamma, el coste, la complejidad de un SVM

Trucos Excel. Mapa de Colombia por departamentos

mapa-colombia-excel

El mapa Excel de Colombia por departamentos era tarea pendiente, el modo en el que se ha hecho es el habitual y por ello lo primero que hay que hacer es citar al usuario de Wikipedia  Shadowxfox - Trabajo propio, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=44930910 es importante comentar que seleccioné este por el tamaño, en Excel se ve bien poniendo el zoom al 35% (¡!) y es que cada vez veo menos. El mapa puede representar 5 grupos  y estos grupos se pondrán en la columna C donde podemos cruzar por nombre. Comentar que falta el departamento de las islas de San Andrés y Providencia porque no sabía muy bien como ubicarlas y como representarlas en el mapa. 

Así pues el funcionamiento no puede ser más sencillo. Podemos pintar hasta 5 grupos, los colores de estos 5 grupos los podemos seleccionar en las correspondientes celdas de la columna H. Los grupos que clasifican los departamentos los pondremos en la columna C y con el botón pintar se realiza el mapa. Un esquema de los elementos del Excel Sigue leyendo Trucos Excel. Mapa de Colombia por departamentos

Como salva la linealidad una red neuronal

En los últimos tiempos estoy empeñado en usar redes neuronales para la tarificación en seguros. Históricamente la tarificación de seguros, el pricing, se ha basado en modelos lineales generalizados GLM (sus siglas en inglés) porque su estructura es sencilla, se interpreta bien y no olvidemos que el sector asegurador está regulado y es necesario elaborar una nota detallada de cómo se articula una tarifa y el GLM nos ofrece una estructura multiplicativa que se comprende y con la que los reguladores se sienten muy cómodos. Sin embargo, una red neuronal es el paradigma de "caja negra", ¿cómo podemos saber que hace esa caja negra? Estoy trabajando en ello, la descripción del funcionamiento de las ponderaciones de una red está muy arriba en la lista de mis tareas pendientes.

Pero esta entrada del blog va encaminada a describir de forma como las neuronas de una red neuronal salvan la linealidad y como un mayor número de neuronas son capaces de ajustar mejor a una estructura compleja y si llegamos a describir como funciona esa estructura compleja podremos usar estas técnicas para realizar tarifas de riesgo. 
Como siempre, para ilustrar el funcionamiento se emplea un ejemplo muy sencillo:

#Variable independiente
indep = runif(500,100,3000)
#Función para crear la variable dependiente
foo = function(x){ mean(x)*(1-sin(-0.006042*x)+sqrt(x/100))
}
dep = sapply(indep,foo)

dep=dep+(runif(length(dep),-500,500))

dep = as.matrix(dep)
indep = as.matrix(indep)
plot(indep,dep)

redes_neuronales_tarificacion_seguros1

Creamos unos datos aleatorios que serán en una matriz nuestros datos inependientes y como variable dependiente una variable que dibuja una nube de puntos que simula una curva de observaciones. Si realizamos un modelo lineal se ajustará una recta sobre los datos, una red neuronal mejorará los resultados. Y para demostrarlo vamos a emplear el paquete de R monmlp que realiza un perceptrón multicapa Sigue leyendo Como salva la linealidad una red neuronal

Nuevo y muy mejorado mapa de España por provincias con Excel

Nuevo_mapa_españa1

Hacía tiempo que no publicaba un mapa de España de Excel, aquí tenéis una nueva versión que mejora mucho  a las anteriores. La primera mejora y la que más destaca es que nos permite incluir datos, además ponemos los nombres de las provincias para todos aquellos que dominen poco la geografía española. Podemos pintar hasta 4 datos distintos que se pueden seleccionar en el desplegable que tenéis arriba. Ahora los colores van en dos escalas que podéis seleccionar vosotros:

Nuevo_mapa_españa_excel2

A la hora de meter los datos a nivel provincial es necesario ir a la hoja datos_mapa en ella tenéis los 4 datos que podéis pintar, estos datos irán en un ranking que  a la postre asigna colores a los shapes que componen el conjunto de imágenes que hace el mapa de Excel Sigue leyendo Nuevo y muy mejorado mapa de España por provincias con Excel

Como hacer un mapa de España por códigos postales con QGIS

Tenía pendiente hablar de QGIS y de la creación de un mapa de España por códigos postales gratuito y libre. Pero no sé como enfocar esta entrada porque el mapa, siendo gratuito y de difusión libre, no se puede usar con fines comerciales y me temo que un gran número de lectores del blog tienen tales fines. Así que he pensado en hablaros de CartoCiudad y de los mapas que contiene este interesante proyecto. En CartoCiudad colaboran algunos ministerios y entidades estatales, entre ellas Correos y podéis descargar provincia a provincia los archivos que componen el proyecto. Emplear los mapas de CartoCiudad implica aceptar las siguientes condiciones:

1. La licencia de uso solicitada ampara exclusivamente el uso no comercial de la información geográfica, entendiendo como tal el uso que no conlleva aprovechamiento económico directo, indirecto o diferido. Cualquier uso distinto al descrito, incluida la publicación, requerirá la suscripción de una autorización o contrato específico con el Centro Nacional de Información Geográfica (CNIG), devengando, en su caso, la contraprestación económica correspondiente. En caso de duda deberá establecerse contacto con el CNIG (consulta@cnig.es).

2. El usuario titular de la licencia se compromete a citar al Instituto Geográfico Nacional (IGN) mediante la fórmula: «© Instituto Geográfico Nacional de España» como origen y propietario de la información geográfica suministrada ante cualquier exhibición o difusión de ella, o de parte de ella o de cualquier producto que, aún siendo de forma parcial, la incorpore o derive de ella.

- Si se tratara de Ortofoto o MDT5 (PNOA®), la mención se sustituirá por: «PNOA cedido por © Instituto Geográfico Nacional de España».
- Tratándose de datos LiDAR, la mención se sustituirá por: «LiDAR-PNOA cedido por © Instituto Geográfico Nacional de España».
- En caso de datos SIOSE®, la mención se sustituirá por: «SIOSE cedido por © Instituto Geográfico Nacional de España».
- Tratándose de CartoCiudad®, la mención se sustituirá por: «CartoCiudad cedido por © Instituto Geográfico Nacional de España».

3. En caso de CartoCiudad®, los nuevos productos o servicios que puedan generarse basados en CartoCiudad®, no incluirán ninguna referencia a la información catastral, ni suplantarán explícitamente o mediante productos o servicios que puedan dar lugar a confusión a los ofrecidos por la Dirección General del Catastro, del Ministerio de Economía y Hacienda, o a los ofrecidos por la Sociedad Estatal Correos y Telégrafos S.A., a quienes corresponde en exclusiva la competencia para la difusión de la información catastral y postal respectivamente, así como el ejercicio de los derechos de propiedad intelectual inherentes a la información y a las bases de datos catastrales y postales.

4. La cesión de la información digital licenciada, de otra que la incorpore o de cualquier producto derivado de ella, a otra persona física o jurídica, requerirá la concesión por el CNIG de nueva licencia al nuevo usuario, o que el cedente comunique expresamente por escrito al nuevo usuario las condiciones originales de licenciamiento establecidas por el CNIG, y que el nuevo usuario acepte expresamente dichas condiciones. Esta comunicación puede llevarse a término mediante el documento estándar descargable desde www.ign.es, o bien a través de un documento definido por el cedente y aprobado previamente por el CNIG.

5. Esta licencia de uso no comercial, no supone la concesión de ningún tipo de exclusividad, aval o patrocinio, ni responsabilidad alguna del IGN sobre el uso derivado de los datos geográficos.

Si os habéis leído la licencia de uso entendréis porque tengo algunas dudas sobre la conveniencia de escribir esta entrada. Así que se me ha ocurrido que, os voy a decir como podéis hacer el mapa de códigos postales, os voy a advertir que el mapa que hagáis no puede tener fines comerciales y que si queréis un mapa comercial hay empresas que os pueden vender estos mapas. Yo en mi puesto de trabajo tengo uno de estos mapas comerciales y no ha sido necesario hacer todo lo que a continuación os voy a relatar. Sigue leyendo Como hacer un mapa de España por códigos postales con QGIS

Mapa Excel de Europa

mapa_excel_europa1

Un lector me había pedido disponer en Excel de un mapa de Europa y dicho y hecho. Además en este Excel os muestro como hacer paletas de colores más o menos atractivas y como poder usarlas indistintamente con el mapa. Este Excel además contiene algunas líneas de Visual Basic que considero interesantes y que veremos después. Los shape están sacados de este link, pero se retoca completamente el código Visual Basic para hacerlo (a mi entender) más sencillo. El mapa se controla desde esta zona del Excel:

mapa_excel_europa2

El Dato es lo que vamos a pintar. Evidentemente tenéis que cruzar los datos con los nombres de los 37 países que se pintan en el mapa. Disponéis del nombre en inglés y del código de país para poder hacer este cruce previo. Pero quedaros con lo siguiente, lo único que podéis modificar es el nombre en inglés, por si preferís hacer vuestro VLookp o BUSCARV Sigue leyendo Mapa Excel de Europa

Mapa del mundo en Excel

Un mapa del mundo en Excel preparado para poner datos de la Base de Datos de la UNESCO. Está sacado de una web, cuando encuentre el link os lo pongo porque lo he perdido. Además al César lo que es del César. Sobre el fichero Excel que me descargué realicé diversas modificaciones para mejorar los resultados y darle simplicidad. Hay una hoja de datos que es donde debéis pegar los datos (preferiblemente) por otro lado está la hoja Mapa que contiene el mapa sobre el que podéis realizar las modificaciones. En esta hoja están los datos sobre los que se hace la jerarquía. La gama de colores que utiliza este mapa es de gris a rojo. Esto podéis cambiarlo vosotros mismos, en esta web se han dado pistas sobre cómo hacerlo.  No es correcto darlo todo hecho pero jugando con formatos condicionales y con esas pistas podéis obtener un mapa espectacular.

Aquí podéis descargar el mapa.

Para actualizar los colores tenéis que ejecutar esta simple macro:

Sub cambia_color()
Dim pais As String
Dim i As Integer
Dim color As Long
Dim myShape As Shape
For i = 2 To 190
pais = Cells(i, 26)
color = Cells(i, 30)
Set myShape = Sheets(1).Shapes(pais)
myShape.Fill.ForeColor.RGB = color
Next i
End Sub

En cuanto a los datos que se representan en el mapa. Tasa de mortalidad infantil en el mundo. Los países más oscuros o bien no disponen de datos o bien no han cruzado con los datos de la UNESCO. Se podrá mejorar el resultado. Algo más subjetivo, no sé como consentimos este rojo predominante en África. Será que sin ese rojo yo no podría escribir cosas como esta… Saludos.

Analisis cluster con SAS. La importancia de las semillas en las k-medias

El PROC FASTCLUS en SAS nos permite realizar análisis de agrupamiento dirigido mediante el algoritmo de las k-medias. Este algoritmo tiene algunos problemas pero nos puede servir para agrupar de forma multivariante observaciones. Es rápido, sencillo de explicar y con algunas lagunas no funciona mal. Como aproximación a nuestras segmentaciones puede ser muy práctico. Hoy se va a utilizar para identificar a los clientes más complicados de segmentar, a aquellas observaciones que quedan en las zonas grises. (http://www.datanalytics.com/blog/2011/08/03/clustering-iii-sobresimplificacion/)
Estas zonas grises en muchos casos son más importantes que la segmentación en sí. Si estamos con un problema de taxonomía (clasificar especies) puede ser menos importante, pero si clasificamos inversiones, clientes,… ¿qué pasa con aquellos que no sabemos ubicar? Escribimos segmentar en un buscador y tenemos esta imagen:

¡Qué sencillo es segmentar! Cada muñeco queda en su pelota, Sigue leyendo Analisis cluster con SAS. La importancia de las semillas en las k-medias

Trucos SAS. Medir la importancia de las variables en nuestro modelo de regresión logística

Hoy quería proponeros una forma poco ortodoxa de medir la importancia de las variables en un modelo de regresión logística con SAS. La cuestión es: dado un modelo de regresión logística crear un ranking con las variables más importantes dentro del modelo. Para esta tarea recomiendo el uso de random forest, pero puede ser imposible disponer de un software que realice este tipo de modelos. Imaginemos un caso concreto, disponemos de SAS STAT y nos da reparo trabajar con R. Para este caso podemos emplear el siguiente truco. El AIC (criterio de información de Akaike) es un estadístico que relaciona el cociente de la verosimilitud con el número de parámetros del modelo que ajustamos. Cuanto menor sea este cociente mejor será nuestro modelo. Si eliminamos una variable del modelo ¿cuánto empeora este modelo? Esa será la filosofía que emplearemos para analizar la importancia de las variables presentes en nuestro modelo. En la línea habitual hacemos un ejemplo para que podáis copiar y pegar en vuestro SAS:

Vamos a crear un dataset preparado para hacer una regresión logística perfecta donde en un 10% de los casos sucede un evento:

*REGRESION LOGISTICA PERFECTA;
data logistica;
do i=1 to 10000;
  normal1=rannor(8);
  normal2=rannor(45);
  normal3=rannor(32);
  normal4=rannor(7);
  normal5=rannor(98);
  unif1=ranuni(2);
  unif2=ranuni(21);
  unif3=ranuni(22);
  unif4=ranuni(23);
  unif5=ranuni(24);
  prob=1/(1+exp(-(-3.16+0.1*normal1-0.2*normal2+0.3*normal3-0.4*normal4+0.5*normal5+
	   0.1*unif1+0.2*unif2+0.3*unif3+0.4*unif4+0.5*unif5)));
  sucede=ranbin(8,1,prob);
  *TRAMIFICAMOS LAS VARIABLES;
  normal1=round(rannor(8),0.1);
  normal2=round(rannor(45),0.2);
  normal3=round(rannor(32),0.3);
  normal4=round(rannor(7),0.4);
  normal5=round(rannor(98),0.5);
  unif1=round(ranuni(2),0.1);
  unif2=round(ranuni(21),0.2);
  unif3=round(ranuni(22),0.3);
  unif4=round(ranuni(23),0.4);
  unif5=round(ranuni(24),0.5);
  output;
end;
drop i;
run;

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

Incialmente necesitamos las variables presentes en el modelo y el ajuste inicial, también un conjunto de datos SAS con los nombres de las variables. Esto es un poco chapuza, pero si seguís el blog podéis hacer este código mucho más elegante [no os lo voy a dar todo hecho] Sigue leyendo Trucos SAS. Medir la importancia de las variables en nuestro modelo de regresión logística