Lectura de la lección

Anuncio
(1.1) Sobre R, costos & beneficios
¿Qué es el R?
En la página del R-Project se lo describe como un ambiente de computación estadística y gráficos.
Lo que esto implica es, por un lado, un set de herramientas de alta calidad para trabajar con datos,
estadística y gráficos, y por otro, un lenguaje de programación simple y efectivo con los recursos
necesarios para desarrollar cualquier tipo de análisis. La palabra ambiente intenta caracterizarlo como
un sistema coherente y planificado.
R tiene su origen en el paquete estadístico comercial S, desarrollado por John M. Chambers en los
laboratiors Bell, y por lo tanto guarda muchas similitudes con este, incluyendo la sintaxis y muchos
comandos. Su nombre deriva de esta herencia y de los nombres de sus "padres", Ross Ihaka y Robert
Gentleman. Actualmente esos desarrolladores trabajan en el proyecto R, junto con otros profesionales
en el colectivo "R Development Core Group" (Grupo Núcleo de Desarrollo de R). Actualmente R
compite fácilmente en calidad con cualquer opción comercial.
Por último pero no por ello menor, R es parte de la Fundación de Software Libre (Free Software
Foundation]) y es distribuido bajo la licencia GPL del proyecto GNU. Esto implica que R es gratis y
además de código abierto, es decir, cualquiera puede ver "qué hay adentro". En este sentido está en
contraposición con el modelo estándar del software comercial, en el que cada programa es como una
"caja negra" que produce salidas (outputs) a partir de entradas (inputs) sin mostrar los pasos
intermedios. En la práctica esto se traduce en un un software construido en colaboración por una lista
siempre creciente de contribuyentes. Testimonio de esto es el crecimiento exponencial de la cantidad de
paquetes (módulos adicionales especializados en diferentes tareas) aportados por la comunidad global
de usuarios (Fig. 1).
R se ha convertido en una de las herramientas más utilizadas en estadística y análisis de datos, siendo
particularmente popular en data mining. Por esta razón, es un candidato interesante a convertirse en la
"lingua franca" de la estadística, si es que ya no se puede considerar como tal.
Figura 1. Cantidad de paquetes listados en el sitio web del Comprehesive R Archive Network
(CRAN). Nótese que el eje y está en escala logarítmica.
Costos y beneficios de aprender R (en relación a otras opciones)
La iniciación en el mundo de la programación, sea con R o cualquier otro lenguaje, suele ser un
proceso lleno de tropiezos, los cuales tienden a ser frustrantes. Una de las características más notorias
de los lenguajes de programación, para quienes tienen una formación alejada, es la exactitud que los
mismos exigen al usuario. Nótese que en la comunicación natural cotidiana, e incluso mediática, se
suele hablar con muchas de impresiciones y ambigüedades, por lo tanto no es raro que los lenguajes de
programación sean difíciles y antinaturales.
Este problema con la exactitud es ilustrado con los siguientes 3 comandos, los cuales no
son aceptados por R:
plot(sort(rnorm(200)), pch=8,
ylab="Variable Gaussiana")
col=red,
xlab="Rank",
plot(sort(rnorm(200)), pch=8, col="red", xlab="Rank"
ylab="Variable Gaussiana")
plot(sort(rnorm(200)), pch=8, col="red", xlab="Rank",
xlab="Variable Gaussiana")
Y sin embargo el siguiente comando sí está escrito correctamente:
plot(sort(rnorm(200)), pch=8, col="red", xlab="Rank",
ylab="Variable Gaussiana")
Se invita al lector a que pruebe estos comandos en la consola, lea los mensajes de error
resultantes y detecte las fuentes de error en los primeros tres casos
Una consecuencia de esto es la aparente tendencia de R de no hacer lo que en verdad se desea. Por
supuesto, el problema es que R intenta hacer exactamente lo que le pedimos. Debido a que R funciona
principalmente a través de la línea de comando, muchas veces minúsculos errores de escritura, tales
como un punto o un paréntesis mal ubicados, cambian por completo la interpretación de una
instrucción.
Es cierto que esto ocurre también con la comunicación verbal cotidiana, pero como humanos podemos
elegir en la mayoría de los casos, conciente o inconcientemente, el significado más probable de ser
correcto (Fig. 2).
Figura 2. Ejemplo de un diálogo humano. R, o una computadora en genreal, pasaría un mal rato
descifrando el significado de las palabras "briyantina" o "güenazo"
La ocurrencia de estos "trancazos" puede ser muy frustrante y por eso la paciencia es una virtud
necesaria. Esto contrasta con los programas que hoy en día son más comunes: aquellos con interfaces
gráficas elaboradas, desarrollados para ser más fáciles e intuitivos de usar.
Entonces el uso y particularmente el aprendizaje de R tiene un costo asociado: dedicación y memoria
para incorporar este lenguaje y realmente "hablar R". Pero la contraparte de este costo es una enorme
versatilidad para poder desarrollar, controlando hasta el más mínimo detalle, cualquier análisis ajustado
a la medida de nuestras necesidades. Existen además beneficios indirectos: la necesidad de involucrarse
e informarse mejor acerca de lo que se está haciendo lleva a una mayor comprensión técnica, así como
ser una posible "vía de entrada" a otros lenguajes de programación.
En el otro extremo de la oferta de programas hechos para trabajar con datos están aquellos puramente
gráficos, tales como STATISTICA o el propio Microsoft Excel. La ventaja de estos programas es la
facilidad de uso y su interfaz más intuitiva. El costo asociado a estas características es una limitación
mayor a la hora de combinar las distintas funcionalidades. En particular, el uso de una GUI (Graphical
User Interface) requiere del input constante del usuario, en contraste con la capacidad de automatizar
largas secuencias de comandos que implica el uso de la línea de comando. De hecho este costo es tan
elevado que la mayoría de los paquetes estadísticos populares tienen al menos en parte la capacidad de
interactuar a través de la línea de comando.
Las diferencias de fondo que existen entre las interfaces de GUI y CLI (línea de comando, interfaz por
excelencia de R), se pueden representar en la curva de aprendizaje esperadas para ambos estilos. Para
un sotware con GUI estricta, la curva de aprendizaje es inicialmente muy empinada, mientras que a
plazos mayores perdería velocidad. En contraposición, la curva de aprendizaje de un software como R
es lenta inicialemnte, pero a largo plazo las posibilidades de combinar y automatizar procesos permite
una versatilidad mucho mayor y por lo tanto un mayor potencial creativo (Fig. 3).
Por lo tanto aprender R es una apuesta a largo plazo. No se trata de una "memorización" de funciones y
comandos, si no de entender las reglas y patrones generales que gobiernan la sintaxis. Este curso tiene
el desafío de facilitar este proceso y así reducir al máximo posible los tiempos para que cada estudiante
logre usar efectivamente este software.
Para el caso de R existe una serie de GUIs buenas que pueden ayudar a empezar a usar R a los recién
iniciados. El caso más básico y tal vez el más conocido es el del R-GUI que viene por defecto en la
instalación de R para Windows. Otros GUI como RStudio son bastante más elaborados. Este último es
el escogido para este curso debido a ciertas facilidades que lo hacen bastante ameno para propósitos
pedagógicos.
Figura 3. Curvas de aprendizaje idealizadas para softwares con perfiles opuestos: GUI y CLI (R)
Algunos consejos
Usar la documentación permanentemente
La documentación de R suele dar muchos dolores de cabeza, sobre todo al principio. Pero es uno de los
puntos claves a dominar para cualquier usuario de este lenguaje. Por otro lado, es una documentación
muy buena y completa; hasta los usuarios más experientes recurren a ella todo el tiempo.
Por lo tanto, no debe dudarse en utilizar el comando help para consultar sobre el uso de la función
que le está generando problemas. De hecho help tiene dos modos de uso, por ejemplo los siguientes
comandos producen el mismo resultado:
help(mean)
?mean
Estos comandos abren la página de ayuda de la función mean (para calcular promedios).
De particular ayuda es la función help.search de R, la cual se puede abreviarse como "??". Dicha
función sirve para buscar funciones que tengan alguna relación con una palabra clave que nos interesa.
No es necesario saber de antemano el nombre de la función que queremos, de forma que sirve como
"tanteo" de las posibilidades que existen. Algo así como un "google" para R y bien usado es una
herramienta muy poderosa. Por ejemplo, si queremos encontrar una función relativa al chi cuadrado,
podemos utilizar cualquiera de estos dos comandos:
help.search("chi")
??chi
En las lecciones sobre la ayuda del R volveremos a explicar esta función y otras relacionadas, así como
el uso de la comunidad global de usuarios para encontrar las soluciones que necesitamos.
Mensajes de Error y de advertencia
Los mensajes de error y de advertencia son otra fuente de aprendizaje, sin embargo suelen producir más
miedo y frustración que sentimientos positivos ... De todas formas es conveniente aprovecharlos, ya
que el sistema de reporte de errores de R es bastante sofisticado y suele dar nociones muy útiles para
detectar los problemas. Cuanto antes se acostumbre uno a leer y entender estos mensajes, más rápido y
liso es el camino a recorrer. Algunos de los videos y lecciones de este curso se van dedicar a cómo
aprovechar al máximo estos mensajes.
La práctica hace al maestro
El aprendizaje de R es más útil y rápido si el usuario lo utiliza de forma cotidiana y aplica paciencia y
esfuerzo en sortear los obstáculos que se le presentarán en esta empresa. En general es cierto afirmar
que una vez resuelta una dificultad o un problema, el tiempo dedicado a resolverlo en futuras
incidencias del mismo problema es ínfimamente menor. Además el exponerse a distintos códigos y
tareas estimula la creatividad, que es un componente fundamental de la programación productiva.
Resumen
R es un ambiente de computación estadística y gráfica. Esto implica no sólo una amplia serie de
funcionalidades para trabajar y visualizar datos, si no también un lenguaje de programación de alto
nivel (i.e.: más amigable que otros lenguajes de programación) sumamente funcional. Si bien su origen
está en un producto comercial, se ha convertido en una de las banderas del Software Libre y por lo
tanto es beneficiado por un crecimiento constante de aportes de todo el gobo.
Si bien el aprendizaje de R supone un costo importante en tiempo y memoria que debe hacer cada
usuario, las capacidades del mismo, así como popularidad y versatilidad de este software, indican que
esta es una inversión de enorme retorno a largo plazo.
El proceso de aprendizaje de R es más efectivo cuanto más dedicación tenga el principiante,
posibilitando un ahorro de esfuerzo y tiempo a futuro sustancial. En particular animamos a que todo
principiante juegue, experimente y lea R por su propia cuenta.
Descargar