-
Notifications
You must be signed in to change notification settings - Fork 0
/
Factor_Analysis_Venkatesh.m
67 lines (52 loc) · 1.08 KB
/
Factor_Analysis_Venkatesh.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
%Factor Analysis
% By Venkateshwaran B
%load the data
%X = csvread("orissa org.csv", 1); %if the heading present
X = xlsread("Gm data (1).xlsx", 1); %if the heading is present
%Covarience matrix
S = cov(X);
% Eigenvalues and Eigenvectors
[V D] = eig(S);
%Separate the eigenvalues and eigenvectors
V1 = V;
D1 = D;
%Correlation matrix
K = corr(X);
%Eigenvalues and Eigenvectors
[V D] = eig(K);
V = V';
D = D';
%Scree plot
E1 = diag(D)
plot(E1);
% find the number of factors
E2 = zeros(size(E1));
for i=1:length(E1)
if E1(i) > 1
E2(i) = E1(i);
k = i;
else
E2 = E2(1:k);
end
end
E2 = E2';
%Calculate the factors
p = length(E2);
%Convert an Eigenvalue for unsquared
Dr = sqrtm(D);
%Factor loadings matrix
A = V * Dr;
%Factors Loadings
% sum of the squares of factor loadings should equal to the eigenvalues
% Communalities
Com = A(:, 1).^2;
%Unique variience
U = 1 - Com;
% Reproduced covarience matrix
R = A * A';
% Residual covarience matrix
R_res = K - R;
%Rotated factor matrix
A = A(:, 1:4);
%rotated factor matrix
B = rotatefactors(A, "Method", "varimax");