Máximos y mínimos en R, cómo y dónde encontrarlos

Creo que es una buena práctica que mientras estemos realizando el análisis de datos, justo antes de meternos en faena y dar por válido un archivo de datos (en mi caso, un .CSV), exploremos los datos, para ver qué es lo que tenemos entre manos. Después del tedioso y poco reconocido trabajo de depurar una sentencia SQL que me incluya y seleccione los datos que quiero, tengo que asegurarme de que estos datos son de calidad: que no haya demasiados valores vacíos, y lo peor de todo, que no haya valores outlier.

Un valor outlier, o los outliers, son valores extremos y atípicos, numéricamente distantes del resto de los datos. Los valores estadísticos que calculemos serán erróneos, y no reflejarán la realidad. Como ejemplo, mi propia experiencia. Tras mucho esfuerzo he conseguido el fichero .CSV, así que lo primero que hago en R es:

patients <- read.table("research.csv", header=TRUE, sep=",")
attach(pacients)
sumary(patients)

Lo que me encuentro es lo siguiente:

Veo algunas variables que son claramente valores anómalos, como por ejemplo, peso, Hbglic y glucemia. Evidentemente, es difícil que nadie pese 670 Kg, o que alguien tenga un valor de Hbglic de 104.  El primer abordaje que hice fue identificar la línea donde estaba el valor anómalo:

max(peso)  # me da el valor máximo de esa variable, pero no me dice dónde está
[1]670
which.max(peso)  # me indica el 'index', para que pueda encontrarlo
[] 12

El problema es que sólo me da eso, el valor máximo (o el mínimo, en caso de usar la función which.min()). Debería ir uno a uno, y eso es bastante tedioso. Sin tener que recurrir a funciones creadas por el usuario, utilizaré lo siguiente:

which(peso>150)
[1]  12   219  386   688   1209   1729   2254

Sé ahora que en la líneas 12, 219, etc, tengo valores extremos, con el criterio que he indicado, que el peso sea mayor de 150.

Tras hallar las líneas con valores extremos, dependerá de mí si deseo eliminar toda la línea o corregir el valor. En casi todos los casos he corregido el valor, tras comprobar que se trataba de un error de escritura (por ejemplo, escribir 104 en lugar de 10,4), pero antes de modificar el valor tenía que asegurarme. En investigación, una de las cosas más importantes es ser honesto. No se puede realizar un análisis con datos falsos.

Conectar con una base de datos MySQL desde Python (I)

1480896754_pythonCuando programaba (aún lo hago) aplicaciones web, utlizaba las utilidades PHP para conectar con bases de datos y poder tener la interacción con los datos que me hiciera falta en ese momento. Nunca había pensado que MySQL se pudiera utilizar fuera de las aplicaciones web. Pues resulta que gracias a mi nueva tarea de doctorando, estoy obligado a extraer datos de un servidor MySQL, pero no desde el gestor PHPMyAdmin que uso habitualmente, sino desde consola. Ya he experimentado con la conexión vía bash, pero necesito algo más versátil, así que hoy pensé en Python.

Existen varias maneras de conectar Python con un servidor MySQL, como vemos en los comentarios de los usuarios de StackOverflow. Después de haber investigado algo más, y de probar yo mismo desde la consola con Python, me decantaré por las dos maneras más usuales: MySQLdb y mysql connector.

Continuar leyendo “Conectar con una base de datos MySQL desde Python (I)”

La Abadía del Crimen Extensum en GNU/Linux

1459205260_appliances_device_electronics-67Este fin de semana me despertaba con la agradable noticia de que al fin ha sido liberada la primera y esperada versión de La abadía del crimen Extensum, un remake del juego clásico de los años 80 (del año 87, para ser más precisos), La abadía del crimen.  Recuerdo haber jugado al original cientos de veces, si bien nunca llegué hasta el final. El laberinto se me resistió una y otra vez. Conocía todas las pantallas, y todos los recovecos, menos el laberinto. Más tarde mi Amstrad CPC 6128 fue sustituido por un PC 486DX2 y el juego pasó al olvido.

Amstrad CPC 6128. CPU y teclado y disquetera, todo en uno
Amstrad CPC 6128. CPU y teclado y disquetera, todo en uno

Continuar leyendo “La Abadía del Crimen Extensum en GNU/Linux”

Mi Raspberry Pi 2 (III): servidor de streaming

1456084125_CassetteAunque no haya sido una gran inversión, sí es cierto que es un juguete con el que hacer muchas más cosas y mucho más divertidas que con otros juguetes más caros. Dejando aparte la ironía, a lo que me quería referir es que, aprovechando que tengo mi flamante Raspberry Pi, quiero sacarle provecho de la mejor manera que sé: mediante el software libre.

Planear y sacar adelante cualquier proyecto con nuestra Raspberry Pi nos hace ser poco menos que Jedi ante nuestros conocidos: ¿Copias de seguridad de nuestras máquinas? ¿Servidor web? ¿Nuestra Nube privada? ¿Un media center barato?

