R

Datos LIDAR en R

R

En la reunión del grupo de interés local (GIL) de R de Madrid, Francisco Mauro habló de aplicaciones de R a conjuntos de datos LIDAR.

En efecto, uno quiere estimar la cantidad de madera que hay en un monte. Uno entonces la calcula en unas pequeñas zonas y luego, barriendo el monte con pulsos de láser desde un avión toma medidas (x,y,z) (es decir, longitud, latitud y altura) en una malla fina de puntos. Esa malla permite identificar, por ejemplo, la densidad y altura de los árboles. Correlacionando estas variables proxy con la cantidad de madera, se puede, por ejemplo, estimar por extrapolación la cantidad total de madera que contiene el monte entero.

ggmap: mapas con R

Me mandó Alberto González Paje código para representar información en mapas usando R que hoy he dejado en su mínima expresión para que los lectores de esta bitácora puedan extender para crear sus propios mapas.

Es el siguiente:

library(ggmap)

# ubico mi alma mater
unizar <- geocode('Universidad de Zaragoza, Zaragoza, España')

# obtengo un mapa
map.unizar <- get_map(
    location = as.numeric(unizar),
    color = "color",
    maptype = "roadmap",
    scale = 2,
    zoom = 16)

# lo represento
ggmap(map.unizar)

# le añado puntos
ggmap(map.unizar) + geom_point(
    aes(x = lon, y = lat),
    data = unizar, colour = 'red',
    size = 4)

Creo que es fácil de extender.

Cortar una cadena por un caracter solo cuando no forme parte de una subcadena entrecomillada

R

Algunos usuarios del paquete pxR han avisado de un error de implementación. Según las especificaciones del formato de datos PC-Axis, las líneas de ese tipo de ficheros acaban en punto y coma (y no necesariamente en un salto de línea).

Así que era natural leer los ficheros íntegramente, concatenar sus líneas físicas y luego partirlas usando strsplit para obtener las líneas lógicas.

Sin embargo, ciertos ficheros contienen descripciones (entrecomilladas) que contienen puntos y comas. Y eso produce caos.

Addenda: ¿qué ha pasado en el Ibex durante el último mes?

Abundando en el tema de ayer, ahora, los mismos datos representados con mapas de calor:

Para obtenerlo, a lo que ya teníamos basta añadirle:

library(gplots)
heatmap.2(
    as.matrix(ibex.scaled),
    Rowv=F, Colv=T, key=F, trace="none",
    col=redgreen, xlab="valor", ylab="",
    margins=c(5,10))

¿Qué ha pasado en el Ibex durante el último mes?

Pues esencialmente esto:

Es decir, un grupo numeroso de valores ha bajado de precio mientras que otros dos grupos han tenido una evolución en U y ha recuperado, con creces incluso, el valor que tenían hace un mes.

Y, como siempre, el código:

library(tseries)
library(zoo)
library(XML)
library(reshape)
library(ggplot2)

foo  <- function(simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600 ){
  precios <- get.hist.quote(
    instrument= simbolo, start = final - profundidad,
    end = final, quote=c("AdjClose"),
    provider="yahoo", origin="1970-01-01",
    compression="d", retclass="zoo")
  colnames(precios) <- simbolo
  return(precios)
}

# lista de símbolos del ibex

tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]]
tmp <- as.character(tmp$V1[-(1:6)])
tmp <- gsub("-P", "", tmp)
simbolos <- tmp[tmp != "ABG.MC"]

ibex <- do.call(merge, sapply(simbolos, foo, simplify = F))

ibex.scaled <- scale(ibex)

ibex.df <- data.frame(ibex.scaled, fecha = index(ibex.scaled))
ibex.df <- melt(ibex.df, id.vars = "fecha")
ibex.df <- ibex.df[ order(ibex.df$fecha, ibex.df$variable), ]
ibex.df$cluster <- kmeans(data.frame(t(ibex.scaled)), 4)$cluster

ggplot(ibex.df, aes(x=fecha, y=value, group=variable)) +
        geom_line() + facet_wrap(~cluster)

Descarga de ficheros con R a través de sftp

R

Llevo lo que parece un siglo sin escribir en estas páginas. Y es que, en gran parte, el nuevo curso de R me consume. Y también otros asuntos jugosos y relacionados con R que iré, sin duda, desgranando en futuras, aunque previsiblemente más esporádicas, entradas.

Lo que me ocupa hoy es esto:

