La distribución de Poisson y la estabilización de la varianza

Imagínate que quieres estabilizar la varianza (¡para qué!) de una distribución de Poisson. Los libros viejunos te dirán que saques la raíz cuadrada de tus valores.

Si en lugar de mirar en libros viejunos prestas atención a tus propios ojos, harás algo parecido a:

lambdas <- -10:10
lambdas <- 2^lambdas
res <- sapply(lambdas,
    function(lambda) sd(sqrt(rpois(1e5, lambda))))

para obtener

y averiguar dónde funciona y dónde no.

Si usas la transformación $latex f(x) = x^{2/3}$, como recomiendan en cierto artículo que no viene a cuento identificar, harás

Martingalas, tiempos de parada y tuits cuasivirales

El otro día publiqué en Twitter un problema que copié de algún sitio (sinceramente, no recuerdo cuál),

que resultó megaviral en mi humilde tuitescala.

A ver si mañana tengo tiempo de ocuparme de lo triste que resulta que mi entorno de Twitter sea tan cafre como para haber desacertado tanto.

p-curvas

Primero, una simulación:

n <- 100
delta <- 0.2
n.iter <- 10000

p_valores <- function(n, delta){
  tmp <- replicate(n.iter, {
    x <- rnorm(n)
    y <- rnorm(n, mean = delta)
    t.test(x, y)$p.value
  })

  res <- tmp[tmp < 0.05]

  hist(res, freq = FALSE, xlab = "p value", ylab = "", col = "gray", main = "histograma de p-valores publicables")

  res
}

null_effect_p_values <- p_valores(n, 0)
some_effect_p_values <- p_valores(n, delta)

Lo que simula son n.iter experimentos en los que se comparan n valores N(0,1) con otros n valores N(delta, 1) y se extrae el correspondiente p-valor. Luego se grafican los publicables (<0.05).

Cuidado con los $

R

El otro tropezamos con el siguiente artefacto:

a <- list(aa = 12, bb = 14)
is.null(a$a)
#[1] FALSE
a$a
#[1] 12

No es un bug de R, por que la documentación reza:

x$name is equivalent to x[[“name”, exact = FALSE]]

Y se pueden constrastar:

a[["a", exact = FALSE]]
a[["a", exact = TRUE]]

Comentarios:

  • Odio muchísimo los bugs que no son bugs porque están documentados en el la nota ‡2.a.(c), párrafo §23.3 de la sección 14 de un manual oscuro.
  • Odio mucho al os gilipollas que se complacen en mandarte a leer manuales.
  • Odio mucho las violaciones del principio de mínima sorpresa.
  • Soy consciente de que R es, fundamentalmente, una plataforma de análisis interactivo y no (o solo subsidiariamente) un lenguaje de programación.
  • Soy consciente de que muchos de los defaults de R se decidieron antes de que se popularizasen los completadores de comandos.

Un artículo que está esperando a ser escrito

Alguno de mis lectores, supongo, estará metido en ese mundo de ir escribiendo cosas y cosechado méritos, impactos y anecosas para salir del precariado y pillar moscosos. Que dejen de leer. Es una orden.

A aquellos que tengan tiempo y talento los invito a escribir el artículo titulado Temperaturas umbrales de disparo de la mortalidad atribuible al frío y al calor en España en el periodo 2007-2017.

Se trata, esencialmente, de aggiornar metodológica, gráfica y sintácticamente esta cosa viejuna y manifiestamente mejorable en todas las dimensiones concebibles.

¿Cómo se mide el número medio de días para pagar una factura?

[Esta entrada tiene una errata de la que doy fe aquí.]

Pues casi seguro que mal. Por eso hay que enfrentarse a noticia como esta con escepticismo. En el cuerpo del artículo aparece el gráfico

Que invita a preguntarse cosas como: ¿habrán tenido en cuenta las facturas aún no pagadas? (Es decir, las censuradas, en la nomenclatura del análisis de la supervivencia). Si se ignoran, el tiempo se estará infraestimando seriamente.

La magnitud de la sequía

Cuando tienes una serie temporal al uso (sin entrar a definir qué es eso), uno puede aplicar descomposiciones tmabién al uso, como stl, para extraer tendencia y estacionalidad, de la forma

como en esta entrada previa.

Lluvia.

La serie de la lluvia es otra cosa. Uno ve si llueve o no llueve (típicamente no). Lo que uno no ve es la probabilidad, que varía a lo largo del año, de que llueva. Pasa lo mismo con monedas (uno ve caras o cruces, no la probabilidad de cara), clientes que compran (uno ve si compra o no, no la probabilidad de compra), etc. Pero la probabilidad existe y en estimarla consiste frecuentemente el trabajo de algunos.

Simpson, de nuevo: ahora con la mortalidad

La tasa de mortalidad ha crecido sustancialmente en los dos últimos años (tres, de hecho: el INE no publica datos para el 2017 todavía, pero yo los he y fe doy):

Sin embargo, la tasa de mortalidad para cada cohorte de edad decrece. Muestro las de las cohortes de edades múltiplas de cinco:

De nuevo, Simpson.

Nota: las cifras vienen expresadas en defunciones por cada 1000 habitantes. Los datos salen de aquí.

De nuevo, la falacia del fiscal (aplicada a fiscales que fenecen)

Cosas altamente improbables ocurren a diario. Es altamente improbable que no ocurran eventos altamente improbables.

A veces te ocurre un evento altamente improbable cerca de ti, como, por ejemplo, que el número de tu billete de lotería coincide con el que cantan el día 22 de diciembre unos niños en la tele. Y todo bien. A veces, van y se mueren un par de críos en el sitio donde trabajas y te empapelan malamente.

Antropocentrismo cansino

Es muy cansino. No hay debate sobre big data, inteligencia artificial o similar en el que no pase: de repente lo captura alguien (con pinta de no haber tirado una maldita línea de código en la vida) llevándoselo al tema con el que asustan a las porteras: ¡oh, oh, oh, la protección de datos!, ¡la nueva normativa europea! Que si Facebook sabe lo que hiciste, que si Google conoce tus amigos, que si…

Neutralidad de la red: ¿importa?

Mi opinión, en tanto que nadie me dé argumentos para reconsiderarla, es que no.

La neutralidad de la red es un principio por el cual los sistemas que gestionan internet (rúters, etc.) deben tratar por igual a todos los paquetes que les llegan, sin discriminarlos por origen, contenido, protocolo, etc. Estupendo.

Se oponen a ella proveedores de servicios de internet, que dizque quieren lanzar ofertas como las que denuncia este tuit en términos hiperdramáticos:

Más sobre correlaciones espurias y más sobre correlación y causalidad

Hoy toca esto:

Se trata de una invitación para leer el artículo Los picos de contaminación coinciden con un aumento radical en los ingresos hospitalarios, un cúmulo de desafueros epilogados por el ya habitual

Los resultados de esta investigación tienen puntos en común con la metodología científica aunque en ningún momento tendrán la misma validez ni tampoco es su intención que la tenga.

dbf · xlsx · pdf

R

Me escriben pidiendo consejo sobre cómo leer datos contenidos en (una serie larga de) ficheros en formatos .dbf, .xlsx (con un formato extraño) y .pdf.

.dbf

No tengo ni curiosidad por averiguar de dónde proceden. Simplemente,

library(foreign)
res <-read.dbf("R0010.DBF")

funciona de maravilla.

.xlsx

Estos sí que sé de dónde vienen (y me guardo la opinión). El problema aquí no era leer directamente tablas contenidas en hojas sino ir extrayendo celdas y rangos de hojas. Así que: