Mostrando entradas con la etiqueta Diseños intrasujetos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Diseños intrasujetos. Mostrar todas las entradas

jueves, 17 de julio de 2014

Transformación de datos I

Aunque ya hemos visto algo de transformación de datos aquí, aquí y aquí creo que el tema es importante por lo que merece la pena ahondar un poco más. En la mayoría de las ocasiones tendremos nuestros datos en bruto, es decir, una matriz de datos con todas las veces y condiciones por las que ha pasado el sujeto. Por dicha razón, tendremos que realizar ciertas operaciones que ordenen nuestros datos.

Esta matriz de datos puede servir de ejemplo para esto anterior, así que una vez que la bajes tendrás que cargarla:

data <- read.csv ("data.csv", header= T)
Si le echamos un vistazo a la matriz vemos que está compuesta por cinco variables:
  • X: número de ensayo.
  • Time: el tiempo que tarda el estímulo en aparecer una vez que el ensayo se ha iniciado. Como se puede ver este tiempo es siempre el mismo.
  • ResponseTime: el tiempo que tarda el participante en responder una vez que el ensayo se ha iniciado.
  • Correct: tecla que el sujeto debería presionar en ese ensayo.
  • Keypress: tecla que el sujeto presiona en ese ensayo.
  • Condición: condición del estímulo en ese ensayo concreto.
Lo primero que podemos hacer es crear una variable con el tiempo que el participante tarda en responder una vez que el estímulo ha aparecido (tiempos de reacción). Si la variable ResponseTime es el tiempo que se tarda en responder desde que el ensayo se inicia, y la variable Time es el tiempo que tarda el estímulo en aparecer, el tiempo de reacción al estímulo será igual a la diferencia entre ResponseTime y Time. Podemos, por lo tanto, crear una nueva variable dentro de nuestra matriz de datos con los tiempos de reacción. Para ello, podemos ejecutar la siguiente instrucción:

data$RTs <- data$ResponseTime-data$Time
Es posible que queramos analizar separadamente los ensayos correctos e incorrectos. Para ello sería conveniente crear una variable que nos dijera si un ensayo concreto fue correcto. En nuestra matriz de datos tenemos la variable Correct, tecla que se tiene que presionar para que el ensayo sea correcto, y la variable Keypress, tecla que el sujeto apretó. Por lo tanto un ensayo será correcto cuando la variable Correct sea igual a la variable Keypress. Podemos crear una nueva variable que tenga esto en cuenta con la función condicional ifelse():

data$ACC<- ifelse(data$Correct==data$Keypress,"correcto","incorrecto")
Con esta instrucción le estamos diciendo a R que cree la variable ACC (del inglés accuracy) dentro de la matriz de datos data. Si el valor de la variable Correct es igual al valor de la variable Keypress, ACC será igual a “correcto”. Por el contrario, si el valor de la variable Correct es diferente al valor de la variable Keypress, ACC será igual a “incorrecto”.
 
Pues esto es todo por hoy, en la siguiente entrada seguiremos con esto un poco más. 

miércoles, 18 de junio de 2014

Diseños intrasujetos y mixtos

Vamos a imaginar otro experimento con un diseño un poco diferente. Imaginemos que queremos conocer la importancia de ciertas áreas cerebrales en la memoria espacial. Para ello tenemos cuatro grupos de ratas a las que se les ha diseccionado una parte diferente del cerebro a cada grupo (Grupo1, Grupo2, Grupo3 y Grupo4). Además tenemos un quinto grupo a la que no se le realizo ninguna disección (Grupo5). El experimento consistía en tres diferentes fases. Se cronometra el tiempo (en segudos) que una rata tarda en recorrer un laberinto (Tiempo_1). Las ratas del grupo 1, 2, 3 y 4 fueron sometidas cirugía de disección, mientras que a las del grupo 5 se les sometió  a una pequeña cirugía, pero sin disección. Se volvía a cronometrar el tiempo que las ratas tardaban en cruzar el laberinto (Tiempo_2). En la siguiente tabla se puede ver la matriz de datos:


El diseño de este experimento es un poco diferente al anterior. Tenemos la variable intersujetos grupo, la cual toma cinco valores diferentes (los diferentes grupos). Por otro lado, tenemos la variable tiempo que es una variable intrasujetos (todos los sujetos pasan por las diferentes condiciones de esta variable) con dos niveles: Tiempo_1 y Tiempo_2. Este tipo de diseño recibe el nombre de diseño mixto. Vamos a introducir los datos en R.

Tenemos la variable cualitativa nominal Grupo. Como hemos visto anteriormente, introducirla en R es sencillo, pero tenemos que tener en cuenta que hay 4 ratas en cada grupo, por lo que la mejor opción es usar la función rep(): 

Grupo <- c(rep(1,4), rep(2,4), rep(3,4), rep(4,4), rep(5,4))
Una vez que hemos introducido la variable Grupo, tenemos que factorizarla. Como ya vimos anteriormente, la instrucción es la siguiente

Grupo <- factor(Grupo, levels = c(1,2,3,4,5), labels = c("Grupo1", "Grupo2", "Grupo3", "Grupo4", "Grupo5"))
Como en el caso anterior mediante la instrucción c(1,2,3,4,5) le hemos dicho a R los niveles o valores que tiene nuestra variable grupo. Un pequeño truco para simplificar es usar la siguiente instrucción c(1:5) que literalmente significa todos los valores entre 1 y 5. De esta forma, la anterior instrucción quedaría simplificada como sigue:

Grupo <- factor(Grupo, levels = c(1:5), labels = c("Grupo1", "Grupo2", "Grupo3", "Grupo4", "Grupo5"))
Ya hemos introducido la variable grupo. La siguiente variable es la variable Tiempo. Esta variable es numérica y tiene dos niveles: Tiempo_1 y Tiempo_2. Sin embargo, a diferencia de la variable Grupo, estamos ante una variable intrasujeto, ya que todos los participantes pasan por todas las condiciones de esta variable. Esto anterior lo tenemos que tener en cuenta en R: si miras la tabla anterior, en una variable intersujeto los diferentes niveles son colocados según las filas de la tabla, sin embargo, los diferentes niveles de una variable intrasujetos son colocados en diferentes columnas. De esta manera, nos aseguramos que todos los sujetos pasan por cada una de las condiciones de esta variable. Para realizar esto anterior en R, tendríamos que crear dos diferentes objetos en R: una con cada condición de la variable Tiempo. Así para Tiempo_1 seria:

Tiempo_1 <- c(20,22,19,22,25,20,23,22,19,25,22,24,22,23,21,20,24,22,23,18)
Y para tiempo tiempo_2:

Tiempo_2 <-c(18,18,20,19,22,13,12,15,17,16,19,20,17,12,19,13,14,12,11,9)
Una vez hecho esto, pasamos a crear nuestra matriz de datos

Datos <- data.frame(Grupo, Tiempo_1, Tiempo_2)
Un pequeño apunte: en este caso, y a diferencia de lo que vimos en la entrada anterior, hemos factorizado la variable grupo antes de introducirla en la matriz de datos. Esto es todo por hoy. 

PD: Si quieres descargar el script que hemos usado, haz click aquí