Distribuciones hiperbólicas

    curve(-sqrt(x^2 + 1), -5, 5)

pinta una rama de hipérbola,

que, una vez exponenciada, i.e.,

    curve(exp(-sqrt(x^2 + 1)), -5, 5)

da

Es decir, una curva algo menos esbelta que la normal pero que bien podemos dividir por su integral para obtener la llamada distribución hiperbólica.

Tres notas sobre ella:

  • Tiene una historia curiosa. Fue considerada por Ralph Bagnold al estudiar la forma de las dunas y la sedimentación de la arena arrastrada por el viento. El logaritmo de sus curvas, se ve, tenía forma de hipérbola.
  • Lo cual os proporciona un exótico contraejemplo al argumento habitual sobre la naturaleza omniatractora de la normal.
  • La distribución hiperbólica (y sus extensiones) están disponibles en el paquete ghyp, motivado por aplicaciones financieras, como siempre. Esa gente es adicta a distribuciones con colas gruesas. Aunque para lo que les valen luego…

nls con odes

Más sobre secuencia de entradas acerca de ajustes no lineales. Con (casi) los mismos datos que entonces:

set.seed(155)

n <- 100

a <- 1
b <- -1/2
sigma <- 0.1

x <- runif(n, -1, 1)
y <- exp(a * x + b) + rnorm(n, 0, sigma)

dat <- data.frame(x, y)

Las y proceden de las x a través de una función no lineal exp(a * x + b). Que hoy supondremos desconocida. Supondremos únicamente que conocemos cierto mecanismo físico que determina la evolución de las y a partir de las x dado por una ecuación diferencial

ISO 3166-2:ES

El estándar ISO 3166-2:ES, ignorado por todos, establece cómo deberían identificarse provincias y comunidades autónomas en España.

Obviamente, ni el INE ni nadie le va a hacer el más minimo caso: seguiremos teniendo que recordar que Zaragoza es la provincia 50, Soria la 42, etc. ¡Qué primitivo, qué contraintiutivo!

Pero no ha de perderse la esperanza: si me lees y algún día te vas a ver en la tesitura de crear algún tipo de base de datos de gentes y lugares de España, recuerda que existe un estándar internacional medianamente nemotécnico y al socaire de las veleidades vernacularizantes.

No, no soy hípster; tampoco soy más guay; solo es que tengo más RAM

Trabajo en un ámbito fiel a una tradición metodológica. Que está construida alrededor de una serie de técnicas desarrolladas en los 90, 80, 70 y 60, incluso. Las desarrolló gente muy capaz y talentosa. Bajo coordenadas emic, sin tacha.

Pero desde coordenadas etic, están mandadas a recoger. Han envejecido mal. Porque aquellos beneméritos metodólogos no describieron lo que querían hacer sino lo que podían hacer.

Así que no soy un estadístico hípster, ni me considero más guay que ellos; es solo que tengo más RAM.

Mismo trabajo, nosequé cosa

Hoy han surgido tuits reclamando que a mismo trabajo correspondiesen yo qué sé que cosas estupendas. Razonaré que son peticiones propias de quienes ignoran de qué va el mundo.

Los estadísticos nos encargamos de decir NO razonadamente. Analizamos ocurrencias de otros y decimos: pues mira, NO, lo que crees señal es solo ruido. A eso se reduce (casi, lo admito) todo.

El ruido aparece por todas partes. Habitualmente, como efecto de variables no observadas. Aplicando una definición lata de variable no observada, siempre. Aunque por deslindar, frecuentemente se atribuye ruido imprecisión en la medida de los fenómenos de interés.

Tres de seis consejos para mejorar las regresiones

Por si alguien se lo perdió, están aquí. De los seis, mencionaré tres que me están resultando muy útiles en un proyecto actual.

De todos ellos, el que más a rajatabla sigo es el primero: ajustar muchos modelos. Pudiera parecer trampa: buscar y rebuscar por si sale algo. Sin embargo, es una técnica que plantearse como una manera de familiarizarse y aprender la estructura de los datos. Los modelos (explicativos, como los que justifican esta entrada) no dejan de ser resúmenes de conjuntos de datos y no es sino ajustando diversos modelos que uno aprende si, por ejemplo, un coeficiente varía por año o provincia.

Modelos directos, inversos y en los que tanto da

Continúo con esto que concluí con una discusión que me negué a resolver sobre la geometría de los errores.

Que es la manera de entender que los problemas directos e inversos no son exactamente el mismo. Digamos que no es una medida invariante frente a reflexiones del plano (que es lo que hacemos realmente al considerar el modelo inverso).

¿Pero y si medimos la distancia (ortogonal) entre los puntos $latex (x,y)$ y la curva $latex y = f(x)$ (o, equivalentemente, $latex x = f^{-1}(x)$)? Entonces daría (o debería dar) lo mismo.

