Lo (mínimo) que hay que saber de series temporales: breve, conciso e indoloro
Es Forecasting: principles and practice, de Hyndman y Athanasopoulos.
Es Forecasting: principles and practice, de Hyndman y Athanasopoulos.
Mucho se habla de ciencia de datos pero poco de una disciplina emergente de la que me ocupé hace tiempo en una entrada que entre las más de 1300 que llevo no ubico: la ingeniería estadística.
Porque muchos de nosotros no hacemos ciencia (¡Dios nos guarde!); más bien, resolvemos problemas reales en contextos reales. Y, entre otras cosas, defenimos o redefinimos el problema (¡al carajo con el RMSE!).
Pero, ¿qué es la ingeniería estadística? Pues podéis averiguarlo aquí mucho mejor contado que por mí.
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:
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:
Traduzco:
Las nuevas aptitudes que tanto atraen la atención de los medios no sirven para resolver más eficazmente el problema de la inferencia; son puras técnicas de supervivencia para gestionar los artefactos inducidos por la computación distribuida a gran escala. Lidian con las enormes restricciones que impone el mundo de los sistemas multiproceso y distribuidos sobre los algoritmos. En este mundo tan constreñido, el elenco de algoritmos utilizables es tan limitado si se lo compara con el disponible en el de un único procesador, que es inevitable adoptar técnicas estadísticas que hubieran sido tachadas de rudimentarias, si no de inadecuadas, en otros tiempos. Estos problemas consumen nuestro tiempo y energía, deforman nuestro criterio sobre lo que resulta adecuado y nos desvían de las estrategias de análisis de datos que habríamos aplicado de oficio en otras circunstancias.
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),$$
Nos engañaron malamente. Nos prometieron que estudiar matemáticas nos abriría la puerta de los misterios más sutiles del conocimiento y ahora no hacemos otra cosa que celebrar como gilipollas el día de $latex \pi$ a golpe de retuiteo. Nos dijeron que aprendiendo ingeniería conoceríamos el funcionamiento de las cosas y acabamos usando ordenadores armados con pegamento. Con la estadística seríamos capaces de estudiar y entender los movimientos y cambios sociales, el funcionamiento de los mercados financieros, etc. y nunca pasamos de los k-vecinos.
Alguien me pidió el otro día referencias para aprender estadística. Pero no, no preguntó por libros; preguntó por vídeos.
En mi afán por evitar convertirme en un carca (o peor aún, un carca prematuro) incurro en experimentos a veces vergonzantes, como jugar al GTA o ver alguna (una, más bien) emisión de El Rubius. Pero a algo a lo que no me acostumbraré, creo, nunca es a adoptar esa costumbre que detecto en las nuevas generaciones de tratar de aprender (¿y conseguirlo?) a través de vídeos.
Tomemos dos variables aleatorias independientes y positivas,
set.seed(123)
n <- 100
x <- runif(n) + 0.5
y <- runif(n) + 0.5
No tengo ni que decir que su correlación es prácticamente cero,
cor(x,y)
#-0.0872707
y que en su diagrama de dispersión tampoco vamos a poder leer otra cosa:
Ahora generamos otra variable independiente de las anteriores,
z <- runif(n) + 0.5
y calculamos el cociente de las primeras con respecto a esta:
xz <- x / z
yz <- y / z
¿Independientes? Hummmm…
La distribución de Poisson se utiliza de oficio cuando se quiere modelar datos relativos a conteos. Sin embargo, tiene un problema serio: la varianza está fijada a la media: ambas son $latex \lambda$, el parámetro de la distribución.
Muy frecuentemente se observan datos con sobredispersión. Si $latex \lambda$ es 1000, el número esperado de eventos está contenido en un intervalo demasiado estrecho,
qpois(c(0.025, 0.975), 1000)
#[1] 938 1062
como para ser realista en muchas aplicaciones.
El número efectivo de partidos es el nombre de una página de la Wikipedia, que contiene la fórmula
$$ N = \frac{1}{\sum_i p_i^2}$$
y excipiente alrededor.
Aplicada a España (usando datos del CIS como proxy),
Como casi siempre, el código:
library(rvest)
library(rvest)
library(reshape2)
library(plyr)
library(zoo)
url <- "http://www.cis.es/cis/export/sites/default/-Archivos/Indicadores/documentos_html/sB606050010.html"
raw <- read_html(url)
tmp <- html_nodes(raw, "table")
tmp <- html_table(tmp[[2]], fill = TRUE)
colnames(tmp)[1] <- "partido"
tmp <- tmp[!is.na(tmp$partido),]
tmp <- tmp[1:30,]
tmp <- melt(tmp, id.vars = "partido")
tmp <- tmp[tmp$value != ".",]
tmp$value <- as.numeric(tmp$value)
tmp$variable <- gsub("ene", "01-", tmp$variable)
tmp$variable <- gsub("abr", "04-", tmp$variable)
tmp$variable <- gsub("jul", "07-", tmp$variable)
tmp$variable <- gsub("oct", "10-", tmp$variable)
tmp$variable <- gsub("-0", "-200", tmp$variable)
tmp$variable <- gsub("-1", "-201", tmp$variable)
tmp$variable <- gsub("-9", "-199", tmp$variable)
tmp$variable <- paste0("01-", tmp$variable)
tmp$variable <- as.Date(tmp$variable, format = "%d-%m-%Y")
dat <- tmp
dat <- ddply(dat, .(variable), transform, total = value / sum(value))
res <- ddply(dat, .(variable), summarize, enp = 1 / (sum(total^2)))
res <- zoo(res$enp, order.by = res$variable)
plot(res, main = "Número efectivo de partidos\nen España(1996-2016)",
xlab = "", ylab = "número efectivo de partidos")
Las cosas, frecuentemente, son como son y no de otra manera, especulativamente, mejor por razones históricas. Es lo que hay. La respuesta a muchas preguntas es “porque A llegó antes que B”.
La estadística (y particularmente, la que se enseña) es como es y no de otra manera, especulativamente, mejor, también por razones históricas. Por eso siempre pierdo algo de tiempo hablando (¡es uno de mis personajes favoritos del XIX!) de Quetelet y los suyos; luego, de Fisher y compañía; finalmente, de Efron y los demás.