domingo, 4 de agosto de 2019

Coeficiente Alfa ordinal en R

Frecuentemente vemos que cuando se intenta obtener la fiabilidad de una escala se utiliza el estadístico conocido como alfa de Cronbach. No obstante, este uso tan generalizado puede tener objeciones (Osburn, 2000; Gadermann, Guhn, & Zumbo, 2012; Contreras y Novoa-Muñoz, 2018), cuando la escala de medida usada es ordinal (Elosua y Zumbo,2008), como puede ser en el uso de items likert, ya que uno de los supuestos del estadístico es la naturaleza continua de los datos. 

Cuando esto ocurre podemos usar como estadísticos alternativos tanto Omega ordinal (Dunn, Baguley & Brunsden, 2014; Viladrich, Angulo-Brunet and Doval, 2017) como el alfa ordinal de Cronbach (Contreras y Novoa-Muñoz, 2018), pudiendo dar tanto a una infraestimación como sobreestimación de los resultados respecto al estadístico clásico.

El hecho de tomar una decisión a favor de un algoritmo, a la hora de determinar la fiabilidad de una dimensión, hay que tener en cuenta que puede llevarnos a conclusiones erróneas y afectar de manera significativa al desarrollo de la investigación presente, como a futuras lineas de trabajo. Como apoyo a la toma de decisiones podemos consultar el siguiente árbol de decisión tomado de (Viladrich, Angulo-Brunet and Doval, 2017):


Por tanto se impone un cambio práctico en el algoritmo general a la hora de obtener la fiabilidad de una escala tipo Likert. Dentro de este cambio de paradigma vamos a exponer a continuación una forma sencilla de obtener los nuevos estadísticos, apoyándonos en el paquete estadístico R.

Algoritmo en R.
La primera parte del procedimiento consiste en leer la base de datos, en este caso en SPSS, que contiene los ítems de la escala que vamos a analizar. En el primer ejemplo consiste en solo 5 ítems  (Likert de 0-4) sobre 14 sujetos:

#Carga de la base de datos desde SPSS (tamaño muestral reducido, n=14)
library(foreign) 
spss.data <- read.spss("D:\\Lab.R\\fiabilidad\\acosolaboral.sav",to.data.frame = TRUE)
#Convierte la matriz en variables
attach(spss.data)
#Pasa los items a la tabla de datos
datos<-data.frame(I2,I18,I19,I20,I28)

Posteriormente, se indica la librería de R que vamos a usar y los ítems a analizar:

#Library de refrencia para determinar la fiabilidad
library(userfriendlyscience)
scaleReliability(dat = datos, items = c('I2','I18','I19','I20','I28'))

Obteniendo los siguientes resultados:

Estimates assuming interval level:
             Omega (total): 0.96
          Cronbach's alpha: 0.97
Confidence intervals:
             Omega (total): [0.93, 0.99]
          Cronbach's alpha: [0.93, 1]
Estimates assuming ordinal level:
     Ordinal Omega (total): 0.72
  Ordinal Cronbach's alpha: 0.72
Confidence intervals:
     Ordinal Omega (total): [0.49, 0.95]
  Ordinal Cronbach's alpha: [0.47, 0.96]

Como podemos comprobar en el caso anterior el modelo clásico da mejores resultados que si lo contrastamos con la formulación ordinal.

Ahora veremos el segundo ejemplo, constituido por 15 items (likert de 1-5) y un mayor número de sujetos.

#Carga de la base de datos desde SPSS (tamaño muestral grande, n=1337)
spss.data <- read.spss("D:\\Lab.R\\fiabilidad\\zulma2018.sav",to.data.frame = TRUE)
#Convierte la matriz en variables
attach(spss.data)
datos<-data.frame(CPY1,CPY2,CPY3,CPY4,CPY5,CPY6,CPY7,CPY8,CPY9,CPY10,CPY11,CPY12,CPY13,CPY14,CPY15)

A continuación definiremos la instrucción para estimar la fiabilidad:

scaleReliability(dat = datos, items = c('CPY1','CPY2','CPY3','CPY4','CPY5','CPY6','CPY7',
                                        'CPY8','CPY9','CPY10','CPY11','CPY12','CPY13','CPY14','CPY15'))

Obteniendo los resultados:

Estimates assuming interval level:
             Omega (total): 0.67
          Cronbach's alpha: 0.66
Confidence intervals:
             Omega (total): [0.65, 0.7]
          Cronbach's alpha: [0.64, 0.69]
Estimates assuming ordinal level:
     Ordinal Omega (total): 0.71
  Ordinal Cronbach's alpha: 0.7
Confidence intervals:
     Ordinal Omega (total): [0.69, 0.74]
  Ordinal Cronbach's alpha: [0.68, 0.72]

Observando en los datos anteriores, como se ha invertido la solución respecto al ejemplo primero, ahora el modelo clásico da peores resultados que si lo contrastamos con la formulación ordinal.

Por último, siguiendo las recomendaciones de Gadermann et al. (2012), sugerimos usar el nuevo procedimiento (Omega o alfa ordinal) cuando los ítems son dicotómicos, o cuando las alternativas en los ítems Likert se distribuyen entre 3 y 7 alternativas.


Referencias.
*Contreras,S. y Novoa-Muñoz, F (2018). Ventajas del alfa ordinal respecto al alfa de Cronbach ilustradas con la encuesta AUDIT-OMS. Rev Panam Salud Publica, 42e65. https://doi.org/10.26633/RPSP.2018.65 
*Dunn, T. J., Baguley, T., & Brunsden, V. (2014). From alpha to omega: A practical solution to the pervasive problem of internal consistency estimation. British Journal of Psychology, 105(3), 399–412. https://doi.org/10.1111/bjop.12046 
*Elosua,P. y Zumbo,B.D. (2008). Coeficientes de fiabilidad para escalas de respuesta categórica ordenada. Psicothema, 20(4),896-901.
*Gadermann, A. M., Guhn, M., & Zumbo, B. D. (2012). Estimating ordinal reliability for Likert-type and ordinal item response data: A conceptual, empirical, and practical guide. Practical Assessment, Research & Evaluation, 17, 1–13.
*Osburn, H. G. (2000). Coefficient alpha and related internal consistency reliability coefficients. Psychological Methods, 5, 343–355.
*Viladrich,C., Angulo-Brunet,A. and Doval,E. (2017).A journey around alpha and omega to estimate internal consistency reliability. Anales de Psicología33(3), 755-782. http://dx.doi.org/10.6018/analesps.33.3.268401