Entradas

Mostrando entradas de 2016

Trabajando con datos georreferenciados en R

Imagen
Trabajando con datos georreferenciados en RLa idea de este post es mostrar de qué forma R (e imagino que mcuhos otros lenguajes, como Python o Julia, por ejemplo) pueden ayudar a trabajar con datos georreferenciados. No vamos a hacer un tutorial del tema porque hay muchos y muy buenos (por ejemplo, acá, acá o acá). Pero sí queríamos ilustrar la utilidad de R para estos menesteres a partir de un ejemplo bien práctico.La semana pasada tuve que realizar las siguientes tareas (a partir de una muestra de radios censales proporcionada por un muestrista):1) seleccionar todos los radios adyacentes2) calcular una probabilidad de selección de los radios adyacentes en función de la densidad poblacional3) ordenar aleatoriamente los radios en función de dicha probabilidad 4) plotear cada conjunto de radios colindantes con el orden como etiquetaSi esto hubiera que hacerlo "manualmente" con algún sistema de GIS podría llevar tiempo -Hay excepciones: QGIS permite trabajar con scripts escrit…

El ruido de las capitales (vol. 1)

Imagen
El ruido de las capitales (vol. 1)Bueno, en este caso de la capital. ¿Cuál es la hora más insoportablemente ruidosa de la Ciudad de Buenos Aires? ¿En qué momento se hace intolerable? Pregunta que podría ser abstracta si no fuera porque se han liberado algunos datos al respecto.Bajamos de "Buenos Aires Data" el dataset que se llama "Contaminación sonora". Como el único año con todos los meses era el 2012 ese es el año que usamos.Primero generamos el dataset y vamos limpiando y generando los campos de fecha:library(lubridate)library(ggplot2)setwd("E:/PEN2/Bases de datos varias/Contaminacion Sonora CABA/Datos")t<-read.csv("TMI.csv")colnames(t)<-c("tmi","barrio","dir")data_t<-read.csv(dir()[2],sep=";")data_t$fecha<-as.character(data_t$fecha)data_t$fecha1<-strptime(data_t$fecha,format="%Y-%m-%d %H:%M:%S")data_t$year<-NAdata_t$year<-data_t$fecha1$year+1900data_t$month<-data_t$fe…

Un ejemplo simple de "ensamble learning" con modelos de regresión (Post I de varios...)

Ensamblando modelosLa idea de este post es introducir algunas nociones de ensamble de modelos y presentar un pequeño código para implementar uno para un modelo de regresión a título de ilustración. El post pretende ordenar (básicamente para mí mismo) algunas ideas al respecto e ilustrarlas con un código y un modelo muy simples.En líneas generales los ensambles de modelos buscan aumentar la capacidad predictiva a partir de la generación de muchos "modelitos" diferentes sobre datasets diferentes. Obviamente, lo ideal sería tener muchas muestras independientes de la misma población para poder estimar modelos diferentes y promediarlos de alguna manera (de esta manera, se reduciría/suavizaría la variancia y se mantendría el sesgo relativamente constante). Como consecuencia, deberían mejorar las predicciones.Ahora bien, como esto no suele ser posible (tenemos UNA sola muestra de la población) lo que puede utilizarse con diversas técnicas de remuestreo (por ejemplo, bootstrap) de u…

Tuneando funciones en R (II)

Tuneando funciones en R (II)Hace unos días habíamos posteado (acá) un "tuneo" de una función de R. Básicamente, tomar una función de otro paquete (survey) que realizaba muestreo estratificado y adaptarla a unos objetivos muy específicos (poder hacer muestreo con reposición y poder definir las proporciones de casos a muestrear en cada estrato) Acá está la función original:#### FUNCION PARA BOOSTRAPEO POR ESTRATOS ##### strata = Vector que identifica los estratos# counts = Cantidad de casos en cada uno de los estratos# rep = Argumento lógico: TRUE si el muestreo es con reposición; FALSE si no# prop = Argumento numérico: indica la proporción de casos que se muestrean al interior del estratostratify<-function(strata,counts,rep=FALSE,prop=1){strata<-as.character(strata)n<-length(strata)rval<-integer(sum(counts))allrows<-1:nj<-0for(iin1:length(counts)){c<-counts[i]thisstrat<-names(counts)[i]rows<-allrows[strata==thisstrat]rval[j+(1:round(c*prop,0))]<…

Tuneando funciones en R

Tuneando funciones en R Hace un rato necesitaba poder remuestrear filas de un data frame para testear un modelo (vendrá un próximo post al respecto, esperemos...). El tema es que necesitaba que el muestreo cumpliera tres condiciones:
respetara los tamaños de los estratos (el muestreo original había sido estratificado) que al interior de cada estrato se pudiera tener la opción de samplear con resposición que se pudieran elegir la proporción del tamaño de remuestra en cada uno de los estratos Estuve un rato pensando cómo construir una función que lo hiciera... y en ese interín se me ocurrió que quizás sería mejor usar una función que ya hiciera algo parecido y evaluar si era posible modificarla un poco para que se adaptara a esos tres requisitos. En un búsqueda de Google me acordé del paquete "survey" para R (gran paquete para trabajar con muestras complejas, tiene algoritmos de raking, post-estratificación, calibración, etc.; acá, hay un tutorial rápido). El paquete tiene un…