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.

Conste en primer lugar que es una frase cosecha mía y no sé cuántos, si algunos, estarán de acuerdo conmigo. Y se trata de una mezcla de visión y de deseo. Es cierto que llamadas a la uniformidad —y a la inmersión lingüística— pueden provocar sentimientos de rechazo. También es cierto que se trata de una sola frase que compendia muy sucintamente horas de reflexiones, conversaciones y experiencias y que me deja, por lo tanto, expuesto a malinterpretaciones extremas. Yo mismo los sentí al escribir la frase y me obligó a releerla. ¿Me atrevería a dejarla tal cual?

Me concedí finalmente la venia para no cambiarle una coma obligándome en contrapartida a fundamentarla debidamente. Y esta es la ocasión propicia para hacerlo.

Fernando dice que consider[a] importante un esfuer[z]o por trabajar al menos con dos herramientas distintas y estoy de acuerdo con él. Creo que, de hecho, uno de los objetivos estratégicos (transcenciendo los contenidos de cada una de las asignaturas de la carrera de estadística) debería ser que los alumnos aprendiesen a programar.

He estudiado estadística en dos universidades. En la una, la estadística era esencialmente teórica y jamás usamos ordenador para ningún fin. En la otra sólo había SAS. Hace mucho que dejé la universidad y temo equivocarme. Pero sí que conozco a muchos recién licenciados, he tenido ocasión de haber hablado con algunos profesores, etc. Y me da la impresión de que el recién licenciado medio no sabe programar. En el mejor de los casos, lo han expuesto a R en dos asignaturas, a Gretl en la de series temporales, a WinBUGS si hizo un máster especializado, a SPSS en quién sabe qué y, a lo más, hizo un curso de SAS de 20 horas. Pero le pides, aquí y ahora, un gráfico y abre Excel; y le pides una regresión y pulsa la tecla del hiperespacio (la del juego Asteroids) para evadirse a un dimensión remota.

No hablo desde una perspectiva, si se me permite, mini-max —un mínimo entre las exigencias máximas— sino max-mini: a la vista de las circunstancias actuales, presento una perspectiva más deseable.

Si se me concede que un objetivo de mínimos es lograr que todo recién licenciado en estadística (y áreas afines) domine un, al menos un, lenguaje de programación, —e insisto, sin perjuicio de que algunos sean también expertos en otros— la siguiente pregunta que se plantea es ¿cuál?

Y creo que ahora, en este año, aunque las cosas pudieran cambiar dentro de cinco o diez más, debiera ser R. Por muchos motivos:

  • Porque R puede instalarse en cualquier plataforma, usarse en cualquier momento, para cualquier fin y gratuitamente: se es estadístico 24×7, no 8×5.
  • Porque expone a los estudiantes a herramientas y métodos de primera línea de investigación.
  • Porque se usa para resolver problemas reales.
  • Porque es un lenguaje (relativamente) moderno: está orientado a objetos, contiene aspectos funcionales, etc. que facilitan el aprendizaje de otros lenguajes tales como Python, Java, etc.
  • Porque —en contraposición a herramientas propietarias— no obliga a universidades (muchas de ellas públicas) a hacer el trabajo sucio de formación por cuenta de unos señores que tienen un negocio de venta de software.
  • Porque introduce a los estudiantes en el mundo del software libre y les da la oportunidad de conocer un modo muy valioso de hacer cosas —ciencia y software, entre otras— y divulgar conocimiento.
  • Porque su uso desincentiva la piratería de software.

Y, seguro, me dejo muchos otros.

Si se me pregunta por alternativas y por SAS en concreto, resulta que:

  • SAS no se usa apenas en estadística: basta con revisar la agenda del último SAS Forum España para darse cuenta de que la empresa está en otra cosa.
  • Gran parte de los programadores en SAS no han llamado jamás a PROC MIXED, PROC PHREG, etc. Son puros trasladadores de datos. Y yo doy fe: he pagado la hipoteca de un apartamento traslandando datos de aquí para allá con SAS.
  • SAS no enseña nada que valga la pena ser aprendido hoy en día en cuanto a técnicas de programación: pudo haber resultado innovador en los años setenta; hoy ya no: es un callejón sin salida que crea más vicios que abre puertas a otros lenguajes.

Quiero acabar esta entrada bastante larga analizando la transcendencia de esa descripción de R que es la de lengua vehicular —en inglés suele utilizarse el término lingua franca— de la estadística y que tiene que ver con el hecho de que el lenguaje da forma al pensamiento.

