This example illustrates the use of the FactorAnalysis class for a nine-variable matrix. The PRINCIPAL_COMPONENT_MODEL is selected and the input matrix type selected is a CORRELATION_MATRIX.
import java.text.*;
import com.imsl.stat.*;
import com.imsl.math.PrintMatrix;
import com.imsl.math.PrintMatrixFormat;
public class FactorAnalysisEx1 {
public static void main(String args[]) throws Exception {
double[][] corr = {
{1.0, 0.523, 0.395, 0.471, 0.346, 0.426, 0.576, 0.434, 0.639},
{0.523, 1.0, 0.479, 0.506, 0.418, 0.462, 0.547, 0.283, 0.645},
{0.395, 0.479, 1.0, 0.355, 0.27, 0.254, 0.452, 0.219, 0.504},
{0.471, 0.506, 0.355, 1.0, 0.691, 0.791, 0.443, 0.285, 0.505},
{0.346, 0.418, 0.27, 0.691, 1.0, 0.679, 0.383, 0.149, 0.409},
{0.426, 0.462, 0.254, 0.791, 0.679, 1.0, 0.372, 0.314, 0.472},
{0.576, 0.547, 0.452, 0.443, 0.383, 0.372, 1.0, 0.385, 0.68},
{0.434, 0.283, 0.219, 0.285, 0.149, 0.314, 0.385, 1.0, 0.47},
{0.639, 0.645, 0.504, 0.505, 0.409, 0.472, 0.68, 0.47, 1.0}
};
FactorAnalysis pc = new FactorAnalysis(corr, FactorAnalysis.CORRELATION_MATRIX, 9);
pc.setFactorLoadingEstimationMethod(pc.PRINCIPAL_COMPONENT_MODEL);
pc.setDegreesOfFreedom(100);
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(4);
PrintMatrixFormat pmf = new PrintMatrixFormat();
pmf.setNumberFormat(nf);
new PrintMatrix("Eigenvalues").print(pmf, pc.getValues());
new PrintMatrix("Percents").print(pmf, pc.getPercents());
new PrintMatrix("Standard Errors").print(pmf, pc.getStandardErrors());
new PrintMatrix("Eigenvectors").print(pmf, pc.getVectors());
new PrintMatrix("Unrotated Factor Loadings").print(pmf, pc.getFactorLoadings());
}
}
Eigenvalues
0
0 4.6769
1 1.2640
2 0.8444
3 0.5550
4 0.4471
5 0.4291
6 0.3102
7 0.2770
8 0.1962
Percents
0
0 0.5197
1 0.6601
2 0.7539
3 0.8156
4 0.8653
5 0.9130
6 0.9474
7 0.9782
8 1.0000
Standard Errors
0
0 0.6498
1 0.1771
2 0.0986
3 0.0879
4 0.0882
5 0.0890
6 0.0944
7 0.0994
8 0.1113
Eigenvectors
0 1 2 3 4 5 6 7 8
0 0.3462 -0.2354 0.1386 -0.3317 -0.1088 0.7974 0.1735 -0.1240 -0.0488
1 0.3526 -0.1108 -0.2795 -0.2161 0.7664 -0.2002 0.1386 -0.3032 -0.0079
2 0.2754 -0.2697 -0.5585 0.6939 -0.1531 0.1511 0.0099 -0.0406 -0.0997
3 0.3664 0.4031 0.0406 0.1196 0.0017 0.1152 -0.4022 -0.1178 0.7060
4 0.3144 0.5022 -0.0733 -0.0207 -0.2804 -0.1796 0.7295 0.0075 0.0046
5 0.3455 0.4553 0.1825 0.1114 0.1202 0.0696 -0.3742 0.0925 -0.6780
6 0.3487 -0.2714 -0.0725 -0.3545 -0.5242 -0.4355 -0.2854 -0.3408 -0.1089
7 0.2407 -0.3159 0.7383 0.4329 0.0861 -0.1969 0.1862 -0.1623 0.0505
8 0.3847 -0.2533 -0.0078 -0.1468 0.0459 -0.1498 -0.0251 0.8521 0.1225
Unrotated Factor Loadings
0 1 2 3 4 5 6 7 8
0 0.7487 -0.2646 0.1274 -0.2471 -0.0728 0.5224 0.0966 -0.0652 -0.0216
1 0.7625 -0.1245 -0.2568 -0.1610 0.5124 -0.1312 0.0772 -0.1596 -0.0035
2 0.5956 -0.3032 -0.5133 0.5170 -0.1024 0.0990 0.0055 -0.0214 -0.0442
3 0.7923 0.4532 0.0373 0.0891 0.0012 0.0755 -0.2240 -0.0620 0.3127
4 0.6799 0.5646 -0.0674 -0.0154 -0.1875 -0.1177 0.4063 0.0039 0.0021
5 0.7472 0.5119 0.1677 0.0830 0.0804 0.0456 -0.2084 0.0487 -0.3003
6 0.7542 -0.3051 -0.0666 -0.2641 -0.3505 -0.2853 -0.1589 -0.1794 -0.0482
7 0.5206 -0.3552 0.6784 0.3225 0.0576 -0.1290 0.1037 -0.0854 0.0224
8 0.8319 -0.2848 -0.0071 -0.1094 0.0307 -0.0981 -0.0140 0.4485 0.0543
Link to Java source.