Ejemplo de web scraping con R. La formación de los diputados del Congreso

No sabía si realizar esta entrada sobre web scraping con R o con Python. He optado por la primera opción porque, en un principio, era una entrada para ilustrar un ejemplo de web scraping y, al final, se me están ocurriendo muchas ideas sobre el análisis de la web del Congreso de los Diputados y he preferido hacerla con R porque tengo una mayor soltura para hacer distintos análisis. Quería empezar por estudiar la formación que tienen nuestros 350 diputados; para ello se me ocurrió descargarme las líneas que tienen en su ficha de diputado y crear un data.frame con los datos personales referentes a su formación. Si entráis en la ficha de cualquier diputado (por ejemplo, ésta) veréis que les han dejado un pequeño texto donde describen su hoja de vida. La verdad es que cada uno ha escrito lo que le ha parecido, pero algón patrón se puede encontrar. Para ilustrar el ejemplo, he preferido usar la librería rvest porque me ha parecido una sintaxis más sencilla. Yo no soy un buen programador, incluso soy un poco desastre, hasta guarrete programando, y con rvest creo que el código es bastante claro. ...

25 de enero de 2017 · rvaquerizo

Función de R para geolocalizar IP

El proyecto freegeoip tiene su propia función en R para poder crear un data.frame con la geolocalización de las IPs. La función la podéis encontrar en este enlace y tiene un funcionamiento muy sencillo: library(rjson) localizacion1 <- freegeoip('23.89.204.150') localizacion2 <- freegeoip(c('106.78.232.100', '174.6.153.88')) Resulta que no recordaba su existencia y ya tenía algo parecido en XML… pero siempre hay alguien que lo ha hecho antes con R. Saludos.

28 de diciembre de 2016 · rvaquerizo

Aprende rstats de forma presencial por muy poco

Ha llegado al Grupo de Usuarios de R de Madrid el siguiente curso de R: Os anuncio el siguiente curso de análisis estadístico de datos en R. I Jornadas de Análisis Estadísticos de Datos en R: Un enfoque práctico. A celebrarse: Del 14 al 17 de noviembre de 2016. En Fuenlabrada (Madrid). De 16:00 a 19:00. Plazo de preinscripción: 20 de octubre al 4 de noviembre. Precio matrícula: 35 €. Existe la posibilidad de beca para conseguir matrículas de 10 €. ...

31 de octubre de 2016 · rvaquerizo

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

Cuando clasificamos datos con SVM (Support Vector Machines), es necesario fijar un margen de separación entre observaciones. Si no fijamos este margen adecuadamente, nuestro modelo podría estar sobrestimando (overfitting), lo que significa que funcionaría muy bien con los datos de entrenamiento pero fallaría con datos nuevos. El coste C y el parámetro gamma son los dos elementos fundamentales 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 cada observación individual y el SVM sería más estricto. Si tuviéramos un modelo que clasificara observaciones en el plano formando una letra “O”, podemos ver cómo se modifica la estimación al variar el coste: ...

13 de octubre de 2016 · rvaquerizo

Mapas municipales de Argentina con R

En respuesta a un lector del blog he elaborado de forma rápida una nueva entrada que nos permite realizar mapas por municipalidades para Argentina. Ya hay entradas similares, pero está bien que este mapa tenga su propia entrada para facilitar las búsquedas. El ejemplo es rápido y es probable que el código tenga algún fallo o error; si es así, lo comentáis y lo solvento. Como es habitual, nos dirigimos a la web del proyecto Global Administrative Areas (http://www.gadm.org/country) y nos descargamos el mapa de Argentina por municipios, que es el nivel 2. Una vez descargado, pocas líneas de R: ...

5 de septiembre de 2016 · rvaquerizo

El brexit con rstats o como mover spatial data con R

Animación con R para ilustrar el uso de la función elide del paquete maptools, con un código “insultantemente” sencillo: library(maptools) library(animation) # Mapa descargado de: # http://www.arcgis.com/home/item.html?id=6d611f8d87d54227b494d4c3becef6a0 ub_shp <- "/Users/raulvaquerizo/Desktop/R/mapas/world/MyEurope.shp" europa <- readShapeSpatial(ub_shp) plot(europa) europa_sin_uk <- europa[europa$FIPS_CNTRY != "UK", ] uk <- europa[europa$FIPS_CNTRY == "UK", ] saveGIF({ for (i in seq(0, 5, by = 0.1)) { plot(europa_sin_uk) uk_desplazado <- elide(uk, shift = c(-i, 1)) plot(uk_desplazado, add = TRUE) } }, interval = 0.3, movie.name = "/Users/raulvaquerizo/Desktop/R/animaciones/brexit/bye_england.gif") Nos descargamos el mapa del link que os pongo y poco más que leer el shape con readShapeSpatial y crear dos objetos: uno con Europa sin la isla y otro con la isla. elide nos permite desplazar un objeto de spatial data dentro del gráfico; lo metemos en un bucle y bye England. Ahora, el que me mueva las Canarias en un shapefile con más de 2 líneas de código me paga una cervecita. Saludos.

10 de agosto de 2016 · rvaquerizo

El paquete de R weatherData para la obtención de datos meteorológicos en España

Tenía pendiente un proyecto con modelos de Lee-Carter y el paquete weatherData de R (¡toma!), pero como no lo voy a llevar a cabo nunca, os traigo a estas líneas un paquete más que interesante de R que nos permite obtener datos de las estaciones meteorológicas de los aeropuertos del mundo (https://www.wunderground.com/history/airport/) y encima te lo pone como un objeto de R: qué más podemos pedir. En GitHub tenéis una completa batería de ejemplos de uso. En el caso de que necesitemos descargar información meteorológica de España tenemos que irnos a http://weather.rap.ucar.edu/surface/stations.txt, donde están listados todos los aeropuertos que recoge este sistema de información; buscamos SPAIN y nos interesa el ICAO (International Civil Aviation Organization), el código del aeropuerto, vamos. Con estas premisas, si quiero recoger las temperaturas de 2015 del aeropuerto de Albacete: ...

3 de agosto de 2016 · rvaquerizo

Truco SAS. Cómo leer PC Axis con SAS

Estoy leyendo información del INE que tiene que terminar cargándose en SAS y estos datos están en formato PC Axis. Existen macros en SAS para generar datasets a partir de PC Axis, pero la verdad es que no he llegado a entender muy bien cómo funcionan y, tras varios errores, la mejor opción que he encontrado es emplear R y el paquete pxR que han creado algunos miembros de la Comunidad de R-Hispano. Cómo realizo esta tarea es más que sencillo: ...

22 de junio de 2016 · rvaquerizo

Cartografía digitalizada de España por sección censal

Por si no lo sabéis, tenemos disponible en la web del INE un mapa de España por sección censal que podéis descargaros y realizar mapas con R de una forma que es más que conocida para los lectores del blog: # mapas con secciones censales library(maptools) ub_shp <- "/Users/raulvaquerizo/Desktop/R/mapas/cartografia_censo2011_nacional/SECC_CPV_E_20111101_01_R_INE.shp" seccion_censal <- readShapeSpatial(ub_shp) barcelona <- seccion_censal[seccion_censal$NMUN == "Barcelona", ] plot(barcelona) A ver si me animo y preparo una BBDD para que podáis acceder desde QGIS a una serie de mapas como este, además de los mapas por código postal. Aunque necesitaría un poco de ayuda técnica (ahí lo dejo). Saludos.

15 de junio de 2016 · rvaquerizo

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 cómo podemos obtener la adyacencia 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: ...

29 de mayo de 2016 · rvaquerizo