R

Syberia tiene muy buena pinta [pero...]

R

Echadle un vistazo a Syberia (y me contáis qué tal os va). Tiene muy buena pinta y puede ser útil para produccionalizar código.

[Esto es casi todo; lo que sigue es omitible.]

Sin embargo y sin que necesariamente haga desmerecer a Syberia como tal, en la página arriba enlazada se lee:

In the viewpoint of the author, R is syntactic sugar around LISP, which enables arbitrary computation; Syberia is an attempt to support this conjecture by allowing the construction of arbitrary software projects within the R programming language, thereby finally outgrowing its long-overdue misconception as a statistical tool.

Hoy, como excepción, gritaré y justificaré: ¡Malditos logaritmos!

Dados unos números positivos hay que justificar por que no tomar logaritmos y no al revés. La carga de la prueba recae sobre quien no lo hace.

No obstante:

Tenía unos datos (para cada $latex t$) que siguen (me lo juran) un modelo teórico

$$ \log y \sim k \exp(-at)$$

Existen dos opciones para encontrar los parámetros deseados $latex k$ y $latex a$. El primero, tomando logaritmos y aplicando lm. El segundo, ajustando un modelo no lineal con, p.e., nls.

¿Les dará un patatús a mis excolegas?

R

En Gaussianos publicaron este problema:

En un triángulo acutángulo ABC tenemos que AH, AD y AM son, respectivamente, la altura, la bisectriz y la mediana que parten desde A, estando H, D y M en el lado BC. Si las longitudes de AB, AC y MD son, respectivamente, 11, 8 y 1, calcula la longitud del segmento DH.

El gráfico, construido por uno de los respondedores, Ignacio Larrosa Cañestro, es este:

¿Cómo preambuláis vuestros .Rmd?

R

Yo nunca me había preocupado demasiado de eso (salvo en las presentaciones, para la que uso revealjs y que son otra historia), pero el otro día me pasaron y vi el efecto de

---
title: "Mi título"
author: "Yo Me Mí Conmigo"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
  html_document:
    toc: true
    toc_float:
      collapsed: false
      smooth_scroll: false
    theme: united
    highlight: tango
---

y las cosas van a cambiar para siempre.

La anticonferencia: una idea que me ronda la cabeza

La anticonferencia me ronda la cabeza.

No es una conferencia, (de ahí el prefijo), aunque se parezca a ella en lo de reunir a un grupillo de gente interesada en un asunto.

No es un jacatón. Los jacatones están, sobre el papel, bien; pero demasiado a menudo su producto se queda ahí, tiene poca (o nula) trayectoria o impacto. ¿Me dejáis que diga que son mayormente intranscendentes?

Pero creo que los de rOpenSci dieron en el clavo con su Unconference. Es una reunión similar a un jacatón, pero con un objetivo claro: desarrollar paquetes y extender el universo de herramientas de rOpenSci.

Funcionalidades infravaloradas de R: los corchetes

R

[Ad]Mirad esta pequeña maravilla de código:

n <- 100
dat <- data.frame(
  y = rnorm(100),
  x = sample(letters[1:3], n, replace = T)
  )

medias <- tapply(dat$y, dat$x, mean)
dat$x.trans <- medias[dat$x]

head(dat)

El corchete está manifiestamente infravalorado.

Que Magritte me perdone

R

¿Qué es %>%? ¿Para qué sirve? Hoy he hecho la presentación más sesgada y parcial del operador para neófitos en R:

library(magrittr)

8 %>% sin %>% exp
exp(sin(8))

(Es que madrugar me pone de mal humor y saca mi más sincero yo de dentro de mí mismo).

Dizque al sexto mes... pero ¿y los datos?

He leído esto, que trata de lo distinta que es

a la izquierda y a la derecha de la línea roja punteada.

La historia contada desde las posterioris basadas en datos difiere de la apriorística (recordad: ideología = priori). En concreto

Reconoceréis una aplicación de causalImpact y lo que significa el gráfico está comentado en todas partes.

Código y datos, por mor de la reproducibilidad, aquí.

Aquellos que ignoran la estadística etcétera

Ayer asistí a una charla sobre errors. Brevemente (porque está estupendamente explicado, motivado y documentado por su autor, al que aprovecho la ocasión para saludar), hace esto:

