El objetivo del ejercicio 4 es hacer las mismas cosas que en el ejercicio 3, de manera más compacta, y con más datos. También la idea es refinar un poco el análisis de los datos. Vamos a trabajar con el mismo tipo de datos que la vez anterior: puede repasar si quieren de qué se trataban los datos
Vamos a trabajar con 4 archivos de datos; descárguenlos aquí: archivo 1, archivo 2, archivo 3 y archivo 4.
Una vez descargados, tenemos que cargarlos con read.csv (o read.table). Como tienen detalles de formato, aquí va el código para levantarlos:
archivo1=read.table('input/080416_094310_094045_1_CCF.csv',sep=",",skip = 2,header = T)
archivo2=read.table('input/080516_093900_094045_2_CCF.csv',sep=",",skip = 2,header = T)
archivo3=read.table('input/080916_094942_094045_3_CCF.csv',sep=",",skip = 2,header = T)
archivo4=read.table('input/081116_094922_094045_4_CCF.csv',sep=",",skip = 2,header = T)y así para cada archivo. Tip: usar la tecla TAB para autocompletar el nombre del archivo. Evita errores y ahorra tiempo y frustraciones.
Atentti: ¿dónde descargaron los archivos? Los dejaron en una carpeta que se llama “input”? Repasen el uso de archivos y directorios del sesión anterior.
Ahora unimos todo en un solo data.frame, usando la función rbind():
datos=rbind(archivo1, archivo2, archivo3, archivo4)El data frame obtenido presenta varios detalles de formato. Para dejarlo a punto hay que:
datos$ID=factor(datos$ID)datos$trialType=factor(datos$trialType,labels=c("ejemplo","ensayo","test"))labels(datos$acierto)=c("No","Si")plyr, ggplot2 y reshape2. install.packages(c("plyr","ggplot2","reshape2"))plyr y ggplot2 en memoria.library(plyr)
library(ggplot2)aaply()? ¿A qué paquete pertenece? Lo mismo que ddply, sólo que opera sobre arrays, y devuelve arrays. Es del paquete plyr igual que ddplyqplot()? ¿A qué paquete pertenece? Permite graficar. Es del paquete “ggplot2”aes()? Tiene algo que ver con plotear, es de ggplot2Con los datos obtenidos, y usando ddply:
ddply(datos,"task",summarize,media=mean(RT,na.rm=T))ddply(datos,c("task","trialType"),summarize,media=mean(RT,na.rm=T))Crear un data frame que no tenga ensayos de tipo “ejemplo”. Trabajar sobre ese data frame a continuación. datosNoEjemplo=datos[!datos$trialType=="ejemplo",] Es equivalente a: datosNoEjemplo=datos[datos$trialType!="ejemplo",], dado que != significa no es igual.
Limpiar outliers de tiempo de reacción en los datos, esto es, quitar aquellos ensayos en que el tiempo de reacción es mayor a la media de todos los ensayos más 3 desvíos estándar, o menor a 200 ms (ver ejercicio 1), evaluando cada tarea por separado. Sugerencia: usar z-scores y mutate.
Agreguemos una columna de z-scores al data frame. Luego, usamos esa columna y la columna de RT para quedarme los outliers en un índice lógico. Luego, usando ese índice, me quedo con los que no son outliers.
datosNoEjemplo=ddply(datosNoEjemplo,c("task"),mutate,medRT=mean(RT),sdRT=sd(RT),zRT=(RT-medRT)/sdRT)
outliers=datosNoEjemplo$zRT>3 | datosNoEjemplo$RT<0.2
datosNoEjemplo_Sinout=datosNoEjemplo[!outliers,]Tip Nótese que un outlier “por arriba”, equivale a un z-score mayor de 3.
Las siguientes líneas de código dan error, o no hacen lo que se supone que tienen que hacer. Copialas, pegalas, ejecutalas, y corregilas.
library(lmerTest) Si no instalé antes la libería lmerTest, no la voy a poder cargar funcionar.ddply(datos,"task",mean(RT)) Falta el “summarize”, o “mutate”. Se puede llamar a la función sin esas palabras, pero la sintaxis es algo diferente, y no la hemos visto en clase.factor(datos$session, labels="1,2,3,4") #suponemos que los datos están en el data frame llamado "datos" En vez de “labels”, habría que indicarle con “levels”. Además, hay que usar la función c(). Sería levels=c(1,2,3,4)ddply(datos,"task","trialType",summarize,media=mean(RT)) Falta la función c(): c(“task”,“trialType”)levels(datos$struct)=c("ccv","cv")
ddply(datos,c("task","trialType"),summarize,media=mean(RT),sd(RT),zscore=(RT-media)/desv) __ ***
En este link se pueden encontrar las soluciones