Recurrencia recurrente

Pregunta Antonio Sánchez Chinchón cómo mejorar la parte menos vistosa e imaginativa de esto, es decir, el código. Él, y muchos diríamos que correctamente, autocritica el uso de eval + parse para plagar el namespace de funciones. La respuesta está en la recurrencia. He aquí mi versión del código: library(ggplot2) library(gridExtra) nrows <- 6 coefs.a <- runif(min=1, max=50, nrows) coefs.b <- runif(min=1, max=50, nrows) foo.a <- sample(c(sin, cos), nrows, replace = TRUE) foo.b <- sample(c(sin, cos), nrows, replace = TRUE) foo <- function(x, a, b){ if(a == 1 || b == 1) return(foo.a[[a]](coefs.a[a] * x)) if(b == a) return(foo.b[[a]](coefs.b[a] * x)) foo(x, a-1, b) + foo(x, a-1, b-1) } vplayout = function(x, y) viewport(layout.pos.row = x, layout.pos.col = y) opts=theme(legend.position="none", panel.background = element_rect(fill="gray95"), plot.background = element_rect(fill="gray95", colour="gray95"), panel.grid = element_blank(), axis.ticks=element_blank(), axis.title=element_blank(), axis.text =element_blank()) grid.newpage() jpeg(file="AddingWaves.jpeg", width = 1800, height = 1000, bg = "gray95", quality = 100) pushViewport(viewport(layout = grid.layout(nrows, 2*nrows-1))) for (i in 1:nrows) { for (j in 1:i) { print(ggplot(data.frame(x = c(0, 20)), aes(x)) + stat_function(fun = function(x) foo(x, i, j), colour = "black", alpha=.75)+opts, vp = vplayout(i, nrows+(2*j-(i+1)))) } } dev.off() El resultado es ...

11 de febrero de 2015 · Carlos J. Gil Bellosta

Vuelvo a España

Al final y contra todo pronóstico, me han afectado los despidos de eBay. Así que vuelvo a España. Pronto se me verá por Madrid. Que la primavera sea propicia para las ideas que me rondan la cabeza. Una nota sobre pésames y jódetes: que nadie se sienta obligado a darme los primeros o pierda el tiempo cantándome los segundos. A mi edad, las dos únicas palabras que me afectarían son las de es cáncer. Lo sucedido son puros y amortizadísimos gajes del oficio.

10 de febrero de 2015 · Carlos J. Gil Bellosta

Ejercicios de mi clase de R

Ya conté que participo (como profesor) en el Experto en Data Science de la U-tad. Voy a copiar aquí los ejercicios que propuse en la asignatura de preparación de datos con R. Por si alguien les quiere hincar el diente. En lo que sigue he eliminado algunos detalles que no vienen a cuento. He dejado el resto. Son así: Los ejercicios tienen que resolverse individualmente. No son sencillos: parte de ellos están inspirados en problemas prácticos reales. Por eso puedes ayudarte de cualquier tipo de instrumento (Google, blogs, libros, etc.) que estaría a tu alcance en tu trabajo. Eso sí, en las soluciones que envíes, indica los recursos que utilices y deja clara cuál es tu aportación en cada caso. ...

9 de febrero de 2015 · Carlos J. Gil Bellosta

Romain François (y Francisco Viciana) en el grupo de usuarios de R de Sevilla

Me entero en la página del grupo de usuarios de R de Sevilla de dos cosas: de que Romain François hablará sobre dplyr y de lo que esconde bajo el capó y que Francisco Viciana demostrará el uso del paquete pxR en la próxima reunión del grupo. ¡Quién pudiera asistir!

6 de febrero de 2015 · Carlos J. Gil Bellosta

Parametrización para vagos muy, muy vagos

Un ejemplo sencillo. Tengo un programa que contiene, por ejemplo, una consulta tal que query <- "select * from mitabla where country = 24 and year = 2014" Hay gente sumamente diligente, con una enorme capacidad de trabajo y con vocación de hormiguita que en mil ejecuciones distintas (distinto país, distinto año) del código anterior sería capaz de editar la consulta a mano. Probablemente usando el block de notas. Esa gente, que además suele madrugar mucho, siempre me ha dado cierta envidia. No sé por qué. ...

5 de febrero de 2015 · Carlos J. Gil Bellosta

Entrevista en Principio de Incertidumbre: "big data" sin artificio

El jueves pasado y durante un breve receso de mi gripe, me entrevistaron en Canal Extremadura Radio. Durante una hora larga (que luego hubo que recortar a los 30 minutos que dura el programa de divulgación científica Principio de Incertidumbre) hablé de estadística, big data y R con Jorge Solís Bejarano. A quien tengo que agradecer, primero, que contase conmigo; pero además y sobre todo, lo bien documentado que estuvo (lo cual me lleva a pensar que habrá que estar atentos a otras grabaciones de su programa). ...

4 de febrero de 2015 · Carlos J. Gil Bellosta

Hackatón de datos abiertos, 21 de febrero en Madrid

El día 21 de febrero (de 2015) tendrá lugar en Medialab-Prado (¿cómo llegar?) un hackatón de datos abiertos patrocinado por Medialab-Prado y Open Knowledge Spain. El resto de la información puede consultarse aquí. Dicho lo cual, ¿deberías ir? Pues si tienes 45 años, eres profesor de la Autónoma, etc. lo sabes tú mejor que yo. Pero si tienes veintitantos, estudias, has comenzado a trabajar recientemente o estás en el paro, si tienes inquietudes (y las tienes si lees esto), si quieres conocer técnicas nuevas, problemas nuevos, contactar con gente interesante, etc., el día 21 coge tu portátil y acude.

29 de enero de 2015 · Carlos J. Gil Bellosta

La profesionalización de R

Tenía en mente escribir estas líneas desde hace un tiempo. La reciente noticia de la adquisición de Revolution Analytics por parte de Microsoft la ha adelantado, como mucho, unos pocos días. S, el lenguaje del que R es una implementación libre, vivió su ciclo propietario completo: nació en los laboratorios Bell, creció con Insightful, se reprodujo (R fue su vástago) y creo que ha muerto sin pena ni gloria en manos de Tibco. Como casi cualquier otro producto similar. ...

28 de enero de 2015 · Carlos J. Gil Bellosta

Grandes datos, máquinas pequeñas (y regresiones logísticas con variables categóricas)

Preguntaba el otro día Emilio Torres esto en R-help-es. Resumo la pregunta. Se trata de una simulación de unos datos y su ajuste mediante una regresión logística para ver si los coeficientes obtenidos son o no los esperados (teóricamente y por construcción). El código de Emilio (cuyos resultados no podemos reproducir porque no nos ha contado qué similla usa) es logisticsimulation <- function(n){ dat <- data.frame(x1=sample(0:1, n,replace=TRUE), x2=sample(0:1, n,replace=TRUE)) odds <- exp(-1 - 4 * dat$x1 + 7*dat$x2 - 1 *dat$x1* dat$x2 ) pr <- odds/(1+odds) res <- replicate(100, { dat$y <- rbinom(n,1,pr) coef(glm(y ~ x1*x2, data = dat, family = binomial())) }) t(res) } res <- logisticsimulation(100) apply(res,2,median) ## (Intercept) x1 x2 x1:x2 ## -1.0986123 -18.4674562 20.4823593 -0.0512933 Efectivamente, los coeficientes están lejos de los esperados, i.e., -1, -4, 7 y 1. ...

27 de enero de 2015 · Carlos J. Gil Bellosta

Cuando dicen que la variable x es exógena, quieren decir...

Cuando los economistas dicen que la variable $x$ es exógena (con respecto a una variable de interés $y$) en realidad quieren decir que la función de verosimilitud $f(x,y)$ puede descomponerse de la forma $f(x,y) = f(y|x) g(x)$ y eso permite modelizar $y$ en función de $x$. Cuando la descomposición no es posible (porque $x$ y $y$ se influyen mutuamente) dicen que $x$ es endógena. Obviamente, a la hora de (pretender) modelizar $y$ pueden considerarse variables endógenas y exógenas (y la correspondiente descomposición de la verosimilitud es un ejercicio para el lector). ...

26 de enero de 2015 · Carlos J. Gil Bellosta