Bienvenidos al sitio

El espacio está destinado a aquellos que están interesados en la metodología de la investigación social y sus aplicaciones, especialmente profesionales, estudiantes e instituciones que requieren apoyo en estas áreas. También pretende enriquecer la comunicación con alumnos, tesistas y colegas. Sean bienvenidos a establecer contacto conmigo para hacer críticas, sugerencias y compartir ideas o pensamientos.

Pablo Cáceres Serrano

La función reshape en el programa R

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.

 

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>