Anscombe’s quartet and the importance of graphing data

3 Jan

After reading about the Anscombe’s quartet, I felt like playing around with R.
Using the datasets package, it actually takes just a few seconds to check that the traditional statistical properties of the four datasets are quite similar:

> # Mean
> colMeans(anscombe)
 x1 x2 x3 x4 y1 y2 y3 y4
9.000000 9.000000 9.000000 9.000000 7.500909 7.500909 7.500000 7.500909
>
> # Correlation
> cor(anscombe$x1, anscombe$y1)
[1] 0.8164205
> cor(anscombe$x2, anscombe$y2)
[1] 0.8162365
> cor(anscombe$x3, anscombe$y3)
[1] 0.8162867
> cor(anscombe$x4, anscombe$y4)
[1] 0.8165214
>
> # Variance
> var(anscombe$x1)
[1] 11
> var(anscombe$x2)
[1] 11
> var(anscombe$x3)
[1] 11
> var(anscombe$x4)
[1] 11
>
> var(anscombe$y1)
[1] 4.127269
> var(anscombe$y2)
[1] 4.127629
> var(anscombe$y3)
[1] 4.12262
> var(anscombe$y4)
[1] 4.123249
>
> # Simple linear regression
> lsfit(anscombe$x1, anscombe$y1)$coefficients
Intercept X
3.0000909 0.5000909
> lsfit(anscombe$x2, anscombe$y2)$coefficients
Intercept X
 3.000909 0.500000
> lsfit(anscombe$x3, anscombe$y3)$coefficients
Intercept X
3.0024545 0.4997273
> lsfit(anscombe$x4, anscombe$y3)$coefficients
Intercept X
 9.399 -0.211

The datasets, however, don’t look similar when we graph them and we can clearly identify the outliers.

par(mfrow=c(2,2))
plot(anscombe$x1, anscombe$y1, xlab="x1", ylab="y1")
plot(anscombe$x2, anscombe$y2, xlab="x2", ylab="y2")
plot(anscombe$x3, anscombe$y3, xlab="x3", ylab="y3")
plot(anscombe$x4, anscombe$y4, xlab="x4", ylab="y4")

anscombe

What is the takeaway message from that? We should appreciate the value of data visualization and deep analytics.

Interesting MOOC related to Business Intelligence and Big Data

20 Dec

Getting started with Talend Open Studio Data Integration and PostgreSQL on Ubuntu

16 Dec

This is a very short guide that provides the essential steps to install PostgreSQL and develop a very simple job that loads some rows in a table.  TOS DI is an open source ETL tool like many others.

Installing PostgreSQL

  1. Install the server, the client and padmin3 (tool to configure the server easily).
    sudo apt-get install postgresql postgresql-client pgadmin3
  2. Connect to the server
    sudo -u postgres psql
  3. Create our first database using the template by default. I called it ‘movies’
    CREATE DATABASE movies TEMPLATE DEFAULT;
  4. Change the password of the user postgres:
    ALTER USER postgres WITH PASSWORD 'postgres';
  5. If you are a UI lover, you can continue using pgadmin3 from this point:
    pgadmin3 configuration

Creating a job with Talend Open Studio Data Integration

We are create for instance a job that loads data from a file and insert it in a table of our database.

  1. Download the Talend Open Studio for Data Integration. It might take time so meanwhile you can take a look at the Talend Help Center. Once it’s downloaded, install it following the installation guide and the steps to install xulrunner.
  2. Open TOS DI and create a new job.
    newjob
  3. From the right panel, drag and drop a tFileInputDelimited component.
  4. Change the properties of the input component.
    • Select the file that is the source of your data and, in my case, I also changed the field separator.
    • Select the file that you are going to use as input.
    • Define the Schema of the input. In my case the text file contains only two fields.
    • In my case, I also changed the field separator to \t.
      fileinputdelimited
  5. From the right panel, drag and drop a tPostgresqlOutput component.
  6. Connect the two of them: right click on the input component -> row -> main and click on the output component.
    job
  7. Change the properties of the output component:
    • Define the parameters to connect to the database.
    • Editing the Schema we will check that the changes that we did in the input component have been propagated to the schema of the output component.
    • In the advanced settings tab we can uncheck the ‘Use batch size’ option to get more accurate exception error messages. Otherwise the message might be “Call getNextException to see the cause”
      tPostgresqlOutput
  8. Run the job (F6) and if you didn’t make any mistake, the rows will be in the created table. We can check that the table has been created and the information is there either with pgadmin3 or with the command-line client (psql):
\connect movies
select * from "ED_I_Actors";

Experiencia en la Glasgow Caledonian University

11 Jul

Tras pasar 9 meses en estudiando en el Reino Unido, tengo que relatar esta experiencia para los alumnos de la Universidad de Granada que quieran ir de intercambio a la Glasgow Caledonian University. Intentaré no repetir la información que han dado los compañeros que han estado allí otros años y aportar mi punto de vista.

Choque cultural

Como cada vez que nos desplazamos a un país, tendremos un pequeño choque con la cultura del lugar. En este caso Escocia (y el Reino Unido en general) no es demasiado diferente de España, aunque hay cuatro grandes diferencias con España:

  • El clima: no es extremadamente frío en invierno, pero es frío durante todo el año. La ventaja de llegar en septiembre es que te irás acostumbrando para el invierno. El último año tuvimos tres importantes nevadas, pero no duró demasiado tiempo la nieve y no es algo normal.
  • La comida: la comida es bastante diferente y, en mi opinión, bastante pobre. Es algo que todos los estudiantes echan bastante de menos.
  • Los horarios: allí los horarios son europeos: trabajan en jornada continua y a las 5 (en los pueblos) o a las 6 (en las ciudades) suelen cerrar las tiendas. Los supermercados suelen abrir hasta las 10 y se abre también sábados por la tarde y el domingo (aunque cierran aún más temprano). Las tiendas suelen abrir el jueves hasta un poco más tarde por una razón que ni la propia gente de Glasgow conoce.
  • El idioma: obviamente en Escocia se habla inglés y suelen tener poco conocimiento de otros idiomas. Si no vas como un buen nivel de inglés, al principio te será muy pesado y en Glasgow lo hablan con un acento particularmente difícil, pero poco a poco vas comprendiendo más.

Continue reading

Autodescargar subtítulos de Subtitulos.es

2 Oct

Las instituciones educativas suelen estar preocupadas porque sus estudiantes visiten sitios tan peligrosos como blogs de diarios españoles y páginas de subtítulos, por lo que en Escocia no tengo acceso a TVSubtitles, la página de donde solía autodescargar subtítulos.

Para no tener que descargarlos manualmente, he creado un script en Python que los autodescarga del sitio español subtitulos.es, donde también suele haber subtítulos en inglés y en otros idiomas.

El script es muy simple y y tiene la gran desventaja de que descarga todos los capítulos de la temporada que le indiquemos, no sólo los más nuevos o los de un único idioma. Para incluir las series que desees, únicamente tienes que subtitulos los valores de la lista que hay al principio del código. El código de cada serie lo puedes ver en subtitulos.es.

Sobre los parámetro empleados al ejecutar wget:

  • Para conserver el nombre del archivo que nos envía el servidor en las cabeceras HTTP, empleo –content-disposition permit
  • Para evitar la protección contra hotlinking del servidor, utilizo –referer=”http://www.subtitulos.es”
  • Para que no sobreescriba los ficheros, empleo -nc

Continue reading

¿Ryanair o EasyJet?

22 Sep

Ryanair se ha convertido en la aerolínea que realiza más desplazamientos en España, destronando a Iberia, gracias a sus ofertas y a sus técnicas de marketing. Para aparecer en los medios se siven de las polémicas, como cuando utilizaron de forma ilegal la imagen de la Carla BruniZapatero para su publicidad, cuando convocaron una manifestación contra Iberia en la que regalaban billetes o realizando declaraciones inapropiadas.

A pesar de ser fundada hace sólo 15 años, EasyJet se ha convertido en la compañía de Reino Unido que transporta más pasajeros, convirtiéndose en la segunda compañía europea de bajo coste tras Ryanair.

Pero, ¿qué diferencias hay entre ambas? ¿cuál es la mejor?

Precio

Ambas aerolíneas son consideradas de bajo coste (‘low cost’), por lo que cuando alguien se decanta por emplearlas normalmente es debido a que el precio es una característica significativa para él.

Mi experiencia es que Ryanair es mucho más barato para ofertas de viajes dentro de unas fechas limitadas, mientras que EasyJet en ocasiones ofrece mejores precios para viajes planificados a largo plazo y merece la pena si queremos facturar equipaje. En todo caso, siempre hay que comparar los precios finales para evitar los cargos ocultos, de los que hablaré a continuación.

Continue reading

Evitar un firewall con Pidgin

15 Sep

Algunas empresas e instituciones filtran mediante un firewall pgran parte del tráfico, por lo que algunos clientes de mensajería instantánea no funcionan.

Pidgin es un cliente de chat y mensajería instantánea multiplataforma (puedes emplearlo en GNU/Linux, Windows, Mac OS…) y multiprotocolo (puedes conectar a Gtalk, Live, Yahoo, Skype, Facebook chat…).  A continuación explico la configuración que he utilizado para poder conectar a las redes de mensajería instantánea de Gtalk, Live Messenger (anteriormente MSN) y Facebook, sin tener que emplear ningún proxy.

Aunque el título de este post indica que la configuración es para Pidgin, todo lo descrito para este cliente debería ser aplicable para el resto de clientes que usan también la librería libpurple: Adium, Proteus, Meebo, Empathy y QuteCorn. Continue reading

Hello Glasgow!

7 Sep
Glasgow

Foto por Jan Zeschky. Licencia CC-by-nc

Esta entrada y está programada y, si todo ha salido bien, ahora mismo debería estar en Glasgow (Escocia), preparándome para estudiar Computing (Web Systems Development) como alumno de intercambio.

Será un año duro en un país con un clima tan diferente al nuestro, pero espero que merezca la pena para poder estudiar lo que más me gusta.

Descomprimir ficheros zip en Django

5 Sep

Para un nuevo proyecto en el que me estoy embarcando, he tenido que hacer un script que permitiese subir archivos zip en Django y los descomprimiese. Tras un inicio dubitativo, me he puesto a buscar alguna aplicación o código que ya trajese esta opción hecha y al final he terminado haciendo una mezcla entre código obtenido de django-photo-albumseste trozo de código publicado en DjangoSnippets.

El script escribe el fichero enviado por un formulario POST en disco, comprueba que el fichero es efectivamente un zip y que no está corrupto y lo descomprime, almacenando su contenido en la ruta MEDIA_ROOT configurada en el fichero settings.py del proyecto.

Es bastante simple, pero espero que pueda servir de ayuda a alguien y, sobre todo, que alguien me pueda sugerir mejoras para incluirlas luego en el proyecto.

Continue reading

Follow

Get every new post delivered to your Inbox.

Join 173 other followers