Monográficos

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.

Qué pasa si uso una regresión de poisson en vez de una regresión logística

Para un tema de mi trabajo voy a utilizar una regresión de poisson en vez de una regresión logística, el evento es si o no y no tiene nada que ver el tiempo, ni se puede contabilizar como un número, pero a efectos prácticos es mejor para mi usar una regresión de poisson. Entonces, ¿qué pasa si hago una poisson en vez de binomial? Como siempre si mi n es muy grande hay relación entre ambas distribuciones. Pero yo quiero saber si me puede clasificar mis registros igual una regresión de poisson y una binomial y se me ha ocurrido hacer un ejercicio teórico muy simple.

Adyacencia de polígonos con el paquete spdep de R

Cuando trabajamos con zonificación o geolocalización la adyacencia entre los elementos del estudio es relevante. En este caso quería trabajar con la adyacencia entre los polígonos que componen un archivo de datos espaciales shapefile y para entender mejor como podemos obtener la adyancecia entre polígonos creo que lo mejor es hacer un ejemplo con un mapa, en este caso un mapa de municipios de Barcelona. El primer paso es disponer del objeto con los datos espaciales, de esto ya he escrito mucho en el blog y por eso no me detengo mucho:

Resolución del juego de modelos con R

Hace mucho planteé un juego de identificación de modelos con R y ya se me había olvidado daros la solución. Pensando en el Grupo de Usuarios de R y en hacer algo parecido en una presentación recordé que había que solucionar el ejercicio. Lo primero es la creación de los datos, se me ocurrió una función sencilla y una nube de puntos alrededor de ella:

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

dep=dep+(runif(length(dep),-100,100))
datos = data.frame(cbind(indep,dep))
plot(datos)

juego_modelos1

Truco Excel. Abrir múltiples libros de Excel en distintas hojas de un nuevo libro

Hace tiempo escribí sobre el método de Excel GetOpenFilename para abrir archivos desde Excel a través del explorador de archivos ahora le damos una nueva vuelta de tuerca a aquella entrada y de forma simple podemos abrir múltiples libros de Excel que además se añadirán de forma sucesiva en un nuevo libro. En este link podéis descargaros el archivo y como veréis no tiene nada. Un botón Abrir Excel realiza el proceso, se abre el explorador de Windows y podéis seleccionar múltiples archivos Excel que se almacenan en un array. La macro a ejecutar es la siguiente:

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

Editado 2022:

Francisco Goerlich ha elaborado una versión que de nuevo puede obtener los datos de Cartociudad. Volveremos sobre el tema y dejaremos una capa que pueda ser reutilizable.

https://www.uv.es/goerlich/Ivie/CodPost

Editado 2019:

Como podéis leer más abajo Correos ha impedido al proyecto Cartociudad incluir los mapas de España por Código Postal, ahora es necesario comprarlos. Sin embargo, hay versiones antiguas como las que se descargó en su día Íñigo Flores. Con estas descargas yo he elaborado un mapa de España por códigos postales:

TwitteR con R. El hashtag #rstats

El objetivo de la entrada es empezar a analizar tweets con R y que mejor comienzo que usar el hashtag#rstats para ver usuarios que más lo utilizan. [no me gusta conjugar el verbo retwitear] El primer paso es crear una app con Twitter, para ello nos dirigimos a https://apps.twitter.com/ y creamos una aplicación. Crearla es muy sencillo, sólo necesitamos una descripción y un nombre. La aplicación será la que permitirá a R interaccionar con Twitter mediante OAuth y para realizar esta interacción entre la aplicación y nuestra sesión de R es imprescindible:

Creacion de ranking con R

Captura de pantalla 2015-12-20 a las 18.23.04

Hasta la fecha si necesitaba crear un ranking o un orden con R realizaba la tarea del siguiente modo:

nombres <-c(«grupo_1″,»grupo_2»)
grupo <-sample( nombres, 10, replace=TRUE, prob=c( 0.5, 0.5) )
dataset <- data.frame(grupo)
dataset$importes <- runif(10,100,30000)

#Creación del ranking de las variables agrupadas
dataset ranking = ave(datasetimportes,dataset$grupo,
FUN= function(x) rank(x, ties.method = «first»))

