miércoles, 10 de diciembre de 2014

Algunas consideraciones sobre ggplot2

Antes de continuar con otros gráficos, es necesario tener en cuenta algunas consideraciones sobre el paquete ggplot2. Imaginemos que queremos estudiar un efecto muy conocido en la literatura de procesamiento numérico: el problem size effect. Este efecto muestra que somos más rápidos en resolver operaciones pequeñas (ej.: 3+5) que operaciones grandes (ej.: 22+ 7). Imaginemos que 20 participantes han realizado una tarea de sumas. Las sumas podían ser de una cifra (problem size pequeño) o de dos (problem size grande). Los resultados están en la matriz problem_size, asi que lo primero que haremos es cargar la matriz de datos. 

problem_size <- read.csv("problem_size.csv", header=T)

Una vez que hemos cargado nuestra matriz, podemos ver que en la primera columna tenemos a cada sujeto (esta columna es prácticamente irrelevante). En la segunda columna tenemos los resultados de cada sujeto para las operaciones de una cifra y en la tercera los resultados para las operaciones de dos cifras. Estamos ante un diseño intrasujeto, ya que todos los participantes pasan por todas las condiciones del experimento. Cada columna en la matriz de datos representa cada una de las condiciones (pequeña y grande) de nuestra variable independiente (problem size). Este tipo de matriz recibe el nombre de matriz de formato ancho (wide format). Un ejemplo lo podemos ver en la siguiente matriz. 

Cuando realizamos  un gráfico usando  el paquete ggplot2, tenemos que tener en cuenta que siempre representaremos la relación entre dos variables de nuestra matriz. Sin embargo, en este caso, nosotros no queremos representar la relación entre  las condiciones peque y grande, sino que queremos representar la relación entre la variable condición (peque y grande) y el tiempo empleado en resolver el problema. Por lo tanto lo primero que tendremos que hacer es modificar la matriz de tal forma que en una columna aparezca la variable condición y en una segunda columna la variable tiempo. Ya que nuestro diseño es intrasujeto, cada participante aparecerá en dos filas diferentes: una para la condición pequeña y otra para la grande. En resumen, nuestra nueva matriz tendría que ser en formato largo (long format) que es como la que se presenta en la siguiente imagen.


Para convertir nuestra matriz a formato largo, tendremos que bajar e instalar el paquete reshape.

install.packages("reshape")
library(reshape)

Volviendo a nuestra matriz problem_size, si queremos transformarla en formato largo crearemos una matriz llamada problem_sizeM y usaremos la función melt() para reesctructurar el contenido de la matriz en formato ancho problem_size. La forma general de esta función es como sigue:

DatosM <- melt(datos, id= c("variables constantes", measured = c("variables que cambian en cada columna"))

En id tendremos que especificar aquellas variables que no cambian entre columnas. En nuestro caso sería el número de sujeto, ya que esta variable es constante para cada participante. En nuestro caso tendríamos que añadir id= "sujeto". No tenemos que usar la función c() puesto que solo tenemos una variable constante. En segundo lugar, en measured tendremos que especificar las variables que varían en diferentes columnas o, dicho de otra manera, las diferentes condiciones de nuestra variables intrasujeto. En nuestro caso, tenemos la variable intrasujeto tamaño con dos niveles peque y grande. Por lo tanto, tendríamos que añadir measured = c("peque", "grande"). En resumen, la instrucción seria:

problem_sizeM <- melt(problem_size, id= "sujeto", measured = c("peque", "grande"))

De esta forma ya tendríamos nuestra matriz de datos transformada en formato largo. 

Click aquí para descargar la matriz de datos.
 

0 comentarios :

Publicar un comentario