Pues en esta línea sigo. Ahora le toca el turno a la puesta en marcha de un media server para escuchar música en streaming.

Continuar leyendo “Mi Raspberry Pi 2 (III): servidor de streaming”

Mi Raspberry Pi 2 (II): media center con Kodi

1456084125_CassetteComo ya comenté en el anterior post, mi intención es utilizar mi Raspberry Pi en todos los proyecto que se me ocurran (y que pueda soportar el dispositivo). Aparte del de hacer copias de seguridad, está el de convertirlo en un media center mejor que el que ya tengo. Para ello recurrí a los múltiples manuales que hay en Internet, y encontré en Malagueños originales y libres que en lugar de optar por Raspbian o OpenELEC (es decir, una distro multipropósito versus una distro dirigida a tener un media center), podríamos tener nuestra Raspberry Pi funcionando con una distro Raspbian, y sobre ella instalar Kodi. Kodi es como se conoce al antiguo Xbox Media Center” o XBMC, un centro multimedia (media center) de entretenimiento multiplataforma bajo la licencia GNU/GPL.

Continuar leyendo “Mi Raspberry Pi 2 (II): media center con Kodi”

Mi Raspberry Pi 2 (I): configuración básica

1456084196_raspberryPor fin me ha llegado mi Raspberry Pi 2. Aunque la configuración y puesta en marcha se hace muy rápidamente (aproximadamente un tarde, y sin tener que buscar mucho: hay multitud de manuales, tutoriales y vídeos circulando por ahí), no quiero dejar pasar la oportunidad de escribir los pasos que me han llevado a dejarla a mi gusto. Supongo que en los próximos días ampliaré este tema y escribiré más posts acerca de ello, ya que tengo pensamiento de darle más usos a mi Raspberry Pi, aparte de ser el Media Center que siempre he querido tener.

Continuar leyendo “Mi Raspberry Pi 2 (I): configuración básica”

Un netbook como servidor (IV)

1454291621_12-lan-connected-512x512La configuración wake on lan del ASUS EeePC 701 es un poco complicada, pero no imposible. Me ha costado un poco, sobre todo porque la única web que encontré al respecto estaba en francés. A continuación pondré los pasos que seguí para poder activar esta característica en mi netbook/servidor.

Activar la opción Wake On LAN en la BIOS

El notebook ASUS EeePC 701 no tiene esta opción en la BIOS, con lo que aparentemente es imposible activarla. Sin embargo, está escondida, por lo que sí se puede activar. Al iniciar el netbook, pulsamos F2 para entrar en la BIOS

IMG_8698

 

Continuar leyendo “Un netbook como servidor (IV)”

Un netbook como servidor (III)

Continúo con las pequeñas incidencias con las que me encontré al instalar un servidor GNU/Debian en un netbook. En el anterior post mencionaba la instalación del servidor SSH y asignar una IP fija y nombre de host reconocible y que pudiera recordar. Pero me encontré con algún problema más:

  1. Apagar la pantalla TFT o LCD, ya que no la voy a utilizar
  2. Evitar que entre en suspensión al bajar la tapa del netbook
  3. Configurar Wake on LAN en el netbook

Continuar leyendo “Un netbook como servidor (III)”

Un netbook como servidor (II)

1454273012_cloud-laptopDurante el tiempo que estuve configurando mi viejo EeePC 701 como servidor casero, me encontré con varios problemas que tuvieron su solución. Esto contrasta con la variedad de soluciones y tutoriales que circulan para montar un servidor en una Raspberry Pi. Cada portátil, laptop o netbook tienen sus peculiaridades, no siempre bien documentadas, por lo que hay que echarle imaginación, inventiva y paciencia para buscar en Internet la solución a un determinado problema.

Los pasos básicos que di para llegar a convertirlo en servidor están en esta entrada de 2011, pero que no se diferencia en prácticamente nada a la instalación que hice en mi propio netbook.

Continuar leyendo “Un netbook como servidor (II)”

Dual Monitor en XFCE

1433291097_Cinema_Display_Diagonal_blueDesde hace unos meses se me está haciendo difícil trabajar únicamente con dos monitores. No sé si es cuestión mía, porque soy un snob o porque sencillamente soy muy friki. El caso es que había visto en Youtube cómo es trabajar con dos monitores en paralelo, y la verdad es que ahora que los tengo, me siento maniatado cuando tengo que trabajar solamente con uno.

Distribuir las ventanas en dos o más monitores hace más versátil el uso que tenemos de nuestros equipos. Hay quien dice que es útil para los desarrolladores, dado que pueden tener la ventana de código en un monitor, y cualquier recurso de web en el otro (tutoriales, PDFs, visualizar vídeos de Youtube, etc.).

Lo normal es tener un monitor con la información principal, y otro con la información secundaria a lo que estemos haciendo. Las posibilidades son casi infinitas. Por supuesto, también se puede jugar en una pantalla expandida, pero no es mi caso.

Continuar leyendo “Dual Monitor en XFCE”