domingo, 3 de mayo de 2015

Data science tools: SAS vs R

Unas de las disciplinas que más desarrollo han experimentado en los últimos años han sido todas las relacionadas con el data science. Las técnicas y herramientas utilizadas en esta disciplina adquieren cada vez más peso en el entorno empresarial. Si damos un ojo a las herramientas más utilizadas, vemos que también ha habido cambios en los últimos años.
El siguiente gráfico (www.datasciencecentral.com) muestra las herramientas más solicitadas en la actualidad puestos de trabajo de perfiles data scientist.


Están son las más solicitadas en la actualidad y representa la tendencia actual liderada de largo por R, si nos centramos en puestos ya existentes es posible que posición de cabeza la tenga SAS. Podríamos añadir a las listadas en el gráfico Phyton, que si bien es un lenguaje de propósito general, su uso en análisis de datos es cada vez más extendido. Igualmente podemos añadir a las anteriores herramientas como SCALA, Rapidminer, Weka o Knime.

En este post vamos a tratar de comparar dos de las herramientas más usadas: SAS y R. A parte de ser las herramientas más usadas, también representan arquitecturas diferentes, orientaciones diferentes y desde el punto de vista de costes: pago vs free. Probablemente sea mucho más interesante comparar un Ferrari con un Lamborghini, que comparar R con SAS, pero aunque también nos interese la velocidad, la usuabilidad y el coste, en el contexto analítico-empresarial en el que estamos nos centraremos en SAS y R.


No perdamos de vista que teniendo en cuenta el frenético ritmo que lleva la industria TI, si hacemos esta misma comparación dentro de 2 años las herramientas habrán evolucionado y seguramente los criterios a evaluar sean otros, fruto de nuevas necesidades de análisis y de tipos de datos a integrar.

Empezaremos con una breve introducción de ambas herramientas:

SAS: Herramienta de análisis de datos con solera. Lleva muchos años liderando el mercado y presente en grandes cuentas. Dispone de varias herramientas para análisis de datos: SAS/BASE, SAS/Enterprise Guide y SAS/Enterprise Miner. Licencias de duración anual con un costo sólo asumible por grandes cuentas.

R: Herramienta de análisis de datos, menos veterana que SAS, pero con una más que notable presencia en el mercado. Muy extendida en Universidades y centros de investigación, está entrando con fuerza en el panorama empresarial. Licencia open source. Comunidad de usuarios muy extensa y activa, la cantidad de librerías disponible crece por días.

Los criterios de comparación a considerar son los siguientes:
  • Facilidad de uso / curva de aprendizaje.
  • Manejo y gestión de datos
  • Capacidades gráficas y de visualización
  • Actualizaciones del software
  • Servicios de soporte y comunidades
  • Capacidades de workflow
  • Ecosistemas
  • Integración con otros lenguajes y herramientas
  • Licencias y costes


Facilidad de uso / curva de aprendizaje:

En este aspecto es posible que SAS sea un lenguaje más sencillo para los no programadores y hay muchos analistas de negocio que deben usar herramientas de este tipo sin un backgroud técnico previo en programación. Los pasos data de SAS son sencillos de aprender para alguien mínimamente familiarizado con estructuras de tablas, ya que tiene un diseño tipo DML (Data Manipulation Language). Por otra parte SAS permite la opción proc sql para escribir el código directamente en SQL Es posible que R demande una base algo más solida de conocimientos en programación y estructuras de datos. Si SAS se parece al SQL, R tendría su equivalente en C++. En su estructuración R es un lenguaje orientado a objetos, mientras que SAS responde más a un tipo de lenguaje estructurado, secuencial. R permite hacer los mismo de muchas diferentes maneras, por ejemplo si en SAS vamos a realizar agregaciones nos vamos a un proc sql de agregación o a un proc means, pero en R existen múltiples formas de hacerlo (aggregate, summarize, functiones apply, doBy, etc..). Esto puede ser desconcertante para el novato que está aprendiendo R. En cuanto a recursos de formación es fácil encontrar recursos útiles en la web. SAS tiene certificaciones, pero su formación oficial es también costosa.

Manejo y gestión de datos:

La diferencia fundamental en la gestión de datos es que R trabaja en memoria y SAS en disco. Trabajar todo en RAM tiene sus ventajas y sus inconvenientes, de cara a procesos con datasets de alto volumen de registros con R conviene tenerlo en cuenta. Hay librerías de R que permiten trabajar también en disco. En los procesos SAS tradicionalmente ha sido un problema el espacio que ocupa y librerías como la work deben ser bien gestionadas. Ambos trabajan bien paralelizando procesos.

Capacidades gráficas y de visualización:

Las capacidades gráficas de SAS centrándonos en SAS/BASE y SAS/Enterprise Guide y sin considerara SAS/Visual Analytics que es licencia a parte, son bastante justas. SAS en este aspecto cubre lo esencial, al menos en los módulos propios de data mining. A parte de no ser limitado es intrincado en su uso. R, en cambio, tiene unas capacidades de visualización muy potentes, hay numerosos paquetes con funcionalidades muy avanzadas.



Actualizaciones del software:

Debido a su naturaleza open source R, tiene nuevos algorítmos o técnicas rápidamente disponibles según se van actualizando los distintos paquetes. Hasta la fecha R tiene unos 15000 paquerts en CRAN (Comprehensive R Archive Network). SAS sigue la política de releases habitual de un software comercial, de forma que R puede tener más agilidad para incorporar nuevas funcionalidades, aunque es posible que SAS lo haga en un entorno más testeado y controlado.

