R

Curso de análisis de datos 'ómicos' con R

Copio aquí el anuncio de un nuevo curso de análisis de datos (ómicos en este caso) con R:

Nos complace anunciaros que el CREAL organiza la segunda edición del “Curso de análisis de estadístico de datos ómicos” que va a celebrarse los días 8, 9 y 10 de abril de 2014. Debajo podréis encontrar cómo hacer la inscripción que se llevará a cabo por estricto orden de petición y sólo será posible para los primeros 16 pre-inscritos.

Cuatro enlaces: sanidad, correos electrónicos, leyes y errores de programación

El primero es Freer trade in European and Spanish health care services y trata sobre los efectos en el sistema sanitario español de una directiva europea que liberaliza el acceso a los ciudadanos de al unión a los servicios de salud de otros países.

En concreto, el artículo argumenta cómo España podría ser uno de los países más afectados por dos razones:

  1. El flujo de extranjeros que atrae el país.
  2. El diferencial de precios (mucho más baratos en España) que en el extranjero.

Los efectos podrían ser tres:

La bolsa intradía y bolsa interdía

El IBEX 35 abre todas las mañanas a un precio y cierra a otro. El precio de apertura de un día no es necesariamente igual al del cierre del siguiente. Por lo tanto, la variación del índice en una jornada completa de 24 horas es igual a la suma de las variaciones dentro y fuera del horario de cotización.

Dicho lo cual:

  • Juan compra el IBEX todos los días a primera hora y lo vende en el último minuto.
  • Del otro lado, Pedro lo compra en el último minuto y se lo vende (¡a Juan!) justo al abrir la bolsa al día siguiente.

Juan y Pedro llevan operando así desde el 1 de enero de 2000. ¿Cuál de los dos se ha llevado el gato al agua? Veámoslo:

Ofertón: tarifa plana de GasNaturalFenosa

R

En medio del fragor mediático sobre el precio de la electricidad, me ha llegado un ofertón de GasNaturalFenosa: la posibilidad de contratar una tarifa plana para la electricidad.

La entrada de hoy es el debido ejercicio acerca de si me conviene o no contratarla. En R, por supuesto.

Primero, el código:

library(ggplot2)

# tramos tarifas planas

tarifas <- c("micro", "mini", "media", "maxi", "extra")

dat <- data.frame(
  tarifas = factor(tarifas, levels = tarifas),
  hasta   = c(1500, 2500, 4000, 5500, 7000),
  tarifa.plana = c(30, 40, 55, 73, 91)
)

# precio normal del kWh
base  <- 0.13

# fijo en función de la potencia contratada
# indico el que pago yo aunque varía de
# cliente en cliente
termino.potencia <- 15

# precio del kWh sobre el límite
extra <- 0.23

# consumos posibles
consumos <- data.frame(consumo = seq(0, 7000, by=100))

dat <- merge(dat, consumos)

dat$precio.normal <- 12 * termino.potencia +
  dat$consumo * base
dat$precio.tarifa.plana <- 12 * dat$tarifa.plana +
  extra * pmax(0, dat$consumo - dat$hasta)
dat$beneficio.oferta <- dat$precio.normal -
  dat$precio.tarifa.plana

dat <- subset(dat, beneficio.oferta > -250)

ggplot(dat, aes(x=consumo, y=beneficio.oferta, col = tarifas)) +
  geom_line() +
  geom_hline(aes(yintercept=0), col = "red", alpha = 0.5)

La salida es este gráfico:

El yuyuplot en perspectiva

R

El yuyuplot al que me refiero es

scary_plot_dj

un gráfico ha circulado por internet y que ha causado cierto pánico, se ve (y de ahí el nombre). En algunos sitios —véase este como ejemplo de los menos acertados— se ha intentado de explicar al público sus deméritos.

El mundo de las finanzas debiera ser la envidia de otros ámbitos por el volumen, variedad y velocidad de los datos disponibles en él. Además, desde tiempo atrás, mucho antes de que el siglo nos trajese el big data, la transparencia, el opendetodo y otras concomitancias. A la vez, sin embargo, es inagotable fuente de ejemplos de uso pueril de esos datos. El que nos ocupa es uno de ellos.

