El cincuenta en raya (y el tres en raya)

Supongo que todos conocéis el tres en raya. El cincuenta en (casi) raya, sin embargo, es esto:

cincuenta_en_raya

Hay dos variables, (pluviosidad y ratio hombres/mujeres) y los cincuenta punticos casi en raya corresponden a los estados de EE.UU.

¿Asombrosa correlación? No tanto.

Aquí se discute cómo, en realidad, por su cercanía sociocultural y climática cada uno de los estados del gráfico son manifestaciones de tres grupos de ellos que, estos sí, esta? en raya (¿casualmente?).

El impacto causal del óbito del Sr. Botín en la cotización bursátil del benemérito Banco de Santander

R

El Sr. Botín, presidente que fue del Banco de Santander, falleció el 2014-09-10. Cabe preguntarse por el impacto causal à la Google de no continuidad de su gestión a cargo de dicha institución.

Comienzo pues.

Primero los datos:

library(tseries)
library(CausalImpact)

santander <- get.hist.quote(instrument="san.mc",
    start= Sys.Date() - 365*3,
    end= Sys.Date(), quote="AdjClose",
    provider="yahoo", origin="1970-01-01",
    compression="d", retclass="zoo")

bbva <- get.hist.quote(instrument="bbva.mc",
    start= Sys.Date() - 365*3,
    end= Sys.Date(), quote="AdjClose",
    provider="yahoo", origin="1970-01-01",
    compression="d", retclass="zoo")

ibex <- get.hist.quote(instrument="^IBEX",
    start= Sys.Date() - 365*3,
    end= Sys.Date(), quote="AdjClose",
    provider="yahoo", origin="1970-01-01",
    compression="d", retclass="zoo")

obito.botin <- as.Date("2014-09-10")

cotizaciones <- cbind(santander, bbva, ibex)
cotizaciones <- cotizaciones[!is.na(cotizaciones$AdjClose.ibex)]

Con lo anterior, he bajado las cotizaciones diarias de las acciones del Banco de Santander, las del BBVA y la del IBEX 35 durante los últimos tres años. Eso deja la fecha de la muerte del Sr. Botín, aproximadamente, en la mitad.

Ahora caRtociudad encuentra información administrativa relativa a un punto

R

Y lo hace así:

library(caRtociudad)
get_cartociudad_location_info(40.473219,-3.7227241, year = 2015)
# $seccion
# [1] "2807908148"
#
# $distrito
# [1] "2807908"
#
# $provincia
# [1] "Madrid"
#
# $municipio
# [1] "Madrid"

Esto da respuesta a una pregunta de Rubén.

La función es en su mayor parte (salvo algunos retoques más estéticos que otra cosa míos) de Luz Frías, que hizo omiso caso de la inexistente docuentación del INE sobre su servicio de mapas y capturó directamente la petición que el portal de Cartociudad hace al servicio.

¿Quieres aprender R? ¡Matricúlate en mi curso en KSchool!

Si quieres aprender R, bien puedes matricularte en el curso que voy a impartir en KSchool. Es un programa de iniciación a R centrado en aquellos aspectos de R que más usan en la práctica diaria quienes trabajan con datos (y no son estadísticos duros). ¡Y ya vamos por la tercera edición!

Tendrá lugar durante el mes de junio (y un poco de julio). Son diez sesiones de tres horas. Los detalles están aquí.

Y viene del español, tú

Cada día soy más inculto. He dejado de escuchar música; en el último concierto al que fui maté el tiempo con un jueguito del móvil; la taquillera del teatro de mi barrio se niega a venderme entradas por cuestiones formales (que si son las 18:01 y la taquilla cierra a las 18:00); hace años que no leo ficción; en el Reina Sofía, donde otros ven arte yo encuentro desgana y mis gustos cinematográficos son de lo más estragado.

Clústers de trayectorias con la distancia de Fréchet

R

Los viejos del lugar recordarán esto, donde agrupo trayectorias usando k-medias a pelo.

El paquete kmlShape usa la distancia de Fréchet para hacer algo parecido: buscar trayectorias geométricamente similares.

El código es

    library(kmlShape)
    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)])

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

    ibex.scaled <- data.frame(t(scale(ibex)))
    tmp <- cldsWide(ibex.scaled)

    res <- kmlShape(tmp, 4, toPlot = "none")

    tmp <- data.frame(
      id = rownames(ibex.scaled),
      cluster = res@clusters, ibex.scaled)

    tmp <- melt(tmp, id.vars = c("id", "cluster"))
    tmp$fecha <- as.Date(tmp$variable, "X%Y.%m.%d")

    ggplot(tmp, aes(x=fecha, y=value, group=id)) +
      geom_line() + facet_wrap(~cluster)

y el resultado,