R

Etsa es una edntara a pubrea de roreetcs cnctoaumes

Psandeno en cómo ebiisrcr a pbruea de roceetrs plaigoaris couetmacns rodecré esto y lo he idepmneatlmo en R.

No sé si ertéaiss o no de adeurco en que fncniuoa o no, es dicer, que los ttoexs son rloeincboecs si se faijn la pmirera y úmtila lerta de cada pabrala y se puertma el retso. Lo que sí que es ctireo es que añade a cdaa txeto una mcraa catstaícirerca que decnniua su pdcionereca. Lo mlao sreía que el rtecor, cosiape la ieda, el cgiódo que cipoo djeabo, psermuate las pcmtanorieeus y qesudae como un señor.

Tres grandes problemas que ocupan pero, según el CIS, no preocupan

Plañe el periodista porque dizque hay tres graves problemas que, a pesar de lo que ocupan (en los medios), a la hora del CIS, no preocupan.

Aggiorno una vieja entrada para ver, por ejemplo, cómo ha variado en los últimos años la preocupación de los encuestados por el CIS acerca de uno de los tres graves problemas:

De hecho, el porcentaje que se muestra indica la proporción de los encuestados que mencionaron el asunto como uno de los tres principales problemas de España. La pregunta, de respuesta abierta, aparece así formulada en los cuestionarios:

Evolución de la edad media de la población por provincias

Abundo en la entrada de ayer. Lo hago para mostrar

En el gráfico anterior se muestra la evolución de la edad media de la población de las provincias españolas como diferencia con respecto a una evolución media calculada como la regresión lineal de todas las edades medias con respecto al año. Es decir, algo así como evolución relativa.

Se aprecian claramente los rejuvenecimientos relativos de Guadalajara y, en menor medida, Toledo. Especialmente acusados durante este siglo.

Rejillas poblacionales con R (un borrador)

R

me llegó ayer por Twitter (vía @unnombrealazar). En el mapa aparece representada la edad media de la población por provincia (y hoy voy a dar las cloropetas por buenas). Salta a la vista Guadalajara: tiene una edad media ¿sorprendentemente? baja. Tanto que tuve que comprobarlo en el INE. La explicación (siempre a posteriori) más obvia es

@gilbellosta @unnombrealazar inmigrantes que trabajan en el corredor del henares, familias con niños supongo

– jesus alfaro (@jesusalfar) 26 de marzo de 2017

EM (duro) a mano (y para humanos)

Dada una configuración de puntos tal como

puede pensarse que existen dos grupos (clústers los llaman casi todos menos el neotroll de estas páginas y algún otro purista) de puntos organizados alrededor de unas rectas que se adivinan.

Nos planteamos el problema de identificarlas y de asignar los puntos a su respectiva.

Una posible estrategia consiste en construir la verosimilitud asociada al problema y maximizarla. Esa verosimilitud dependería de muchos parámetros:

qgraph para representar grafos que son correlaciones que son vinos

R

Me vais a permitir que escriba una entrada sin mayores pretensiones, inspirada en y adaptada de aquí y que sirva solo de que para representar correlaciones entre variables podemos recurrir a los grafos como en

library(qgraph)
wine.quality <- read.csv("https://goo.gl/0Fz1S8",
                            sep = ";")
qgraph(cor(wine.quality), shape= "circle",
        posCol = "darkgreen",
        negCol= "darkred", layout = "groups",
        vsize=13)

que pinta

mostrando resumidamente cómo se relacionan entre sí determinadas características de los vinos y cómo en última instancia influyen en su calidad (qlt).

Reducción de la dimensionalidad con t-SNE

Voy a explicar aquí lo que he aprendido recientemente sobre t-SNE, una técnica para reducir la dimensionalidad de conjuntos de datos. Es una alternativa moderna a MDS o PCA.

Partimos de puntos $latex x_1, \dots, x_n$ y buscamos otros $latex y_1, \dots, y_n$ en un espacio de menor dimensión. Para ello construiremos primero $latex n$ distribuciones de probabilidad, $latex p_i$ sobre los enteros $latex 1, \dots, n$ de forma que

$$ p_i(j) \propto d_x(x_i, x_j),$$

Cuantiles, sí, pero ¿de qué tipo?

