Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Adriaens, Ines
GenTORE_WP3
Commits
f03cf899
Commit
f03cf899
authored
Jun 01, 2021
by
Adriaens, Ines
✌🏼
Browse files
Upload New File
parent
f05d2f8d
Changes
1
Hide whitespace changes
Inline
Sidebyside
kmo.m
0 → 100644
View file @
f03cf899
function
[
A
,
B
]
=
kmo
(
X
)
%KMO KaiserMeyerOlkin Measure of Sampling Adequacy.
% Factor analysis can be used as a guide to how coherently a set of variables
% relate to a hypothesized underlying dimension that they are all being used
% to measure. External validity analysis assesses whether the scale that has
% been constructed performs as theoretically expected in correlation with
% other variables to which it is expected to be related.
% There are some assumptions about the characteristics of factors that are
% extracted and defined that are unobserved common dimensions that may be
% listed to account for the correlations among observed variables. Sampling
% adequacy predicts if data are likely to factor well, based on correlation
% and partial correlation. Is used to assess which variables to drop from the
% model because they are too multicollinear.
% It has been suggested that inv(R) should be a neardiagonal matrix in order
% to successfully fit a factor analysis model. To assess how close inv(R)
% is to a diagonal matrix, Kaiser (1970) proposed a measure of sampling
% adequacy, now called KMO (KaiserMeyerOlkin) index. The common part, called
% the image of a variable, is defined as that part which is predictable by
% regressing each variable on all other variables.
% The antiimage is the specific part of the variable that cannot be predicted.
% Examining the antiimage of the correlation matrix. That is the negative of the
% partial correlations, partialling out all other variables.
% There is a KMO statistic for each individual variable and their sum is
% the overall statistic. If it is not > 0.6 drop the indicator variables with
% the lowest individual statistic value until the overall one rises above 0.6:
% factors which is meritorious. The diagonal elements on the Antiimage
% correlation matrix are the KMO individual statistics for each variable. A KMO
% index <= 0.5 indicates the correlation matrix is not suitable for factor
% analysis.
%
% Syntax: function kmo(X)
%
% Input:
% X  Input matrix can be a data matrix (size ndata x pvariables)
% Output(s):
%  KaiserMeyerOlkin Index.
%  Degree of Common Variance Report (shared by a set of variables
% and thus assesses the degree to which they measure a common
% underlying factor).
% optional(s):
%  Antiimage Covariance Matrix.
%  Antiimage Correlation Matrix
%
% Example: From the example given on the web page
% http://www.ncl.ac.uk/iss/statistics/docs/factoranalysis.html
% We are interested to calculate the KaiserMeyerOlkin measure of sampling
% adequacy in order to see if proceeds a satisfactory factor analysis to
% investigate the reasons why customers buy a product such as a particular
% brand of soft drink (e.g. coca cola). Several variables were identified
% which influence customer to buy coca cola. Some of the variables identified
% as being influential include availability of product (X1), cost of product
% (X2), experience with product (X3), popularity of product (X4), prestige
% attached to product (X5), quality of product (X6), quantity of product (X7),
% and respectability of product (X8). From this, you designed a questionnaire
% to solicit customers' view on a seven point scale, where 1 = not important
% and 7 = very important. The results from your questionnaire are show on the
% table below. Only the first twelve respondents (cases) are used in this
% example.
%
% Table 1: Customer survey
% 
% X1 X2 X3 X4 X5 X6 X7 X8
% 
% 4 1 4 5 2 3 6 7
% 4 2 7 6 6 3 3 4
% 6 4 3 4 2 5 7 7
% 5 3 5 4 3 4 6 7
% 5 2 4 5 2 5 5 6
% 6 3 3 5 4 4 7 7
% 6 2 4 4 4 3 4 5
% 4 1 3 4 3 3 5 6
% 5 3 4 3 4 3 6 6
% 5 4 3 4 4 4 6 7
% 6 2 4 4 4 3 7 5
% 5 2 3 3 3 3 7 6
% 
%
% Data matrix must be:
% X=[4 1 4 5 2 3 6 7;4 2 7 6 6 3 3 4;6 4 3 4 2 5 7 7;5 3 5 4 3 4 6 7;
% 5 2 4 5 2 5 5 6;6 3 3 5 4 4 7 7;6 2 4 4 4 3 4 5;4 1 3 4 3 3 5 6;
% 5 3 4 3 4 3 6 6;5 4 3 4 4 4 6 7;6 2 4 4 4 3 7 5;5 2 3 3 3 3 7 6];
%
% Calling on Matlab the function:
% kmo(X)
%
% Answer is:
%
% KaiserMeyerOlkin Measure of Sampling Adequacy: 0.4172
% The KMO test yields a degree of common variance unacceptable (Don't Factor).
%
%
% Created by A. TrujilloOrtiz, R. HernandezWalls, A. CastroPerez,
% K. BarbaRojo and A. OteroLimon
% Facultad de Ciencias Marinas
% Universidad Autonoma de Baja California
% Apdo. Postal 453
% Ensenada, Baja California
% Mexico.
% atrujo@uabc.mx
%
% Copyright. October 10, 2006.
%
% To cite this file, this would be an appropriate format:
% TrujilloOrtiz, A., R. HernandezWalls, A. CastroPerez, K. BarbaRojo
% and A. OteroLimon (2006). kmo:KaiserMeyerOlkin Measure of Sampling
% Adequacy. A MATLAB file. [WWW document]. URL http://www.mathworks.com/
% matlabcentral/fileexchange/loadFile.do?objectId=12736
%
% References:
% Rencher, A. C. (2002), Methods of Multivariate Analysis. 2nd. ed.
% NewJersey:John Wiley & Sons. Chapter 13 (pp. 408450).
%
error
(
nargchk
(
1
,
1
,
nargin
));
msg
=
nargoutchk
(
1
,
2
,
nargout
);
X
=
corrcoef
(
X
);
iX
=
inv
(
X
);
S2
=
diag
(
diag
((
iX
.^
1
)));
AIS
=
S2
*
iX
*
S2
;
%antiimage covariance matrix
IS
=
X
+
AIS

2
*
S2
;
%image covariance matrix
Dai
=
diag
(
diag
(
sqrt
(
AIS
)));
IR
=
inv
(
Dai
)
*
IS
*
inv
(
Dai
);
%image correlation matrix
AIR
=
inv
(
Dai
)
*
AIS
*
inv
(
Dai
);
%antiimage correlation matrix
a
=
sum
((
AIR

diag
(
diag
(
AIR
)))
.^
2
);
AA
=
sum
(
a
);
b
=
sum
((
X

eye
(
size
(
X
)))
.^
2
);
BB
=
sum
(
b
);
MSA
=
b
.
/(
b
+
a
);
%measures of sampling adequacy
AIR
=
AIR

eye
(
size
(
AIR
))
+
diag
(
MSA
);
%Examine the antiimage of the correlation matrix. That is the negative of the partial correlations,
%partialling out all other variables.
N
=
BB
;
D
=
AA
+
BB
;
kmo
=
N
/
D
;
disp
(
' '
)
fprintf
(
'KaiserMeyerOlkin Measure of Sampling Adequacy: %3.4f\n'
,
kmo
);
if
(
kmo
>=
0.00
&&
kmo
<
0.50
);
disp
(
'The KMO test yields a degree of common variance unacceptable (Don
''
t Factor).'
)
elseif
(
kmo
>=
0.50
&&
kmo
<
0.60
);
disp
(
'The KMO test yields a degree of common variance miserable.'
)
elseif
(
kmo
>=
0.60
&&
kmo
<
0.70
);
disp
(
'The KMO test yields a degree of common variance mediocre.'
)
elseif
(
kmo
>=
0.70
&&
kmo
<
0.80
);
disp
(
'The KMO test yields a degree of common variance middling.'
)
elseif
(
kmo
>=
0.80
&&
kmo
<
0.90
);
disp
(
'The KMO test yields a degree of common variance meritorious.'
)
else
(
kmo
>=
0.90
&&
kmo
<=
1.00
);
disp
(
'The KMO test yields a degree of common variance marvelous.'
)
end
if
nargout
==
1
;
disp
(
' '
)
disp
(
'A = Antiimage covariance matrix.'
);
A
=
AIS
;
elseif
nargout
>
1
;
disp
(
' '
)
disp
(
'A = Antiimage covariance matrix.'
);
A
=
AIS
;
disp
(
'B = Antiimage correlation matrix.'
);
B
=
AIR
;
end
return
,
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment