Reputation: 2886
I have five items on a construct when i run alpha
on it on i get the following results without any errors
psych::alpha(construct,
na.rm = TRUE,
title = 'myscale',
n.iter = 1000)
Reliability analysis myscale
Call: psych::alpha(x = construct, title = "myscale", na.rm = TRUE,
n.iter = 1000)
raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
0.81 0.81 0.78 0.46 4.3 0.013 2.6 0.89
lower alpha upper 95% confidence boundaries
0.78 0.81 0.84
lower median upper bootstrapped confidence intervals
0.77 0.81 0.84
I have been reading the paper From Alpha to omega: A practical solution to the pervasive problem of internal consistency estimation
link
It recommends using the code below
MBESS::ci.reliability(construct, interval.type="bca", B=1000, type = "omega")
$est
[1] 0.8107376
$se
[1] 0.01651936
$ci.lower
[1] 0.7764029
$ci.upper
[1] 0.839944
$conf.level
[1] 0.95
$type
[1] "omega"
$interval.type
[1] "bca bootstrap"
I have been trying to run omega on my sample set using the psych package to keep things consistent in my analysis
psych::omega(m = construct,
nfactors = 1, fm = "pa", n.iter = 1000, p = 0.05,
title = "Omega", plot = FALSE, n.obs = 506)
I get the two error messages
In factor.scores, the correlation matrix is singular, an approximation is used Omega_h for 1 factor is not meaningful, just omega_t
This warning is occurring because the number of columns are two small for Omega_h. A previous question on SO answers this somewhat McDonalds omega: warnings in R
The error im having is below
Error in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : I am sorry: missing values (NAs) in the correlation matrix do not allow me to continue. Please drop those variables and try again. In addition: There were 50 or more warnings (use warnings() to see the first 50)
There are no missing values so im not sure about error number two
The details of my construct are
Q1 Q2 Q3
Min. :0.000 Min. :0.000 Min. :0.000
1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
Median :3.000 Median :2.000 Median :3.000
Mean :2.597 Mean :2.393 Mean :3.227
3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.:4.000
Max. :6.000 Max. :6.000 Max. :6.000
Q4 Q5
Min. :0.00 Min. :0.000
1st Qu.:1.00 1st Qu.:2.000
Median :2.00 Median :2.000
Mean :2.17 Mean :2.445
3rd Qu.:3.00 3rd Qu.:3.000
Max. :6.00 Max. :6.000
Created data with the same properties - 100 entries (Alpha roughly 0.56) but it generates the same error on omega
structure(list(Q1 = c(4, 5, 3, 5, 4, 5, 3, 5, 5, 5, 6,
3, 5, 4, 6, 5, 5, 6, 7, 4, 5, 5, 3, 4, 4, 5, 4, 3, 5, 4, 5, 5,
6, 6, 3, 6, 3, 4, 4, 4, 6, 5, 3, 2, 6, 6, 4, 5, 4, 3, 6, 4, 4,
5, 6, 2, 4, 3, 4, 6, 4, 6, 4, 5, 5, 6, 4, 6, 5, 5, 4, 5, 6, 6,
2, 5, 4, 3, 4, 4, 4, 6, 3, 3, 5, 4, 4, 4, 5, 5, 5, 3, 6, 6, 6,
6, 5, 4, 3, 5), Q2 = c(7, 4, 4, 4, 4, 6, 6, 6, 7, 6, 5,
6, 5, 4, 5, 6, 6, 6, 7, 5, 4, 4, 6, 6, 4, 4, 6, 2, 6, 5, 4, 6,
4, 6, 6, 6, 5, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 6, 2, 6, 6, 5, 4,
6, 6, 4, 4, 7, 6, 5, 5, 5, 5, 6, 5, 5, 4, 5, 5, 5, 4, 6, 7, 5,
5, 5, 6, 5, 6, 5, 6, 7, 2, 6, 5, 7, 3, 5, 5, 3, 3, 3, 7, 4, 5,
6, 6, 6, 5, 7), Q3 = c(5, 4, 5, 6, 4, 4, 5, 4, 2, 6, 5,
5, 5, 5, 7, 5, 5, 6, 7, 6, 3, 6, 6, 6, 5, 6, 6, 5, 5, 4, 5, 5,
6, 6, 5, 6, 5, 5, 4, 4, 6, 4, 4, 4, 4, 4, 4, 5, 5, 4, 5, 5, 4,
3, 5, 4, 5, 6, 6, 6, 4, 5, 5, 5, 6, 4, 5, 5, 7, 4, 5, 6, 6, 5,
5, 3, 3, 5, 4, 6, 5, 5, 1, 3, 5, 3, 2, 5, 4, 6, 6, 6, 6, 4, 6,
3, 6, 6, 6, 5), Q4 = c(6, 6, 4, 7, 4, 6, 7, 6, 7, 6, 6,
6, 5, 7, 7, 6, 6, 5, 7, 7, 6, 6, 7, 7, 6, 6, 6, 5, 6, 7, 5, 6,
7, 5, 4, 6, 4, 3, 6, 4, 6, 6, 6, 3, 5, 7, 5, 6, 4, 6, 7, 6, 7,
4, 6, 3, 5, 7, 5, 4, 6, 6, 4, 6, 5, 5, 5, 5, 7, 7, 7, 6, 6, 6,
5, 6, 6, 4, 5, 7, 6, 7, 3, 5, 6, 5, 6, 5, 5, 7, 7, 6, 6, 2, 7,
6, 6, 7, 7, 5)), .Names = c("Q1", "Q2", "Q3",
"Q4"), row.names = c(NA, 100L), class = "data.frame")
Can anyone see where im falling down?
Thank you for your time
Upvotes: 4
Views: 2043
Reputation: 4102
so I tried this:
psych::omega(m = construct)
and it worked with this result:
Omega
Call: psych::omega(m = construct)
Alpha: 0.56
G.6: 0.49
Omega Hierarchical: 0.53
Omega H asymptotic: 0.89
Omega Total 0.6
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
Q1 0.41 0.30 0.26 0.74 0.65
Q2 0.37 0.25 0.20 0.80 0.67
Q3 0.50 0.25 0.31 0.69 0.80
Q4 0.64 0.23 0.46 0.54 0.89
With eigenvalues of:
g F1* F2* F3*
0.95 0.15 0.06 0.05
general/max 6.35 max/min = 2.83
mean percent general = 0.75 with sd = 0.11 and cv of 0.15
Explained Common Variance of the general factor = 0.78
The degrees of freedom are -3 and the fit is 0
The number of observations was 100 with Chi Square = 0 with prob < NA
The root mean square of the residuals is 0
The df corrected root mean square of the residuals is NA
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 2 and the fit is 0.01
The number of observations was 100 with Chi Square = 0.62 with prob < 0.73
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.14
BIC = -8.59
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.75 0.37 0.27 0.24
Multiple R square of scores with factors 0.57 0.14 0.07 0.06
Minimum correlation of factor score estimates 0.14 -0.72 -0.86 -0.88
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.60 0.37 0.31 0.46
Omega general for total scores and subscales 0.53 0.25 0.25 0.41
Omega group for total scores and subscales 0.06 0.12 0.06 0.05
I checked the defaults and nfactors = 3
and the n.iter = 1
. Then I slowly increased the n.iter, and decreased the n.factor, and it keeps working until n.iter =7, and keeping nfactors as 3
psych::omega(m = construct, n.iter = 7, p = 0.05, nfactors = 3)
with your full dataset you should be able to get higher n.iter
Upvotes: 3