Antes que se me olvidé, como muchas cosas que he aprendido y que al final termino dejando en el tintero. La función reshape() puede ser hallada en el paquete del mismo nombre: «reshape». Su uso tiene relación con la entrada inmediatamente anterior referida al Análisis de Varianza Mixto. La función es útil cuando se desea aplicar análisis a diseños de medidas repetidas.
En efecto, en cualquier análisis, la estructura usual de ingreso de los datos es como se ve a continuación:
sujetos | cond1ev1p5 | cond1ev2p5 | cond2ev1p5 | cond2ev2p5 |
1 | 19.3 | 18.3 | 20.5 | 20.3 |
2 | 16.8 | 17.0 | 17.8 | 18.0 |
3 | 21.0 | 18.3 | 22.0 | 21.8 |
4 | 19.5 | 16.0 | 22.3 | 22.0 |
5 | 19.0 | 18.0 | 20.0 | 19.5 |
6 | 16.8 | 17.8 | 19.5 | 18.8 |
7 | 20.0 | 19.0 | 24.8 | 24.8 |
8 | 21.3 | 19.0 | 21.3 | 21.8 |
Figura 1. Datos para medidas repetidas.
Es decir, para cada sujeto una fila y cada tratamiento o intervención en columnas, con los resultados de dicha intervención (los valores adoptados por la variable dependiente o medidas repetidas para cada sujeto en fila) en columnas.
Esta disposición, no obstante, no sirve para los análisis dispuestos en algunos de los paquetes de análisis de varianza y es necesario darle a dichos datos una configuración diferente. En concreto, lo que debiera ocurrir es que las medidas repetidas debieran ordenarse por sujeto en una misma columna, es decir, que se repetirán tantas filas como tratamientos para cada uno de los sujetos, del siguiente modo (sólo se dispone un segmento, después los datos se agregarían con la condición cond2ev1p5, etc. No se incluye todo porque los datos se extienden más allá de lo que es necesario exhibir):
sujetos | condic | value |
1 | cond1ev1p5 | 19.3 |
2 | cond1ev1p5 | 16.8 |
3 | cond1ev1p5 | 21.0 |
4 | cond1ev1p5 | 19.5 |
5 | cond1ev1p5 | 19.0 |
6 | cond1ev1p5 | 16.8 |
7 | cond1ev1p5 | 20.0 |
8 | cond1ev1p5 | 21.3 |
9 | cond1ev1p5 | 19.0 |
10 | cond1ev1p5 | 20.0 |
11 | cond1ev1p5 | 17.5 |
12 | cond1ev1p5 | 18.8 |
13 | cond1ev1p5 | 15.3 |
14 | cond1ev1p5 | 18.8 |
15 | cond1ev1p5 | 16.3 |
16 | cond1ev1p5 | 19.0 |
17 | cond1ev1p5 | 16.5 |
18 | cond1ev1p5 | 18.0 |
19 | cond1ev1p5 | 18.8 |
20 | cond1ev1p5 | 16.0 |
21 | cond1ev1p5 | 19.0 |
1 | cond2ev1p5 | 20.5 |
2 | cond2ev1p5 | 17.8 |
3 | cond2ev1p5 | 22.0 |
4 | cond2ev1p5 | 22.3 |
5 | cond2ev1p5 | 20.0 |
6 | cond2ev1p5 | 19.5 |
7 | cond2ev1p5 | 24.8 |
8 | cond2ev1p5 | 21.3 |
9 | cond2ev1p5 | 19.8 |
10 | cond2ev1p5 | 20.0 |
11 | cond2ev1p5 | 25.8 |
12 | cond2ev1p5 | 19.5 |
13 | cond2ev1p5 | 21.3 |
14 | cond2ev1p5 | 19.5 |
15 | cond2ev1p5 | 21.8 |
Figura 2. Datos estructurados con la función reshape
Evidentemente, el primer paso será descargar el paquete que lleva a cabo esta transformación. Lo instalamos yendo a la consola y escribiendo:
install.packages("reshape")
Una vez instalado, imagine que se tiene la base de datos de la figura 1 y que la hemos asignado al objeto llamado «concor» (porque corresponde a un estudio en donde primero se evaluaron concordancias). El objeto «concor» corresponde a un conjunto de datos estructurados como en la figura 1 original. Para hacer el análisis como corresponde, debemos transformar «concor» a una estructura como la que se observa en la figura 2. Para hacerlo las instrucciones son las siguientes:
concortrans <- melt(concor, id.vars="sujetos", measure.vars=c("cond1ev1p5", "cond2ev1p5", "cond1ev2p5", "cond2ev2p5"), variable_name="condic")
Como se observa la función para transformación es «melt()», luego los argumentos son:
nombre_objeto, o el nombre del objeto original que contenía los datos con la estructura tradicional y que en este caso era «concor».
id.vars=»sujetos», que define la columna que contendrá el número identificador de los sujetos (usualmente era la primera columna en la base original).
sujetos | d1ev1p5 | d1ev2p5 | 2ev1p5 | d2ev2p5 |
s001 | 26 | 22 | 17 | 15 |
s004 | 15 | 16 | 14 | 15 |
s005 | 23 | 19 | 16 | 16 |
s006 | 17 | 13 | 21 | 22 |
s010 | 19 | 20 | 22 | 22 |
s011 | 18 | 17 | 16 | 15 |
s012 | 19 | 18 | 19 | 18 |
s013 | 23 | 23 | 18 | 18 |
s014 | 17 | 19 | 22 | 18 |
Cabe señalar que con estas instrucciones, se obtiene una base para analizar medidas repetidas exclusivamente. Si se quiere incorporar una variable entre-sujetos, además de las variables de medidas repetidas, deben incorporarla como parte de las id.vars, así:
id.vars=c("sujetos","sexo")
donde sexo corresponde a una variable intersujetos, de tipo atributivo.
measure.vars=c(variable1, variable2, etc.), que corresponde a los nombres de las variables tratamiento y que se ordenan columna a columna, desde la izquierda a la derecha. Son las condiciones y que en este caso se ordenarán en una sola columna repitiendo al sujeto tantas veces como condiciones haya.
variable.name=»condic», que corresponde a la variable que contendrá la condición o nombre del tratamiento por el que pasan los sujetos. Esta es una variable que no existe en la base original, y se crea especialmente para indicar que esas son las condiciones por las que pasa cada sujeto, una vez reconfigurada la base. Puede tener cualquier nombre corto aceptable.
Se observa que en este conjunto de instrucciones, al nuevo objeto que contiene el conjunto de datos reestructurado, se le denomina»concortrans», como un derivado del original «concor». Los objetos sin embargo, pueden tener el nombre que el usuario desee.
Con la base así estructurada, ya puede aplicar un análisis de varianza mixto para medidas repetidas como el que se expone previamente.