He tratado de contrastar una hipótesis sin éxito, así que solo publico el subproducto

R

Inspirado por esto he tratado de contrastar una hipótesis en otro contexto.

Las cosas, o se hacen bien, o no se hacen. Como mi análisis se ha complicado con casos y casitos particulares, aunque siga pensándo cierta (en caso de tener que apostar, como priori, claro) la hipótesis de partida, abandono su búsqueda.

Como subproducto, esto:

library(xml2)
library(stringr)
library(plyr)
library(lubridate)

periodos <- expand.grid(anno = 2010:2017, mes = 1:12)
periodos$ind <- periodos$anno * 100 + periodos$mes
periodos <- periodos[periodos$ind < 201711,]
periodos <- paste(periodos$anno,
  str_pad(periodos$mes, 2, pad = "0"), sep = "_")

raw <- lapply(periodos, function(x){
  url <- paste0("http://www.eldiario.es/sitemap_contents_", x, ".xml")
  print(url)
  as_list(read_xml(url))
})

#df <- lapply(raw, function(y)
  ldply(y, function(x) as.data.frame(t(unlist(x)))))

res <- lapply(raw, unlist)
res <- lapply(res, function(x) t(matrix(x, 3, length(x) / 3)))
res <- data.frame(url = res[,1],
  time = res[,2], stringsAsFactors = FALSE)

res$time <- gsub("\\+.*", "", res$time)
res$time <- strptime(res$time,
  "%Y-%m-%dT%H:%M:%S")

res$titular <- gsub("_0_[0-9]*.html", "", res$url)
res$titular <- gsub(".*/", "", res$titular)
res$titular <- tolower(res$titular)

res$year <- year(res$time)
res$month <- month(res$time)

Igual le sirve a alguien para analizar palabras clave en titulares de ese u otro medio, su evolución por mes, etc.

#ardeAsturias, #ardeAvilés? Ah, ¡mierda!

#ardeAsturias

#ardeAvilés?

Ah, ¡mierda!

Notas:

  • Las imágenes están sacadas de aquí. La página es muy entretenida, pero no es exactamente lo que promete, como evidencia esta entrada.
  • Si no has estado nunca en Avilés, igual no entiendes de qué va la cosa. La manera recomendable de solucionar el problema es problema es yendo: vale la pena.

Para esto que me da de comer no vale XGBoost

Los físicos crean modelos teóricos. Los economistas crean modelos teóricos. Los sicólogos crean modelos teóricos. Todo el mundo crea modelos teóricos: epidemiólogos, sismólogos, etc.

Estos modelos teóricos se reducen, una vez limpios de la literatura que los envuelve, a ecuaciones que admiten parámetros (sí, esas letras griegas). Frecuentemente, esos parámetros tienen un significado concreto: son parámetros físicos (con sus unidades, etc.), son interpretables como el grado de influencia de factores sobre los fenómenos de interés, etc. Frecuentemente, casi toda la ciencia de la cosa reside en ellos.

Modelos no lineales directos e inversos

Las malandanzas de Circiter la han conducido al siguiente entuerto: estimar $latex \alpha$ donde

$$ y = f_\alpha(x) + \epsilon$$

y $latex f_\alpha$ es una función no lineal horrible. Sin embargo, $latex f^{-1}_\alpha$ es mucho más manejable y podría plantearse el modelo

$$ x = f^{-1}_\alpha(y) + \epsilon$$

(donde este nuevo $latex \epsilon$ no coincide con el anterior: piénsese en el método delta y léase la nota final).

Un ejemplo. Que arranca con unos datos autoexplicativos:

rOpenSpain: ahí tiro el guante

La gente de rOpenSci hace cosas a las que merece la pena atento. Tanto por los objetivos como por medios y las formas. Recomiendo seguir sus últimas publicaciones acerca de la profesionalización del proceso de desarrollo de código.

Llevo unos meses jugando con una idea inspirada por rOpenSci: crear un respositorio y un consorcio más o menos formal que desarrolle, mantenga y mejore herramientas (en R) de interés para el procesamiento y análisis de datos ya no científicos sino españoles. Hablo, obviamente, de INE (EPA, EPF, censo, padrón,…), CIS (barómetros, etc.), IGN (Siane,…), encuestas electorales, etc.

Efectos secundarios (nota: que existan no significa que debas usarlos)

Una función no debería cambiar nada de cuanto la rodea. Debería devolver algo y ya. Se acepta barco como animal acuático cuando hay funciones que escriben en logs, guardan datos en disco o crean gráficos.

R deja que los usuarios se disparen en el pie permitiendo hacer cosas tan peligrosas como:

a <- new.env()

a$1     # error

foo <- function(){
  a$a <- 1
}

foo()
a$a
# [1] 1

De la misma manera, si le enseñas un cuchillo a una vieja, es posible que te dé su bolso con todo lo que contiene. Pero eso no significa que debas usar los cuchillos para tales fines.