Mi solución al otro problema del cumpleaños

Pues eso, que me piqué —y parte de la culpa la tiene este sujeto— con el otro problema del cumpleaños y he aquí el código —exacto salvo redondeos, no mediante simulaciones— que he usado para resolverlo:

f <- function(n, k = 365, v = NULL){

  if(is.null(v))
    v <- c(1, rep(NA, k))

  res <- 1

  for(j in (k-1):1){
    v[k-j] <- ifelse( is.na(v[k-j]), f(n, k-j, v), v[k-j])
    res    <- res - choose(k,j) * ((k-j)/k)^n * v[k-j]
  }

  res
}

f(2287)
#0.5003708
f(2286)
#0.4994142

Lo que hay al final son los ensayos últimos de mi mecanismo de cutrebúsqueda binaria para acotar la solución usando la función f. Esta función calcula la probabilidad de que una distribución aleatoria de n bolas en k urnas no deje vacía nunguna de ellas.

De ratios, apuestas y riesgos

Nunca he entendido eso de los odds. Me refiero a eso que mencionan las películas: ocho contra uno a favor de tal, cinco contra tres a favor de cual. Y no creo que sea el único al que le son ajenos. De hecho, la página de la Wikipedia en español correspondiente a la inglesa para odds se refiere a ellas como cuotas, término que jamás hasta hoy había visto así usado. Tampoco lo han visto, se concoce, los lexicógrafos de la RAE.

Guía de estilo de R (de Google)

R

R es un lenguaje de programación de alto nivel que se usa principalmente en aplicaciones estadísticas y para la generación de gráficos. El objetivo de esta guía de estilo es que nuestro código sea más fácil de leer, compartir y analizar. Las reglas de esta guía fueron consensuadas con la comunidad de usuarios de R en Google.

  • Resumen de las reglas de estilo

    1. Nombres de ficheros: tienen la extensión .R
    2. Identificacores: variable.name, FunctionName, kConstantName
    3. Longitud de línea: no más de 80 caracteres
    4. Indentación: dos espacios, no tabuladores
    5. Espacios
    6. Llaves: el primero en la misma línea; el último, solo
    7. Asignaciones: usar <-, no =
    8. Puntos y comas: no usarlos
    9. Distribución general y ordenación
    10. Comentarios: todos los comentarios comienzan con # seguido de un espacio; los comentarios dentro del código necesitan dos espacios delante de #
    11. Definiciones y llamadas a funciones
    12. Documentación de funciones
    13. Ejemplo de función
    14. Estilo para los TODO: TODO(username)
  • Resumen de las reglas de programación

Macros sintácticas con R

Creo que muchos hemos tropezado con las macros alguna vez. Yo conocía las del preprocesador de C o el tinglado que tiene SAS. Y nunca fui muy amigo de ellas.

Pero el otro día leí Stop Writing JavaScript Compilers! Make Macros Instead y se me alargaron los dientes. Así que he buscado información adicional hasta hacerme una idea de la diferencia entre una macro que se limita a reemplazar texto, una macro procedural —como las del lenguaje PL/I, antecesor e inspirador de SAS— y las sintácticas, como las que tiene Lisp (¿cuándo tendré tiempo para aprenderlo en condiciones?).

Curso de estadística y R de Hastie y Tibshirani

Los profesores Hastie y Tibshirani, coautores de Elements of Statistical Learning, de muchas técnicas predictivas y, todo hay que decirlo, ídolos intelectuales míos, organizan un MOOC gratuito, Statistical Learning entre el 21 de enero y el 22 de marzo.

Si estás leyendo esto (es decir, si has aterrizado en mi bitácora), te interesa. Si no te apuntas, te aviso, te arrepentirás.

Dicho lo cual, yo estaré ahí. Y se cuenta que podrían organizarse grupos locales de participantes —p.e., en Madrid— para resolver dudas y problemas.