library(errors)
valores <- unlist(list(a = 1, b = 2, c = 3))
vars    <- c(1, 1, 1)    # varianzas de esos datos/medidas
sds     <- sqrt(vars)

# errores
x <- valores
errors(x) <- sds
format(x[1] * sin(x[2])^3, notation = "plus-minus", digits = 3)
#[1] "0.75 +/- 1.28"

Y nuestro viejo, clásico, manido, infrautilizado, semidesconocido mas no por ello menos querido método delta, ¿para qué existe en lugar de (como elucubraba el filósofo), simplemente, no existir? ¿Para qué otra cosa sino para aprenderlo me levanté yo aquella fría mañana del 94 sino para contemplarlo proyectado de diapositivas manuscritas de acetato? ¿Fue en vano?

¿Soy un dinosauRio? Sobre las novedades de R

R

Trato de estar abierto a lo nuevo. Tantos años soportando dinosaurios me han vacunado contra el conservadurismo tecnológico. De hecho, me produce arcadas. La experiencia, no obstante, me ha hecho permeable al efecto Lindy, lo que me da ocasión de saludar a mis amigos emaqueros.

Las cosas cambian y en R estamos viviendo una especie de revolución. Mi argumento, para impacientes, es que:

  • Es más superficial que sustancial: es azúcar sintáctico.
  • En ciertos aspectos, no es positiva y mina ciertos principios valiosos que hicieron de R un lenguaje popular.

Cuento todo esto a raíz de una reseña a un novedoso curso de R. Lo es en tanto que, dicen:

Me too, me too!

Las alturas corresponden a una cierta potencia de la población residente en la correspondiente rejilla. Los datos son del SEDAC (Socioeconomic Data and Applications Center, Universidad de Columbia) y se pueden bajar gratis si te registras y rellenas un cuestionario tontaina.

El código,

    library(ggplot2)
    options(expressions = 10000)

    dat <- read.table("dat/espp00ag.asc", skip = 6)
    dat <- as.matrix(dat)
    dat <- data.frame(y = as.numeric(row(dat)),
                      x = as.numeric(col(dat)),
                      pop = as.numeric(dat))

    peninsula <- dat[dat$x > 200,]
    peninsula <- peninsula[peninsula$y < 250,]

    res <- ggplot()

    for (i in 1:max(peninsula$y)){
      tmp <- peninsula[peninsula$y == i,]
      tmp$pop <- tmp$pop^0.3
      res <- res + geom_polygon(data = tmp, aes(x = x, y = pop - y), fill = "white", col = "black", size = 0.1)
      res <- res + geom_path(data = tmp, aes(x = x, y = pop - y), size = 0.2)
      res <- res + geom_hline(data = tmp, aes(yintercept = -y), col = "white")
    }

    res + theme(axis.line=element_blank(),
                axis.text.x=element_blank(),
                axis.text.y=element_blank(),
                axis.ticks=element_blank(),
                axis.title.x=element_blank(),
                axis.title.y=element_blank(),
                legend.position="none",
                panel.background=element_blank(),
                panel.border=element_blank(),
                panel.grid.major=element_blank(),
                panel.grid.minor=element_blank(),
                plot.background=element_blank())

Nota: se me olvidó escribir en el cuerpo lo que anunciaba el título, i.e., que esta entrada está inspirada (fusilada, de hecho) en lo esencial de otras previas.

¿Cómo fue R antes de R?

R

La década le ha dejado nuevas sintaxis a R. Algunos, precarcas, fruncimos el entrecejo. Esta entrada nos administrará un poco de medicina histórica.

R es una reimplementación (libre, para más señas) de S. La sintaxis actual de S (que es la del R de toda la vida) es del año 88. Antes, durante los 80, era otra. Pero es difícil dar con ella en internet.

Pero no imposible. El libro S: An Interactive Environment for Data Analysis and Graphics, de Chambers y Becker, ha sido escaneado por Google y, aunque no completo, nos permite echar un vistazo a algunas páginas, las suficientes para no hacer carraspear desaprobatoriamente al copyright.

Curso de introducción a R en Gijón

Tenía que haberlo publicado antes, pero… ahí va:

Esta semana se va a impartir un curso de introducción a R en el que participo. Está organizado por la UNED y se puede asistir presencialmente (si estás en Gijón esos días) o en remoto desde cualquier parte.

La info, aquí.