Porque resulta que los hay de varios tipos. En R, hasta nueve de ellos:

    set.seed(1234)
    muestra <- sort(rt(100, 3))
    mis.cuantiles <- sapply(1:9, function(tipo) quantile(muestra, 0.834, type = tipo))
    mis.cuantiles
    #    83.4%     83.4%     83.4%     83.4%     83.4%     83.4%     83.4%     83.4%     83.4%
    #0.9065024 0.9065024 0.8951710 0.8997036 0.9053693 0.9331290 0.9015846 0.9077920 0.9063154

Las definiciones de todos ellos pueden consultarse en Sample Quantiles in Statistical Packages.

Las diferencias entre ellos, de todos modos, decrecen conforme aumenta el tamaño muestral:

n.obs <- seq(100, 1e5, by = 1e3)
res <- sapply(n.obs, function(n){
  x <- rt(n, 3)
  diff(range(sapply(1:9, function(tipo)
    quantile(x, 0.834, type = tipo))))
})

plot(n.obs, log10(res), type = "l",
  xlab = "n obs", ylab = "discrepancia",
  main = "Diferencias entre los distintos tipos de cuantiles")

Wikipedia + prophet

R

El otro día escribí sobre visitas a la Wikipedia. El otro día (posiblemente otro) oí hablar de prophet.

Hoy con

library(wikipediatrend)
library(prophet)
library(ggplot2)

visitas <- wp_trend(
    "R_(lenguaje_de_programaci%C3%B3n)",
    from = "2010-01-01", to = Sys.Date(),
    lang = "es")

mis.visitas <- visitas[, c("date", "count")]
colnames(mis.visitas) <- c("ds", "y")

pasado <- mis.visitas[1:1500,]
m <- prophet(pasado)

futuro <- make_future_dataframe(m,
    periods = nrow(mis.visitas) - 1500)
prediccion <- predict(m, futuro)

pred.plot <- plot(m, prediccion)
pred.plot +
    geom_line(data = mis.visitas[1501:nrow(mis.visitas),],
        aes(x = ds, y = y), col = "red", alpha = 0.2) +
    xlab("fecha") + ylab("visitas") +
    ggtitle("Predicción de visitas a la página de R\nen la Wikipedia con prophet")

construyo

"Todas" las terrazas de Madrid

es un mapa en el que, en rojo, figuran todas (véase la coda) las terrazas de Madrid. Los datos están extraídos del censo de locales, sus actividades y terrazas de hostelería y restauración del ayuntamiento y están procesados con

terrazas <- fread("http://datos.madrid.es/egob/catalogo/200085-17-censo-locales.txt")
terrazas$coordenada_x_local <- as.numeric(gsub(",", ".", terrazas$coordenada_x_local))
terrazas$coordenada_y_local <- as.numeric(gsub(",", ".", terrazas$coordenada_y_local))
tmp <- terrazas[terrazas$coordenada_x_local > 1000, ]
tmp <- terrazas[terrazas$coordenada_y_local > 3e6,]

# UTM a siglo XXI
library(rgdal)
terrazas.utm     <- SpatialPoints(
    cbind(tmp$coordenada_x_local,
    tmp$coordenada_y_local),
    proj4string=CRS("+proj=utm +zone=30"))
terrazas.latlong <- spTransform(terrazas.utm,
    CRS("+proj=longlat"))

library(ggmap)
madrid <- get_map("madrid", zoom = 12)
tmp <- as.data.frame(terrazas.latlong)
ggmap(madrid) + geom_point(
    aes(x = coords.x1, y = coords.x2),
    data = tmp, size = .5,
    col = "red", alpha = 0.3)

Sobre las cursivas de todas:

Sobre una poco conocida y para nada menguante "brecha de género"

Con datos del INE sobre mortalidad he construido el gráfico

que muestra las tasas de mortalidad relativas (la de hombres entre la de mujeres) desde 1975 para cada edad. Como no se aprecia debidamente el efecto que da pie a esta entrada, reorganizo los ejes (y promedio, ¡glups!, las tasas de mortalidad por grupos quinquenales de edad):

Se observa una manifiesta tendencia creciente, uno de esos gender gaps, brechas de género o como quiera que se llamen a estas cosa en neolengua que, lejos de menguar, crece y crece.