Sas

Mi apuesta para el larguísimo plazo: Julia

  • Larguísimo, arriba, significa algo así como 10 o 20 años. Vamos, como cuando comencé con R allá por el 2001.
  • R es, reconozcámoslo, un carajal. Pocas cosas mejores que esta para convencerse.
  • No dejo de pensar en aquello que me dijo un profesor en 2001: que R no podría desplazar a SAS porque no tenía soporte modelos mixtos. Yo no sabía qué eran los modelos mixtos en esa época pero, desde entonces, vine a entender y considerar que “tener soporte para modelos mixtos” venía a ser como aquello que convertía a un lenguaje para el análisis de datos en una alternativa viable y seria a lo existente. Y mirad esto.
  • Obviamente, lo de los modelos mixtos no es más que una metáfora. Realmente significa algo así como “el sistema X tiene muchas cosas y su alternativa, Y, es un mero juguete”. Pero no hay nada que impida que Y comience a implementar todo aquello que le falta. Además, mucho más rápida y eficientemente. P.e., ¿cuánto tardó R en dotarse de su gramática de los gráficos? Pues bien, Juilia ya los tiene. (¿Cómo se dice leapfrog en español?)
  • Dicho de otra manera, R ha sido el estado del arte en computación estadística en los últimos años. Ha avanzado por prueba y error. Pero ahora, cualquier rival ya sabe qué tiene que hacer exactamente para llegar a donde está R.
  • Julia corre sobre LLVM. Es decir, que se beneficia automáticamente de cualquier mejora realizada sobre la máquina virtual (si es que se me permite llamar así a LLVM).
  • Esta semana he estado programando en C unas rutinas que tienen que ser llamadas desde R. Pero, ¿no sería el mundo más hermoso no tener que cambiar de lenguaje para tener rendimiento de C?
  • Arriba comparo R y Julia como extremos de un arco (en el que a la izquierda de R quedan aún irrelevancias como SAS o SPSS). Python ocupa una posición intermedia entre ambos. Desde un punto de vista meramente técnico, si alguna dimensión es Python mejor que R, Julia es todavía mejor que Python. Salvo, de nuevo, la cantidad de flecos y cascabeles de los que ya dispone Python y que todavía no están presentes en Julia. Pero, como se ha dicho arriba, desde la perspectiva del larguísimo plazo, es una objeción irrelevante que apunta a un estado transitorio de las cosas.

Y supongo que podría seguir.

Oh, no, ¡datastepr!

R

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.

Me muerdo la lengua... por no contarlo todo

R

Me tengo que morder la lengua por no contarlo todo. Escribiré hasta donde pueda hacerlo. Que es casi nada. La cosa es que ha llegado a mis oídos que una muy importante empresa española con muchos, muchos empleados planea una migración muy seria de SAS a R.

Lo cual no deja de ser un cotilleo empresarial más. Que, como tal, no tendría cabida aquí. Salvo por el hecho de que me consta que me leen muchos estudiantes, muchos profesionales que se replantean sus carreras, muchos desempleados que se están formando de cara a su reincorporación.

ROI de ida y vuelta

Hace años, allá por el 2004, trabajaba en SAS. Íbamos a hacer una propuesta para la detección del fraude en una empresa de telefonía móvil de las de entoces. Habían medido el importe anual del fraude en X miles de euros. Nosotros íbamos a implantar un sistema que ayudase a prevenir un determinado porcentaje de él. El quid de la cuestión era cuál: alrededor de esa cuestión gravitaban los números en negrita de la propuesta que estábamos por elaborar.

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?).

Ejemplos sobre cómo usar R desde SAS a través de IML

R

Quiero dar a conocer hoy un vídeo de SAS sobre cómo integrarlo con R a través de SAS/IML. SAS/IML es un lenguaje de programación que apenas tiene que ver con lo que normalmente se conoce como el lenguaje de programación SAS y que tiene un aspecto similar a Matlab o, incluso, salvando las distancias, R. Debido a esa afinidad, es el producto a través del cual SAS ha querido establecer la interconexión de sus productos con R. Además, intuyo, de forzar a los interesados en dicha integración a adquirir una licencia de IML.

