require(lavaan)
require(semPlot)
require(GPArotation)
require(psych)
require(knitr)

The data

We will use ten items, that build one subscale of a questionnaire:

data <- read.table("/home/matti/Arbeitsfläche/Data Mcdonalds Omega",header = T,sep = ",")
names(data)
##  [1] "Item_1"  "Item_2"  "Item_3"  "Item_4"  "Item_5"  "Item_6"  "Item_7" 
##  [8] "Item_8"  "Item_9"  "Item_10"

Testing the model specification

We will us McDonald´s \(\omega\) to test the reliability of our subscale, because Zinbarg, Revelle, Yovel and Li (2005) said that \(\omega\) is the best estimator for reliability, in comparison to Cronbachs \(\alpha\) and Guttmanns \(\lambda\). To fulfill the assumption for calculating \(\omega\) we have to test, if it is tau-congoneric.

model.kon <- '
Dimension=~  Item_1 + Item_2 +  Item_3 + Item_4 + Item_5 + Item_6 +  Item_7 + Item_8 +  Item_9 + Item_10
 ' 

mod.kon <- cfa( model.kon, data= data, estimator = "ml" )


semPaths(mod.kon, whatLabels="stand")

kon <- inspect( mod.kon,"fit")[ c(2,3,4,8,19,23) ]
kable(kon,format = 'html')
fmin 0.1950302
chisq 39.7861621
df 35.0000000
baseline.pvalue 0.0000000
aic 2825.0099437
rmsea 0.0366150

Usually we would test now if the other models would fit our data, but you can believe me, that tau congoneric is the best!

Calculating Omega

To Calculate \(\omega\) we will use the omega() funktion of the psych package (Revelle, 2013).

omega(data,n.obs=102,title = "Omega")

## Omega 
## Call: omega(m = data, title = "Omega", n.obs = 102)
## Alpha:                 0.85 
## G.6:                   0.85 
## Omega Hierarchical:    0.73 
## Omega H asymptotic:    0.83 
## Omega Total            0.87 
## 
## Schmid Leiman Factor loadings greater than  0.2 
##            g   F1*   F2*   F3*   h2   u2   p2
## Item_1- 0.22                   0.08 0.92 0.57
## Item_2  0.66  0.28             0.54 0.46 0.81
## Item_3- 0.56        0.35       0.44 0.56 0.72
## Item_4  0.58  0.55             0.65 0.35 0.52
## Item_5- 0.72              0.32 0.62 0.38 0.83
## Item_6  0.73              0.31 0.63 0.37 0.85
## Item_7- 0.52  0.23             0.34 0.66 0.79
## Item_8  0.57        0.48       0.56 0.44 0.58
## Item_9- 0.42  0.38             0.35 0.65 0.49
## Item_10 0.57        0.26       0.42 0.58 0.78
## 
## With eigenvalues of:
##    g  F1*  F2*  F3* 
## 3.28 0.62 0.51 0.23 
## 
## general/max  5.32   max/min =   2.67
## mean percent general =  0.69    with sd =  0.14 and cv of  0.2 
## Explained Common Variance of the general factor =  0.71 
## 
## The degrees of freedom are 18  and the fit is  0.15 
## The number of observations was  102  with Chi Square =  14.31  with prob <  0.71
## The root mean square of the residuals is  0.03 
## The df corrected root mean square of the residuals is  0.05
## RMSEA index =  0  and the 90 % confidence intervals are  NA 0.068
## BIC =  -68.94
## 
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 35  and the fit is  0.44 
## The number of observations was  102  with Chi Square =  42.59  with prob <  0.18
## The root mean square of the residuals is  0.08 
## The df corrected root mean square of the residuals is  0.09 
## 
## RMSEA index =  0.052  and the 90 % confidence intervals are  NA 0.089
## BIC =  -119.29 
## 
## Measures of factor score adequacy             
##                                                  g   F1*   F2*   F3*
## Correlation of scores with factors            0.88  0.68  0.62  0.44
## Multiple R square of scores with factors      0.77  0.47  0.38  0.19
## Minimum correlation of factor score estimates 0.54 -0.07 -0.24 -0.62
## 
##  Total, General and Subset omega for each subset
##                                                  g  F1*  F2*  F3*
## Omega total for total scores and subscales    0.87 0.74 0.67 0.77
## Omega general for total scores and subscales  0.73 0.52 0.46 0.64
## Omega group for total scores and subscales    0.10 0.23 0.20 0.12

We can see that our \(\omega\) total is .87!

Follow me on:

Twitter
Github