Es una agrupación de factores a la que asignamos el orden con rank, con ties.method=»first» esta agrupación se lleva a cabo desde el primer nivel del factor. El resultado se puede comprobar haciendo:

Mapa de Argentina con R

Un lector necesita realizar un mapa de Argentina con R. El primer paso es descargar el mapa en formato R de la página web de siempre: http://www.gadm.org/country seleccionamos Argentina y el formato en R. Podéis descargar en otros formatos y trabajar con R, pero eso lo contaré otro día. Para ilustrar el ejemplo me he descargado el mapa de nivel 2, es decir, a nivel de Estado argentino. Una vez descargado el mapa empleamos el código de siempre:

Trucos R. El paquete classInt para clasificar variables continuas

El paquete classInt de R últimamente está muy presente en mis programas y me gustaría dedicarle unas líneas para que podáis ver algunas de sus posibilidades a la hora de clasificar variables continuas, además estas posibilidades unidas con RColorBrewer nos permiten crear gráficos muy atractivos. Instalamos y clasificamos un vector de ejemplo:

aleatorio <- abs(rnorm(100,50,30))
summary(aleatorio)
grupos <- 4
clases <- classIntervals(aleatorio, grupos, style="quantile")
clases

style: quantile
one of 156,849 possible partitions of this variable into 4 classes
[1.225299,29.19317) [29.19317,51.55524) [51.55524,72.06471) [72.06471,118.6466]
25                 25                 25                 25

Partimos un vector aleatorio en 4 clases en función de sus cuantiles y creamos un lista clases que contiene nuestra tabla y entre sus atributos destaca brks que indica los puntos de corte, en el caso de los cuantiles tenemos:

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:

Mapas municipales de España en R, con la ayuda de Excel

municipios extremadura R 1

El escribir sobre el BDT de Madrid me ha hecho recordar mi trabajo con statial data de R. Los mapas de spatial data los podemos obtener de forma gratuita de http://www.gadm.org/country y en este caso vamos a descargarnos para España un SpatialPolygonsDataFrame específico para R de nivel 4 que está a nivel municipal (repito nivel todas las veces necesarias), el archivo que os debéis descargar se llamará ESP_adm4.RData. Si buscáis un poco en google encontraréis documentación acerca de este tipo de archivos de R y veréis que se pueden hacer maravillas. En este caso quiero hacer un ejemplo lo más sencillo posible, muy artesanal y casero. Con un poco de imaginación podréis complicarlo o incluso hacer una herramienta en Excel que hiciera mapas con R.

Truco R. Añadir una marca de agua a nuestro gráfico con ggplot2

Un breve truco que tenía en la nevera. Añadir marcas de agua a los gráficos de R realizados con ggplot2. Quería dedicar una serie de monográficos a las marcas de agua y al final nunca acabé. Para ilustrar el ejemplo vamos a graficar la serie de visitas a esta web que nos ha dado Google Analytics:

# Objeto con las visitas
visitas=c(213,376, 398, 481,416, 505, 771, 883,686, 712 ,
883,993,1234 , 1528 ,1965 ,1676 ,1037 , 1487 ,1871 ,2725 ,2455 ,2856 ,
2868,2809 ,3326 ,4284 ,4599 ,3863 ,3778 ,5090 ,5510 ,5911 ,4460 ,5495 ,5290 ,
6407,5619 ,6494 ,5854 ,4940 , 4735 ,6049 ,6839 ,8695 ,7112 ,9207 ,8991 ,
10909 , 9647 , 10943 , 9819 , 8982 ,
8597,10004,12550,12025, 9108,10664, 9563,9751 ,11402 ,11875,10395,
10078,8706,10893, 13197,12868 ,9857 ,12119 , 13421 ,14411, 12820 , 14443 , 12713 ,
13869,11740,14887,17021,16827)
serie <- ts(visitas, start=c(2008, 4), end=c(2014, 11), frequency=12)

Hemos creado un objeto serie temporal del tipo ts y aprovecho esta entrada para contaros como transformar un objeto ts en un data frame. Recordamos que ggplot2 no puede graficar objetos ts (por lo menos hasta donde yo sé). Para la transformación del objeto emplearemos la función index del paquete zoo y mi querida función melt de reshape2: