grafica.likert.fnc

Copia, Pega y Adapta

grafica.likert.fnc(pisaitems, variables=2:12,

titulo='Titulo que desees')

grafica.likert.fnc(pisaitems, variables=2:12,

que.factor='CNT')

Objetivo

Utilizando las librerías sjPlot y likert, crea una gráfica de barras con las proporciones de cada valor de respuesta para p variables de escala tipo likert (1:3, 1:5, 1:7, etc) definidas por el usuario.

graficas de escalas likert

A partir de la base de datos pisaitems (base de datos con las respuestas a 12 items de hábitos de lectura en el estudio Pisa de la OCDE dadas por 66000 niños de Estados Unidos, Canada y Mexico.

nv(pisaitems)

nombre numero tipo

1 CNT 1 factor

2 ST24Q01 2 factor

3 ST24Q02 3 factor

4 ST24Q03 4 factor

5 ST24Q04 5 factor

6 ST24Q05 6 factor

7 ST24Q06 7 factor

8 ST24Q07 8 factor

9 ST24Q08 9 factor

10 ST24Q09 10 factor

11 ST24Q10 11 factor

12 ST24Q11 12 factor

Vemos que las doce variables son factores y por lo tanto las respuestas no son numéricas. Pediremos las frecuencias de la primera variable de respuesta (la número 2 ST24Q01)

frecuencias.fnc(pisaitems,2)

$ST24Q01$tabla

Strongly disagree Disagree Agree Strongly agree

14947 23515 20000 7029

Solicitaremos la gráfica de barras para todas las variables (de la 2 a la 12) haciendo uso de la función grafica.likert.fnc.

grafica.likert.fnc(pisaitems, variables=2:12)

Como puedes observar en la figura 1 esto ha generado una gráfica que utiliza como etiquetas de las variables los nombres de las mismas. Dado que cada variable se corresponde con una pregunta concreta, vamos a utilizar un nuevo argumento var.label con el objeto que crearemos a tal fin con la correspondencia entre las variables y las etiquetas que deseamos obtener en la gráfica.

var.lab=c(

ST24Q01 = "I read only if I have to.",

ST24Q02 = "Reading is one of my favorite hobbies.",

ST24Q03 = "I like talking about books with other people.",

ST24Q04 = "I find it hard to finish books.",

ST24Q05 = "I feel happy if I receive a book as a present.",

ST24Q06 = "For me, reading is a waste of time.",

ST24Q07 = "I enjoy going to a bookstore or a library.",

ST24Q08 = "I read only to get information that I need.",

ST24Q09 = "I cannot sit still and read for more than a few minutes.",

ST24Q10 = "I like to express my opinions about books I have read.",

ST24Q11 = "I like to exchange books with my friends")

Observa que hemos creado un vector alfanumérico con c( ) donde cada nombre de la variable tiene entre comillas (o apóstrofes) la etiqueta que deseamos para dicha variable. Es importante no omitir ni el signo igual de asignación ni la coma que separa a cada variable.

grafica.likert.fnc(pisaitems, variables=2:12,

var.label=var.lab)

Figura 1

Figura 2

Si deseas que los items queden ordenados empezando por los mas positivos puedes incluir el argumento ordenado='pos', si lo prefieres con un ordenamiento por los negativos incluye ordenado='neg'. Asimismo puedes incluir el argumento titulo con el título que deseas entre comillas.

grafica.likert.fnc(pisaitems, variables=2:12,

var.label=var.lab, ordenado='pos',

titulo='Estudio Pisa')

grafica.likert.fnc(pisaitems, variables=2:12,

var.label=var.lab, ordenado='neg',

titulo='Estudio Pisa')

Si deseamos esa gráfica en cada nivel de un determinado factor utilizaremos el conocido argumento que.factor. La primera variable de la base de datos (CNT) recoge el pais (Canada, México y EEUU),de pertenencia de cada niño.

grafica.likert.fnc(pisaitems, variables=2:12,

var.label=var.lab, que.factor='CNT')

Vamos a simular que en la base de datos original, las 12 variables eran numéricas (con respuestas entre 1 y 4). Para ello recodificaremos dichas variables desde los valores alfanuméricos actuales a los nuevos numéricos (entre 1 y 4). Utilizaremos para ello la función recode.multiple.fnc.

antiguos=levels(pisaitems[,2]); antiguos

[1] "Strongly disagree" "Disagree" "Agree"

[4] "Strongly agree"

Obviamente hemos preferido extraer los valores de respuesta (dado que existen como tales en la base de datos) desde la propia variable con levels, aunque podíamos haberlo escrito a mano así:

antiguos=c('Strongly disagree','Disagree','Agree','Strongly agree')

datos=recode.multiple.fnc(pisaitems, variables=2:12,

valor.antiguo=antiguos, valor.nuevo=1:4)

#------------------------------------------------------------------

# RECODIFICACION MULTIPLE DE VARIABLES

#------------------------------------------------------------------

*** Se han recodificado las siguientes variables:

[1] "ST24Q01" "ST24Q02" "ST24Q03" "ST24Q04" "ST24Q05" "ST24Q06" "ST24Q07"

[8] "ST24Q08" "ST24Q09" "ST24Q10" "ST24Q11"

*** desde los valores originales: Strongly disagree Disagree Agree

Strongly agree

*** a los nuevos: 1 2 3 4

Si repitiéramos la llamada a la función con esta "nueva" base de datos obtendrás el siguiente WARNING y la siguiente gráfica

grafica.likert.fnc(datos, variables=2:12, var.label=var.lab)

*** WARNING. No has incluido el argumento etiquetas (etiquetas de los valores ***

*** de las variables). Se utilizaran como etiquetas los valores numericos. ***

*** Puedes incluir ese argumento con las etiquetas que deseas para los valores ***

*** Ej: etiquetas=c('Tot en desacuerdo','De acuerdo','Tot de acuerdo') ***

Creamos las etiquetas e incluimos el argumento etiquetas en la llamada a la función.

etiquetas=c('Strongly disagree','Disagree','Agree','Strongly agree')

grafica.likert.fnc(datos, variables=2:12,

var.label=var.lab, etiquetas=etiquetas)

Figura 4

Figura 5

En el caso de que desees enviar todas las gráficas a un archivo pdf externo lo puedes hacer incluyendo las llamadas a las funciones entre las funciones crea.pdf.fnc y cierra.pdf.fnc, aunque INCLUYENDO el argumento to.pdf=T en cada llamada.

crea.pdf.fnc('graficas_likert', apaisado=T)

grafica.likert.fnc(pisaitems, variables=2:12,

var.label=var.lab, to.pdf=T)

grafica.likert.fnc(pisaitems, variables=2:12,to.pdf=T,

var.label=var.lab, que.factor='CNT')

cierra.pdf.fnc( )

Al ejecutar crea.pdf.fnc la función te dará la siguiente información:

IMPORTANTE

*** Has creado el archivo pdf graficas_likert.pdf como

*** destino de volcado de graficas. Una vez finalizado

*** no podrás abrirlo hasta que lo cierres con la

*** llamada a la funcion: cierra.pdf.fnc( )