Skip to content

Instantly share code, notes, and snippets.

@joaovissoci
Last active October 5, 2023 08:11
Show Gist options
  • Save joaovissoci/10e8b10ad27cd1c49985 to your computer and use it in GitHub Desktop.
Save joaovissoci/10e8b10ad27cd1c49985 to your computer and use it in GitHub Desktop.
Kmo calculation
#KMO
kmo = function( data ){
library(MASS)
X <- cor(as.matrix(data))
iX <- ginv(X)
S2 <- diag(diag((iX^-1)))
AIS <- S2%*%iX%*%S2 # anti-image covariance matrix
IS <- X+AIS-2*S2 # image covariance matrix
Dai <- sqrt(diag(diag(AIS)))
IR <- ginv(Dai)%*%IS%*%ginv(Dai) # image correlation matrix
AIR <- ginv(Dai)%*%AIS%*%ginv(Dai) # anti-image correlation matrix
a <- apply((AIR - diag(diag(AIR)))^2, 2, sum)
AA <- sum(a)
b <- apply((X - diag(nrow(X)))^2, 2, sum)
BB <- sum(b)
MSA <- b/(b+a) # indiv. measures of sampling adequacy
AIR <- AIR-diag(nrow(AIR))+diag(MSA) # Examine the anti-image of the
# correlation matrix. That is the
# negative of the partial correlations,
# partialling out all other variables.
kmo <- BB/(AA+BB) # overall KMO statistic
# Reporting the conclusion
if (kmo >= 0.00 && kmo < 0.50){
test <- 'The KMO test yields a degree of common variance
unacceptable for FA.'
} else if (kmo >= 0.50 && kmo < 0.60){
test <- 'The KMO test yields a degree of common variance miserable.'
} else if (kmo >= 0.60 && kmo < 0.70){
test <- 'The KMO test yields a degree of common variance mediocre.'
} else if (kmo >= 0.70 && kmo < 0.80){
test <- 'The KMO test yields a degree of common variance middling.'
} else if (kmo >= 0.80 && kmo < 0.90){
test <- 'The KMO test yields a degree of common variance meritorious.'
} else {
test <- 'The KMO test yields a degree of common variance marvelous.'
}
ans <- list( overall = kmo,
report = test,
individual = MSA,
AIS = AIS,
AIR = AIR )
return(ans)
} # end of kmo()
@chrissie1997
Copy link

