Lo poco y lo mucho; lo malo, lo regular y lo bueno

Estos días pasados ha habido un hilo en la lista de correo de ayuda de R en español (¿todavía no te has dado de alta en ella?) en la que alguien preguntaba cómo crear paquetes y dónde encontrar documentación al respecto. La buena intención de quienes han tratado de ayudarle, me temo, ha sido contraproducente. Lo han empapelado con una lista (casi con aspiraciones de exhaustividad) de recursos y más recursos en los que se indica cómo resolver el problema. ...

16 de noviembre de 2015 · Carlos J. Gil Bellosta

purrr: otro dialecto para la programación funcional en R

Acaba de publicarse purrr. Es un paquete del universo Wickham que ofrece funciones para desarrollar otro dialecto funcional sobre R. R es un lenguaje oportunista: ni del todo funcional, ni del todo orientado a objetos, ni del todo procedural. Es como es porque nació con un objetivo muy concreto y fue adoptando cosas de aquí y de allá como cuando uno recorre el supermercado. Merece la pena traer a colación cómo el primerísimo R (cuando era S), durante los ochenta, antes de adoptar la forma actual a través de los diversos libros de colores de Chambers y compañía, estaba fuertemente inspirado por Lisp. ...

2 de octubre de 2015 · Carlos J. Gil Bellosta

NMF: una técnica mergente de análisis no supervisado

[N]NMF (se encuentra con una o dos enes) es una técnica de análisis no supervisado emergente. Se cuenta entre mis favoritas. [N]NMF significa non negative matrix factorization y, como SVD, descompone una matriz M como UDV'. Solo que, en este caso, las entradas de M son todas positivas. Y la descomposición es UV', donde las entradas de ambas matrices son también positivas. ¿Qué tipo de matrices tienen entradas estrictamente positivas? Las resultantes de cuestionarios donde sujetos (filas) valoran (de 0 a 10) objetos, propuestas, etc. (columnas). Las que representan clientes (filas) que compran (un determinado número >= 0) de productos (columnas). … Y acabo con un instrumento (el paquete NMF de R) y el análisis de una encuesta realizado con dicha técnica para que la veáis en acción.

14 de septiembre de 2015 · Carlos J. Gil Bellosta

Efectos en regresiones logísticas

Rescato y reconvierto un comentario de mi buen amigo José Luis Cañadas en una entrada mía reciente en la de hoy. Sugiere José Luis el uso del paquete effects de R para estudiar el efecto de (que el caso concreto de interés, aunque hay otros) las variables de un modelo logístico. Nos copia el código library(effects) mod.cowles <- glm(volunteer ~ sex + neuroticism*extraversion, data = Cowles, family = binomial) eff.cowles <- allEffects(mod.cowles, xlevels = list(extraversion = seq(0, 24, 6)), given.values = c(sexmale = 0.5)) plot(eff.cowles, type = "response") que genera un gráfico en el que se aprecia el efecto de las variables en la probabilidad de volunteer. Entre otras cosas, nos indica el efecto de sex, que coincide con el que podemos obtener haciendo ...

14 de julio de 2015 · Carlos J. Gil Bellosta

Oh, no, ¡datastepr!

Hoy no estoy de humor. He tratado de completar mi primer anillo en dos años y ha resultado un total fracaso. Mi bici buena estaba pinchada: me he enterado a un kilómetro de casa. He tenido que salir en otra, una de esas viejas de Decathlon, que no sé bien cómo apareció una vez en mi casa, que pesa un quintal y que cambia de marchas cuando y como quiere. No solo me he quedado a la mitad del recorrido sino que, además, he podido constatar cómo el paisanaje de Madrid ha descompuesto todas las fuentes que en el proyecto original jalonaban el recorrido. Supongo que con la inestimable ayuda, por omisión, de nuestros munícipes. Aquello, más que un anillo ciclista, parecía Mad Max I. ...

9 de junio de 2015 · Carlos J. Gil Bellosta

Datos en formato largo y melt

En ocasiones uno recibe datos no muy distintos de aragon <- read.table("http://datanalytics.com/uploads/pob_aragon", header = T, sep = "\t") aragon # Provincias Periodo Hombres Mujeres # 1 Huesca 2014 113840 111069 # 2 Huesca 2004 107961 104940 # 3 Teruel 2014 71449 68916 # 4 Teruel 2004 71073 68260 # 5 Zaragoza 2014 471675 488436 # 6 Zaragoza 2004 441840 455510 Los mismos datos en formato largo son: library(reshape2) aragon.largo <- melt(aragon, id.vars = c("Provincias", "Periodo")) aragon.largo # Provincias Periodo variable value # 1 Huesca 2014 Hombres 113840 # 2 Huesca 2004 Hombres 107961 # 3 Teruel 2014 Hombres 71449 # 4 Teruel 2004 Hombres 71073 # 5 Zaragoza 2014 Hombres 471675 # 6 Zaragoza 2004 Hombres 441840 # 7 Huesca 2014 Mujeres 111069 # 8 Huesca 2004 Mujeres 104940 # 9 Teruel 2014 Mujeres 68916 # 10 Teruel 2004 Mujeres 68260 # 11 Zaragoza 2014 Mujeres 488436 # 12 Zaragoza 2004 Mujeres 455510 Si eso de datos largos (o en formato largo) no te suena, pierde un momento en: ...

12 de marzo 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

Dónde guardar los paquetes de R (en Linux, al menos)

En todos mis Linux, desde el principio de los tiempos, R guardaba los paquetes en /usr/lib/R/library /usr/lib/R/site-library (¡a veces y no sé por qué!) /usr/local/lib/R/site-library Bajo /usr/lib deberían instalarse solo aquellos que vienen de serie con la instalación de R (o que se instalan usando el sistema de actualización de paquetes de la distribución de Linux) mientras que bajo /usr/local vivirían los instalados posteriormente por el usuario (véase esto). Por supuesto, para escribir /usr/local/lib/R/site-library hacen falta permisos de superusuario y los paquetes ahí instalados están disponibles para todos los usuarios de la máquina. Pero de un tiempo a esta parte y por culpa, creo, de RStudio (tanto en versión de escritorio como de servidor), se me han comenzado a instalar paquetes en ~/R, bajo mi directorio personal. ¡Anatema! ...

21 de enero de 2015 · Carlos J. Gil Bellosta

Publicada una nueva versión de rPython-win

Acabo de subir a Github una nueva versión de rPython-win, que soluciona uno de mis bugs históricos: ha pasado tanto tiempo en estado “pendiente” que casi le cojo cariño. Tiene (o tenía) que ver con particularidades no documentadas de las APIs para C de Python en distintas versiones de Windows y creo que no afecta al paquete en otras plataformas. Y aprovechando que el Pisuerga pasa por Valladolid, un enlace: Calling Python from R with rPython.

2 de enero de 2015 · Carlos J. Gil Bellosta

Aprende R con swirl

Me pasó el otro día Federico Castanedo un enlace a swirl que quiero compartir con mis lectores y, en particular, aquellos que quieren aprender (¡o enseñar!) R. ¿Cómo funciona? Sencillo: install.packages("swirl") library("swirl") swirl() (idealmente en RStudio) y luego, click, click, click hasta saber todo lo que merece ser sabido en R.

16 de octubre de 2014 · Carlos J. Gil Bellosta