SAS, R, grandes datos y falta de afabilidad

R

El otro día hice un comentario a esta entrada de una bitácora de SAS. Esencialmente, decía dos cosas:

  • Que 10000 observaciones no hacen grandes datos (big data); 10000 observaciones son muy pocas observaciones.
  • Que el código original, la idea de la entrada, etc., proceden de este otro enlace de una página de Yihui Xie (conocido por ser el autor de knitr) en la que el problema se planteaba y resolvía con R. Se le concedía crédito en el enlace al código que aparece en la bitácora de SAS pero no de una manera, digamos, lo suficientemente manifiesta.

Y como no tuvieron a bien aprobar en la entrada mi comentario pasados unos cuantos días prudenciales, lo hago constar aquí.

Un intérprete alternativo de R

R

Java es un lenguaje de programación que puede ejecutarse sobre muchas máquinas virtuales distintas: la de Sun, la de IBM, etc. Algo parecido pasa con SAS, que puede ejecutarse sobre el intérprete de SAS Institute o sobre el de WPS.

El código escrito en R puede ejecutarse, en principio, en dos plataformas distintas:

  • La creada por el R Development Core Team y que todos, más o menos, conocemos.
  • La desarrollada por Tibco (y, previamente, por Insightful) para S-Plus, el dialecto propietario de R (o S).

¿Son esas todas las opciones? Sí, por el momento.

Nueve reinas con SAS (y R también)

R

No sé si habéis visto la película argentina Nueve reinas. Trata de unos timadores que engatusan a incautos para sacarles la platica.

Pero no voy a hablar de esas nueve reinas sino de las ocho de Solve Eight Queens Puzzle With SAS Macro. De su introducción extraigo y traduzco:

The Little SAS Book contiene un excelente ejemplo para ilustrar las diferencias entre SAS como lenguaje de programación y C++ mostrando lo complicado que puede resultar procesar conjuntos de datos con un lenguaje de propósito general. Son 28 líneas de código C++ y 5 de SAS para leer un fichero delimitado e imprimirlo por pantalla. Es un ejemplo perfecto de cómo SAS es un lenguaje de cuarta generación con un alto nivel de abstracción y expresividad.

Gráficos de embudo para controlar la varianza en muestras pequeñas

Publiqué hace un tiempo una entrada en esta bitácora sobre el problema que representa la desigualdad de los tamaños muestrales a la hora de comprender cierto tipo de datos, como por ejemplo, los que trata de representar el gráfico

que muestra la incidencia del cáncer de riñón en distintas zonas de en EE.UU. Como indiqué entonces, los valores extremos se encuentran en zonas menos pobladas: cuanto menor es la población, más probables son las proporciones inhabituales.

R en la enseñanza: unos comentarios a los comentarios

Iba a responder a los comentarios de mi entrada sobre las Jornadas de R y, muy en particular a los de Fernando Fernández, uno de los más fieles lectores de esta bitácora, y me he extendido tanto que he acabado convirtiéndola en una nueva. Pido excusas por haber tal vez abusado de mis prerrogativas para auparme de esta manera.

Tanto a él como a otros les chirrió que escribiese comenzamos una nueva época que en el plazo de tres o cuatro años nos va a conducir, con casi total seguridad, a un escenario en el que […] R se use de manera casi exclusiva en la enseñanza de la estadística en los niveles universitarios.

Dont be loopy! (III: jackknife y paralelismo)

R

Esta es la tercera entrega de una serie de artículos en los que comparo SAS y R a la hora de realizar diversos tipos de simulaciones basados en Don’t Be Loopy: Re-Sampling and Simulation the SAS® Way.

Esta vez toca compararlos a la hora de aplicar el método del jackknife.

Primero, el código SAS que recomienda el autor del artículo, que calcula la curtosis de un conjunto de datos trivial (una muestra de 10k valores que siguen una distribución uniforme):