fichero <- getURL("sftp://usuario:contraseña@máquina/home/bla/bla/bla/fichero.txt")

¿Qué es? Es la manera de descargar directamente a R un fichero a través del protocolo SFTP (FTP seguro). En la cadena de conexión hay que indicar

¡Reeditamos el curso básico de R!

El año pasado, Juanjo Gibaja y yo organizamos nuestro primer Curso Básico de R. En esta entrada quiero anunciar su inminente reedición: ¡comienza el 11 de febrero!

Las características del curso van a seguir siendo, esencialmente, las mismas:

  • Es gratuito.
  • No da derecho a diplomas o certificados de ningún tipo.
  • No es presencial.
  • Plazas ilimitadas.
  • Está basado en el autoestudio: cada participante tendrá que leer y trabajar por su cuenta.
  • Está supervisado: los organizadores del curso nos encargaremos del programa, de dar soporte de última instancia a las preguntas abiertas por los estudiantes.
  • Es colaborativo: hemos desarrollado una plataforma web para que quienes sigan el curso puedan plantear preguntas y, como parte fundamental del programa, tratar de responder las de sus compañeros.
  • Es genérico. Cada cual quiere aprender R por un motivo distinto: unos, para analizar encuestas; otros, por su interés en la minería de datos; algunos, para analizar series temporales,… El curso está pensado para llevar a cada cual hasta el mismo umbral de su tema de interés de forma que pueda después de él avanzar en el tema por su cuenta. Pero sin hacer especial hincapié en ningún asunto concreto.
  • El contenido estadístico será mínimo (se limitará a algo de estadística descriptiva y poco más).

Los interesados encontrarán más información en este documento.

Tu tasa de paro personal

En el pasado nos hemos ocupado en estas páginas del desempleo. Hoy, día en el que se han anunciado los datos de la EPA del último trimestre de 2012, sale a la luz TTParo.es, un proyecto en el que he colaborado (aunque en el que todo lo que se ve es obra de Kaleidos) y que permite calcular tu tasa de paro personal.

Por ejemplo, en

puedo ver la evolución de la tasa de paro de aquellos que son como yo desde el 2005 y compararla con la general.

Arte con R: tres enlaces

Traigo hoy a mi bitácora tres enlaces sobre la creación de artefactos gráficos con R.

En el primero (¡en japonés!) puede uno aprender a construir cosas como

El segundo reproduce con R la siguiente obra de Bridget Riley:

Y el tercero es una elaboración sobre el anterior que permite generar gráficos tales como

Una aplicación SEO con R

R

Leyendo Bad Data vine a saber que Google deja en los logs de Apache información muy relevante sobre la optimización del sitio. En efecto, cuando alguien encuentra tu página en Google, Apache deja (casi siempre) en los logs una línea similar a

188.77.154.135 - - [30/Dec/2012:09:35:28 +0000] "GET /blog/page/33/?p=... HTTP/1.1" 200 15348 "http://www.google.es/url?sa=t&rct=j&q=breiman%20dos%20culturas%20estadistica&source=web&cd=21&cad=rja&ved=0CDIQFjAAOBQ&url=http%3A%2F%2Fwww.datanalytics.com%2Fblog%2Fpage%2F33%2F%3Fp%3D...&ei=1QrgULj7E6qk0QXRwYHgCQ&usg=AFQjCNHpdZUVD15sC7CdOvUOppdcXAjweQ&sig2=hKh3vCnCrvublGxQXoojyg&bvm=bv.1355534169,d.d2k" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; ca-es) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"

La parte

"http://www.google.es/url?sa=t&rct=j&q=breiman%20dos%20culturas%20estadistica&source=web&cd=21&cad=rja&ved=0CDIQFjAAOBQ&url=http%3A%2F%2Fwww.datanalytics.com%2Fblog%2Fpage%2F33%2F%3Fp%3D...&ei=1QrgULj7E6qk0QXRwYHgCQ&usg=AFQjCNHpdZUVD15sC7CdOvUOppdcXAjweQ&sig2=hKh3vCnCrvublGxQXoojyg&bvm=bv.1355534169,d.d2k"

indica que el usuario buscó en google.es la cadena breiman dos culturas estadistica y la expresión cd=21 significa que mi página era el resultado número 21 según los algoritmos de Google. (Aunque dicha posición puede variar según el idioma del navegador y otras circunstancias que Google usa para personalizar las búsquedas).