Servicios de soporte y comunidades:

R tiene una comunidad muy extendida y activa, pero no tiene un soporte técnico, SAS en cambio si dispone de soporte técnico. En la práctica del día a día, la amplia comunidad de usuarios de R (foros, consultas, recursos), suple con creces la  inexistencia de soporte técnico. Dicho esto, hay quien está más tranquilo teniendo un soporte técnico al otro lado de la línea que o bien te resuelve el problema o bien puedes "presionar" para que te una solución alternativa.




Capacidades de workflow:

SAS dispone en el modulo Enterprise Guide de una interfaz intuitiva para el desarrollo de flujos de procesos de tipo analítico. Existen diferentes herramientas basadas en R que permiten también el desarrollo de workflows (un ejemplo es Rattle), pero no han terminado de imponerse, ni de estar optimizadas. La experiencia demuestra que muchos procesos de tipo analítico no son soportados por los componentes de estas herramientas y por ejemplo en el caso de SAS la mayoría del código es SAS/BASE puro y se hace poco uso de los componentes predefinidos de Enterprise Guide.

Ecosistemas:

SAS dispone de toda una gama de herramientas en disciplinas cercanas al Data Science, como Business Intelligence, Dashboarding, Visualización de datos, Data Warehouse, ETL o Data Quality, que pueden integrarse con los procesos de data science (end to end), mientras que R es un lenguaje centrado exclusivamente en data science.

Integración con otros lenguajes y herramientas:

En lo relativo a integración con otras herramientas o lenguajes es posible que R le lleve la delantera a SAS. De entrada muchas herramientas de la comunidad open-source están integradas con R y es raro el software comercial de entornos analíticos que no ofrezca ya la integración con R. Lógicamente SAS también tiene integraciones y alianzas, pero quizás quede un escalón por debajo.

Licencias y costes:

Poco hay que decir en este aspecto: como es sabido R es open source y SAS un software comercial de costes elevados. Sería interesante ver qué pasa en cuanto a tendencias de uso si SAS bajara los precios. De momento ya ha liberado una versión free para temas de formación (SAS OnDemand for academics).

Existen planteamientos  en la línea de usar ambos, algo perfectamente asumible ya que R es gratuito. Hay instalaciones que emplean SAS para toda la gestión de datos (extracción de fuentes, fusión, limpieza, aplicación de reglas de negocio, consolidación, etc..) y le deja el dataset final preparado a R para que aplique el modelo estadístico y realice la presentación final. No es mal planteamiento, sobre todo teniendo en cuenta que nos puede hacer ahorrarnos las licencias de SAS/Enterprise Miner (modelos) que es la más costosa. Igualmente útil es conocer algunas equivalencias entre herramientas a nivel de código: Equivalencias SAS y R


Por último un curioso estudio  en el que se analiza la preferencia de SAS o R en base a los años de experiencia.


En este breve compendio hemos tratado los aspectos que consideramos más críticos, sirva este post como inicio a posibles comentarios que aporten aspectos o consideraciones no señaladas en este compendio y que puedan tener también relevancia en la selección de la herramienta de análisis de datos. Bienvenidas también las aportaciones acerca de otras herramientas (Phyton, Matlab, SPSS, SCALA, etc..).

7 comentarios:

  1. Hola me llamo Álvaro y me resulta muy bueno el blog, lo acabo de descubrir y es genial. Hace unos meses he comenzado a sumergirme en el mundo de SAS (habiendo conocido previamente R). El BI es algo que desconocía por completo y lo veo cada vez más necesario para las grandes corporaciones por no hablar de las oportunidades de trabajo que tiene. Como he dicho he descubierto todo esto recientemente y me quiero dedicar a este sector (laboralmente hablando). Donde podría encontrar documentación en español sobre SAS, Base, visual analytics,....?

    Un saludo

    ResponderEliminar
  2. Hola Alvaro, muchas gracias por escribir.
    Mandame un correo a juanvg1972@yahoo.es y te paso documentación de SAS y de B.I..
    Sobre SAS te recomiendo para meterte más a fondo este curso:
    http://www.emagister.com/programacion-sas-base-cursos-3006561.htm

    Un saludo,

    ResponderEliminar
  3. Hola Juan,
    También estoy interesado en material de SAS, sino te importa, te mando un e-mil solicitandolo. ¿Los cursos de SAS que comentas requieren un nivel inicial?
    Gracias,
    Rober

    ResponderEliminar
  4. Hola Juan,
    Tengo una consulta sobre SAS..que a ver si me puedes echar un cable.
    Estoy tratando de redondear (en múltiplos de 10) una variable de tipo continuo.
    He localizado la función round, pero esta solo me asila la parte entera.

    Sabes como podría hacerlo?

    Un saludo y muchas gracias!

    ResponderEliminar
  5. Entiendo que quieres obtener el múltiplo de 10 más próximo a el valor de la variable. Para ello:
    round(var/10)*10

    ResponderEliminar
  6. Buenas tardes Juan,

    Tengo una duda sobre obtener muestras aleatorias con un cierto número de registros en SAS.

    Un saludo y gracias!

    ResponderEliminar
  7. Puedes probar con el procedimiento: proc surveyselect:

    proc surveyselect data=tabla_entrada
    method = srs n = 100
    out = tabla_salida;
    run;

    http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/surveyselect_toc.htm

    Espero ye sirva!!

    ResponderEliminar