3 3 3 3 3 2 3 3 3 7
4 2 4 2 4 3 3 2 3 9
4 4 4 4 4 4 4 4 5 12
3 3 3 3 3 2 3 3 3 7
4 2 4 2 2 2 2 3 1 9
4 2 3 2 3 2 2 2 3 11
3 2 2 3 2 3 3 3 3 7
3 2 3 2 2 2 2 2 2 6
4 3 3 4 4 4 4 4 3 9
4 4 4 4 4 4 4 4 5 12
3 2 3 2 2 2 2 3 3 5
4 3 3 3 4 3 3 4 3 9
2 1 1 1 2 2 2 1 1 0
3 2 3 3 3 3 2 2 2 4
4 2 3 3 2 3 3 2 4 11
4 3 4 3 3 3 3 3 3 10
4 3 3 3 4 3 4 2 3 10
3 2 3 2 3 2 4 2 2 5
3 3 3 4 3 4 4 3 3 7
3 2 3 2 2 2 2 1 3 7
2 2 2 2 2 3 2 2 3 2
3 1 3 2 1 2 3 2 2 6
4 2 3 3 3 2 3 3 2 9
4 3 4 3 4 4 4 3 3 9
2 2 3 2 3 2 3 1 1 3
4 4 3 4 4 4 4 4 4 10
3 2 3 2 2 3 3 2 2 7
4 3 3 3 4 3 4 4 3 12
3 2 2 2 3 3 3 2 3 6
2 2 3 2 3 2 3 2 3 4
4 3 3 3 4 3 4 4 4 10
4 3 4 3 3 4 4 3 4 11
2 1 2 2 2 2 2 1 2 4
4 3 3 4 3 4 4 4 3 12
3 2 3 2 2 2 4 2 2 8
4 3 3 3 4 4 4 3 3 7
2 1 3 1 1 1 2 2 2 2
4 3 3 3 4 3 4 3 3 12
2 3 2 3 3 2 2 2 3 3
4 4 4 3 4 3 5 3 4 12
4 4 3 4 4 3 4 3 4 10
4 4 4 3 4 3 4 4 5 12
4 3 3 3 3 3 4 3 4 12
2 3 1 3 3 3 4 3 3 3
4 2 3 2 2 2 2 2 3 9
2 1 3 2 1 2 1 1 3 2
2 2 3 2 2 2 3 2 2 0
4 3 3 3 3 3 4 3 3 9
4 3 4 4 3 4 4 3 3 12
3 2 4 2 2 2 2 2 3 7
3 3 3 3 3 3 4 2 4 7
2 2 3 2 1 2 2 2 2 4
4 3 3 2 4 2 4 2 4 9
3 3 3 3 2 2 3 2 3 8
4 3 4 3 3 3 3 2 3 9
4 4 4 4 4 3 4 4 4 12
3 2 3 2 2 3 3 2 3 4
2 2 3 2 2 2 3 3 2 5
3 2 3 2 2 3 3 3 3 7
3 3 3 3 2 3 4 3 3 5
2 3 3 3 3 3 4 2 3 4
4 3 4 3 3 3 4 2 3 9
2 1 2 2 1 2 2 1 2 3
3 2 4 2 2 3 3 2 3 6
4 3 4 2 3 2 4 4 3 12
4 3 4 2 3 2 3 3 3 11
4 2 4 2 2 2 4 2 2 10
3 2 3 2 2 2 3 2 2 8
3 2 3 2 2 2 2 1 2 6
2 2 2 2 2 2 2 2 2 2
3 3 3 3 2 3 4 3 3 6
4 3 5 3 4 4 4 3 3 12
4 4 4 4 4 4 4 4 4 12
4 3 4 3 3 3 3 3 3 10
4 4 3 4 4 4 4 3 5 10
3 2 3 3 3 3 3 2 3 7
4 4 4 4 4 4 5 4 4 10
4 4 5 3 3 4 4 4 3 12
4 3 3 3 3 3 3 3 4 8
4 2 4 2 3 2 2 3 3 12
4 4 4 4 5 4 4 4 4 12
5 5 5 5 5 5 5 5 5 12
3 1 4 1 2 2 2 2 2 8
4 3 3 3 3 3 3 2 3 10
4 4 4 3 3 3 4 3 4 12
2 1 3 1 1 2 2 2 2 3
3 2 3 2 3 2 2 2 3 7
4 3 4 3 3 3 3 3 4 9
3 2 4 3 2 3 3 2 3 5
3 2 3 3 2 3 3 2 3 7
4 3 3 2 2 2 3 3 3 11
2 1 3 2 2 2 2 2 1 5
4 3 4 3 4 3 4 4 3 10
3 2 3 2 3 2 3 3 2 8
4 3 4 3 4 3 4 3 4 12
4 3 4 3 2 3 4 3 3 8
4 3 3 3 3 3 3 3 3 10
4 3 3 3 3 4 3 3 4 12
4 3 3 4 4 4 4 3 3 9
4 4 3 4 4 4 5 4 4 10
3 2 3 3 2 2 3 2 3 5
3 3 3 3 4 4 4 3 4 7
4 3 3 2 3 3 2 2 3 10
4 3 5 4 3 4 4 3 4 12
4 3 4 3 3 4 4 3 3 9
4 3 3 3 4 3 3 3 4 10
4 3 3 3 4 3 2 3 3 10
3 2 3 3 2 3 2 2 2 7
4 3 3 4 3 4 3 2 3 10
3 3 3 4 4 4 4 3 3 6
4 3 5 3 3 4 4 2 4 12
2 1 2 1 2 2 1 1 2 0
4 2 3 3 3 3 2 2 3 11
3 2 4 2 2 2 3 2 2 7
4 3 3 3 3 4 4 4 4 9
4 4 3 4 4 4 5 4 4 12
3 2 3 2 3 3 2 2 1 7
3 2 3 3 2 3 2 2 2 7
4 3 4 3 2 4 4 3 3 8
2 2 2 2 3 2 3 2 2 3
2 2 3 2 2 3 2 2 2 3
4 4 4 4 4 5 4 4 3 12
3 2 3 2 2 2 3 3 3 5
3 2 3 2 2 2 3 2 1 7
2 2 3 2 2 3 3 2 2 2
4 2 3 3 3 3 2 3 3 11
3 4 3 4 4 4 4 4 4 7
4 2 3 2 2 3 2 2 2 9
4 3 3 3 3 3 3 3 4 11
2 2 2 3 3 3 2 3 2 4
3 3 4 3 3 3 4 3 3 6
2 2 2 3 2 3 3 3 3 2
4 4 4 4 3 4 4 4 3 12
4 3 4 3 4 2 3 2 3 12
2 2 3 2 3 2 2 2 3 3
3 2 3 2 2 3 2 3 3 7
3 3 3 3 4 3 4 2 3 8
4 3 5 3 4 4 4 3 4 12
4 4 5 4 4 5 4 4 3 12
2 1 2 2 2 2 2 2 2 1
4 3 3 3 3 3 3 4 3 11
3 2 3 2 2 2 3 2 2 6
2 2 3 2 2 2 4 2 2 2
3 2 3 2 2 2 3 1 2 7
4 3 5 3 4 4 3 4 3 12
3 2 3 2 2 2 3 2 2 7
2 2 3 2 2 3 3 2 2 3
2 2 3 2 2 2 2 2 2 2
2 2 3 2 2 2 2 2 3 0
4 3 3 3 3 4 3 2 3 11
3 2 3 2 2 2 3 2 2 8
4 3 3 3 3 3 3 3 2 9
4 3 3 3 3 3 3 3 4 11
4 2 3 3 3 3 2 2 3 10
4 3 4 3 2 3 4 2 3 10
3 2 3 3 2 2 2 3 3 6
3 2 3 3 2 3 3 2 3 6
4 3 4 3 3 3 4 2 3 12
4 4 4 4 4 4 4 4 3 11
2 2 2 2 2 2 3 2 2 2
4 2 5 3 2 3 2 3 2 12
4 2 4 2 2 2 2 2 2 10
3 2 3 2 3 2 3 2 3 6
4 3 3 3 3 3 3 3 3 9
2 1 2 2 1 2 2 1 2 3
2 2 2 2 2 2 3 2 2 2
3 2 3 2 3 2 2 2 2 7
2 2 2 3 2 3 3 3 3 2
4 3 4 3 4 3 4 3 3 10
3 3 3 3 4 3 4 3 4 7
4 3 3 3 3 3 3 3 3 8
4 4 3 3 4 3 5 4 3 12
4 3 3 2 3 3 3 3 3 9
3 2 3 3 3 3 3 3 3 7
4 3 4 3 3 3 3 3 3 11
3 3 3 3 3 4 4 3 2 5
3 3 3 3 4 3 4 3 4 6
4 3 4 3 4 3 3 3 3 10
3 3 3 4 3 4 3 2 3 6
2 2 3 2 2 3 2 3 3 6
4 3 4 3 3 2 3 2 3 10
3 2 3 2 2 2 3 3 2 6
3 3 3 2 3 2 3 3 4 5
4 3 4 3 4 2 3 4 3 12
5 4 4 4 4 3 4 4 4 12
4 3 3 3 3 3 4 3 4 10
4 4 4 4 4 4 4 4 4 10
4 4 4 4 4 4 4 4 4 12
3 2 3 3 2 3 3 2 3 8
4 4 4 3 4 4 4 3 4 9
4 4 4 4 4 4 4 4 4 12
4 2 3 2 2 3 3 2 2 9
3 2 3 3 2 3 3 2 3 8
4 3 3 3 3 3 4 3 4 9
4 4 3 3 4 3 4 4 3 10
3 3 3 3 3 4 3 3 3 5
3 1 3 2 2 2 2 2 2 8
4 3 4 3 3 3 4 4 3 9
3 2 3 3 4 3 3 3 2 7
3 2 3 2 2 2 3 2 3 7
4 3 3 3 2 2 3 3 3 12
3 3 2 3 3 3 3 3 3 6
3 3 3 3 3 3 3 3 3 8
4 3 4 3 3 4 3 4 3 12
4 4 3 4 4 4 4 4 3 12
4 3 3 2 3 2 2 2 3 10
4 3 4 3 3 2 4 3 3 12
3 3 3 3 3 3 3 3 3 9
2 2 2 3 2 3 3 2 3 3
4 3 3 3 4 3 3 3 4 12
4 3 4 3 4 4 4 3 3 12
3 2 3 2 3 2 2 2 2 6
4 3 4 3 3 3 4 4 4 12
2 2 3 1 2 2 2 2 2 3
3 3 3 3 2 3 4 3 3 6
3 3 3 3 3 4 3 3 3 6
3 2 3 3 2 3 2 2 2 7
4 3 3 3 4 3 3 3 3 10
3 2 3 3 2 3 2 3 3 6
4 3 4 3 2 3 3 2 3 11
3 2 3 3 3 3 2 3 2 8
4 4 4 3 4 4 3 4 4 12
4 3 4 3 4 4 3 4 4 10
3 3 3 3 3 2 3 3 3 7
4 3 4 3 3 4 3 3 3 11
3 3 3 3 3 3 4 3 4 6
1 1 1 1 1 2 2 2 1 0
3 3 3 3 2 3 3 2 3 8
3 2 3 3 2 3 3 2 3 6
3 2 2 2 3 3 2 2 3 9
2 1 3 2 2 2 2 2 1 3
2 2 3 2 2 2 3 2 2 2
4 3 3 3 2 3 4 3 3 9
4 3 3 4 4 4 4 4 3 10
4 4 4 4 4 4 5 4 4 12
4 3 4 3 3 4 4 3 3 9
4 3 3 3 2 3 3 2 3 8
4 4 4 4 5 4 4 3 4 12
2 2 2 3 2 3 3 2 2 4
4 3 3 3 3 3 3 3 3 9
3 3 3 3 4 3 4 3 3 6
4 3 3 3 3 3 3 3 3 10
4 3 3 3 4 3 4 3 3 9
4 4 3 3 4 3 4 4 4 11
4 3 3 3 4 4 3 3 3 9
4 3 3 2 3 3 3 2 3 9
2 2 3 1 3 1 2 2 2 4
4 4 3 4 4 4 4 4 3 10
2 2 3 2 2 2 3 2 3 4
3 2 3 2 2 2 2 2 2 7
4 3 4 3 2 3 3 3 3 9
2 1 2 1 2 2 2 2 2 0
2 2 2 2 2 3 2 2 3 2
2 2 3 2 2 2 2 2 2 4
3 2 3 2 2 2 3 2 3 6
4 2 3 2 2 2 2 2 2 11
4 3 3 3 4 3 3 4 3 9
3 3 3 3 3 3 3 2 3 5
4 3 4 3 4 4 4 3 3 12
4 4 3 4 3 4 4 4 3 11
2 3 3 3 4 3 4 3 2 2
4 4 5 4 4 4 5 4 5 12
4 4 3 4 4 4 4 3 4 12
4 2 4 2 2 3 3 2 2 10
3 2 4 2 2 2 3 2 2 6
2 1 2 1 2 2 2 1 1 0
4 3 3 3 4 3 4 3 3 12
4 3 4 3 3 3 4 3 3 10
2 2 3 2 2 2 2 2 3 2
4 3 4 3 3 3 3 2 3 12
4 4 4 4 4 4 3 4 4 8
4 3 3 3 3 3 3 3 3 10
3 3 3 3 3 3 4 4 3 8
2 2 2 3 2 2 3 2 2 4
2 2 2 2 3 2 3 2 3 4
3 2 3 2 3 3 2 3 2 6
3 2 3 2 2 3 3 2 3 7
2 1 2 2 1 3 2 2 1 3
4 3 3 2 4 2 4 2 2 9
4 3 4 3 2 2 4 2 3 11
4 2 4 3 3 3 3 2 2 8
4 3 3 3 2 4 3 4 3 11
4 4 4 4 4 4 4 4 4 9
4 3 3 3 3 3 3 3 3 10
4 4 3 4 4 4 4 5 3 9
4 3 4 4 3 4 3 3 3 12
4 3 3 3 4 4 3 2 3 9
4 3 3 3 3 2 4 4 3 10
4 4 4 4 4 4 4 4 4 12
3 3 3 3 3 2 3 4 3 6
4 3 5 3 3 4 4 4 3 10
4 3 3 3 4 3 4 3 4 11
4 4 4 3 4 4 4 4 4 10
4 3 4 3 3 3 4 4 3 10
3 2 4 3 3 2 2 2 2 5
4 3 4 3 4 3 4 3 3 9
3 3 3 3 4 3 3 3 3 7
2 2 3 2 2 3 2 2 3 3
4 3 4 3 3 3 3 3 5 9
2 1 3 2 1 2 1 2 3 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment