Un buen libro para aprender R

Esta primavera del 2020 circuló en México una lista de libros de libre acceso que la editorial Springer puso a disposición del público. En esa lista encontré A Beginner’s Guide to R de Alain F. Zuur, Elena N. Ieno y Erik H.W.G. Meesters. Un libro que necesitaba haber descubierto antes.

Su objetivo es que el lector aprenda R; parte de un poco de historia sobre este lenguaje de programación con enfoque estadístico, ayuda a instalar el programa, explica de una manera muy amplia y ejemplificada cómo importar y manipular datos; tiene un capítulo dedicado a la función plot y a algunos de los parámetros básicos de esta función con los cuales ya se puede hacer gráficas llamativas, aparte otro donde se abunda en las opciones para obtener justo la gráfica que te imaginas; introduce las funciones a través de ciclos (loops) y de condicionales para facilitarte la vida.

Muestra todo esto a partir de ejemplos que cada lector puede reproducir a partir de un conjunto de archivos que se encuentran en la página www.highstat.com, (o en este repositorio de github) y de ejercicios en donde aprenderás a hacer 32 gráficas a partir de un sencillo código, cada una con su título particular.

A diferencia de otros títulos que intentan enseñar estadística a la par, éste tiene el objetivo más sencillo de enseñar R, con lo cual se gana mucha claridad. La forma amena en la que se presenta el material es un incentivo adicional muy bienvenido.

Es parte de la serie Use R! que consta de 71 volúmenes dedicados a practicantes de R en diversas áreas de conocimiento; la serie cuenta con títulos como A Political Analysis using R, Biostatistics, Solving Differential Equations with R e incluso libros dedicados a paquetes específicos como ggplot2 (muy bueno aunque esos no están de libre acceso).

Desde el año 2011 existe un entorno de desarrollo integrado libre y de código abierto para trabajar con R llamado RStudio. Cabe señalar que el libro fue publicado en el 2009. Esto no implica que haya partes oscuras a la hora de leer el texto, por el contrario, ayuda a entender mejor las ventanas de la interfaz y su ambiente gráfico.

En resumen, no se debe perder la oportunidad de descargar este libro para comenzar como todo un profesional con la programación en R.

Configuración de celular android como webcam

Hace unos 5 años instalé Linux Mint a mi computadora y quedé encantada porque reconocía todo el hardware, desde el bluetooth hasta la pantalla touch, a partir entonces he usado esa distribución de linux.

No identifico en qué momento exactamente dejaron de funcionar el bluetooth y la webcam. He hecho muchos intentos de habilitar ambas cosas y mis esfuerzos no han dado buenos resultados.

Ahora, a inicios del 2020 que son tan utilizadas las videoconferencias se me ocurrió ponerle una webcam externa, me puse a ver las opciones y las que menos cuestan no tienen buena calidad, y las que sí tienen una definición decente están mucho más caras. Pensén en buscar la forma de que la cámara de mi celular funcionara como webcam, y no soy la primera quien piensa en esa solución, ¡qué bueno!

Parece tan sencillo como bajar una aplicación en el celular, yo baje Droidcam y luego en la compu seguir unos pasos detallados en esta página. Según entiendo, con los comandos indicados ahí, se logra montar la cámara del celular a algún dispositivo de video, pero cuando corrí en la terminal:

~ $ droidcam

Aparecía un cuadro diciendo que no reconocía ninguna unidad de video. Había algo más que hacer. Siguiendo los errores uno por uno, llegué a esta otra página, donde se explica como montar una unidad de video.

~ $ mknod /dev/video0 c 81 0

Después de ese comando hay otras instrucciones qué seguir. Desinstalé la instalacion de Droidcam que ya había hecho en la computadora, borrando a mano el folder que se descarga, seguí los pasos de nuevo y ahora, en vez de $ droidcam nada más, puse

~ $ sudo droidcam

Tuve que reiniciar la compu para que software como Skype, Hangouts, zoom, cheese o guvcview reconocieran mi nueva cámara web. Fue más tortuoso de lo que aquí se refiere. Ahora creo que podría incluso hacer funcionar la webcam que ya trae la máquina, aunque tal vez no tiene caso, seguro tiene mejor resolución la cámara del celular.

La siguiente misión es habilitar el bluetooth.

Datos patológicos

Así es, muchas veces los datos presentan patologías; estás pueden ser de dos tipos:

  1. de contenido: entradas duplicadas, datos atípicos, valores nulos, o
  2. de formato: extraño uso de mayúsculas, o espacios de más.

En esta entrada veremos la amplia gama de detalles de contenido que aparecen en las bases de datos de la vida real, y de qué manera se pueden abordar esos problemitas. Todo esto forma parte del pre-procesamiento de datos.

Sin duda manipular cadenas de texto puede parecer tedioso a primera vista, pero es un arma muy poderosa para un científico de datos; con esta manipulación se atacan problemas de formato, y se crean scripts que permitan obtener la información necesaria de los datos crudos.

A veces uno se imagina los datos acomodados en tablas, ahí están los datos sólo esperando que uno saque gráficas, regresiones, clusters… sin embargo muchas veces los datos tienen diferentes formatos, y hay que extraer los que puedan ayudar a encontrar el “panorama tan anhelado”

Para identificar patologías se pueden recurrir a buenas prácticas como mirar directamente a los datos, ver cómo están conformados, qué tipos de datos hay; si existe documentación disponible, es recomendable leerla; tener a la mano una lista de preguntas que hacer sobre la base de datos: ¿qué contiene cada columna?, ¿qué identificadores se encuentran en cada tabla? Por último, se recomienda rectificar varias veces que la información que tenemos de los datos coincida con lo que estamos obteniendo.

Las patologías de contenido son:

  1. Entradas duplicadas. A veces las entradas dobles son importantes de alguna manera en la vida real. El procedimiento en este caso es hacer otra columna que contenga sólo las entradas únicas.
  2. Entradas múltiples para una sola entidad. Esto sucede de manera más frecuente cuando es una columna la que cambia constantemente; puede suceder también que haya diferentes procesos unidos a una sola forma de identificarlo, a veces la información sobre cada proceso está en alguna otra columna o tabla.
  3. Entradas faltantes. Suceden porque hubo alguna característica en las entidades que sacó los valores del conjunto de datos, o porque nunca fue recolectada esa parte de la información.
  4. Valores NULL. Estos valores generalmente dicen que no conocemos una parte particular de la información sobre una entidad y no pueden ser procesados por muchos algoritmos a la hora de hacer el análisis, en este caso es necesario cambiar esto valores por alguna aproximación adecuada, quizá la media de los valores no nulos. Otras veces es una característica importante y aporta información sobre los procesos descritos en las tablas, tal vez no hubo tales procesos.
  5. Datos atípicos grandes. Los atípicos a veces están porque realmente existieron, pero depende mucho del concepto. En el contexto de tráfico en una página web, un dato atípico puede significar un ataque de bots. Otras veces se trata como datos inexistentes. A veces los sistemas de almacenamiento no permiten tener valores NULL y lo que ponen es valores arbitrarios
  6. Datos expirados. En las bases de datos, cuando una entrada es registrada, también queda anotado el timestamp, es decir, el momento preciso en que se captura la información, cuando se actualiza la entrada no se sustituye sino se crea otra con el tiempo adecuado. Entonces hay bases de datos con mucha información de sobra, a menos que se quiera estudiar la historia de la misma.
  7. Entradas artificiales. A veces se crean escenarios artificiales para hacer pruebas.
  8. Espacios irregulares. Muchos algoritmos que procesan datos asumen que los datos se recuperan en un intervalo de tiempo constante por lo que se identifica un problema cuando los datos no se presentan con este patrón. En caso de que hagan falta valores suele hacerse una interpolación para recuperar los datos inexistentes.

Limpiar los datos es una parte de la ciencia de datos en donde más código se desarrolla. Es una parte donde usarás mucho la creatividad y será necesario experimentar; es el momento para entender los datos, y seleccionar los que te ayudaran a sacar las mejores conclusiones según lo que se busca.