Y la estadística clásica —que constitutye el grueso de cuanto se enseña en la universidad— está lastrada por los condicionantes de quienes, sin la ayuda de los recursos computacionales existentes hoy en día, la desarrollaron hace un siglo. Y que el ámbito de los problemas a los que se aplica está igualmente restringido.

Hoy, en el siglo XXI, existen problemas y técnicas mucho más diversos que la nueva lengua vehicular —que puede ser la puerta de entrada a métodos basados en remuestreos, a la simulación, a la predicción, etc.— puede ayudar a poner encima de la mesa para renovar de arriba a abajo la disciplina.

5 comentarios sobre “R en la enseñanza: unos comentarios a los comentarios

  1. Freddy López 28 noviembre, 2011 17:11

    Yo, en mi pequeña apreciación, puedo preguntarme ¿qué espera el mundo de los estadísticos (profesionales en estadística)? Y me respondo que sin duda, dentro del mundo empresarial, bancario, financiero, y muchos otros, se espera que se sepan defender con las herramientas que tenga a la mano (que le ofrezca su lugar de trabajo) y las que conozca por cuenta propia. Para los estadísticos que optan (y a los que el mercado los hace optar) por este grupo, no conocer R resultaría lamentable puesto que se estarían perdiendo las ventajas que listas.

    Para el otro grupo de estadísticos (como los quizá forman en la primera universidad que estudiaste; o los más teóricos) que no tienen la mínima intención de desarrollar aplicaciones ni ensuciarse las manos con datos (creo que los hay por ahí), no saber R o lo que sea, no tiene importancia alguna.

    En fin, gran tema, para discutir horas sobre él… ¡Salud!

  2. David López 28 noviembre, 2011 21:36

    Hola yo soy Diplomado en estadística y casi licenciado, contare los programas, y la programación que he visto yo.
    Diplomatura: R en modelos lineales, SPSS en multivariante, SUDAAN en muestreo, junto con un poco de Ofice y MATLAB y de programación una cuatrimestral de C y otra C++, yo de optativa vi Programación visual porque me estaba gustando la programación.
    Licenciatura: SPSS series temporales y métodos de regresión, LINGO en planificación de la producción, R en teoría de colas, html y javascrpt, y en programación estocástica un programábamos en c++ para usar las librerías de CPLEX, SUDAAN en encuestas y MATLAB en Álgebra matricial, creo que no me olvido de ningún programa que hayamos usado.

    Como se observa hemos usado muchos programas, yo estoy volviendo a repasar y a estudiar toda la programación que pueda, ya que creo que es un complemento muy importante a la hora de buscar trabajo y también estoy intentando pasarme a Linux y ver Data mining

    Espero que esto les sirva para seguir hablando de los pros y los contras, como el uso de software libre vs comercial

  3. Pedro Valle 28 noviembre, 2011 22:58

    Otra opción es usar maxima (o wxmaxima). Por ejemplo, si intentamos sumar los primeros números obtenemos:

    en R, última versión 64 bits, intentando sumar los números del 1 al 10^7

    > sum(1:10^7)
    [1] NA
    Mensajes de aviso perdidos
    In sum(1:10^7) : Integer overflow – use sum(as.numeric(.))

    En maxima, usando Lisp, sumamos los números del 1 al 10^10:

    En maxima usando Lisp sumamos los números del 1 al 10^10 mediante un bucle en unos 6 segundos.
    CL-USER> (time (let ((s 0))
    (dotimes (i (expt 10 10) s)
    (declare (optimize (speed 3) (safety 0))
    (type fixnum i s))
    (incf s))))
    Evaluation took:
    6.098 seconds of real time
    6.096381 seconds of total run time (6.092381 user, 0.004000 system)
    99.97% CPU
    14,277,575,571 processor cycles
    16 bytes consed

    10000000000

  4. datanalytics 29 noviembre, 2011 16:36

    @Pedro Valle No sé a qué viene el comentario, pero, por si acaso:

    > system.time( a < - sum( as.numeric( 1:10^7 ) ) ) user system elapsed 0.14 0.00 0.14 > a
    [1] 5e+13

  5. Pedro Valle 30 noviembre, 2011 21:51

    Hola, el comentario viene a propósito de que los bucles en R son muy lentos, y puede haber
    otros lenguajes mejor adaptados a problemas numéricos.

    Al ejecutar el ejemplo anterior con 10^9 el sistema se queda colgado, y si se intenta con 10^10 sale un mensaje de error indicando que el array sería demasiado largo.

    system.time( a < – sum( as.numeric( 1:10^9 ) ) )

    system.time( a < – sum( as.numeric( 1:10^10 ) )

    Sin embargo en, por ejemplo SBCL Lisp, se puede conseguir el resultado en pocos segundos.

Los comentarios están desabilitados.