This example illustrates the use of the FactorAnalysis class for a nine-variable matrix. FactorAnalysis.Model.PrincipalComponent
and input matrix type FactorAnalysis.MatrixType.Correlation
are selected.
using System; using Imsl.Stat; using PrintMatrix = Imsl.Math.PrintMatrix; using PrintMatrixFormat = Imsl.Math.PrintMatrixFormat; public class FactorAnalysisEx1 { public static void Main(String[] args) { 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.MatrixType.Correlation, 9); pc.FactorLoadingEstimationMethod = FactorAnalysis.Model.PrincipalComponent; pc.DegreesOfFreedom = 100; PrintMatrixFormat pmf = new PrintMatrixFormat(); pmf.NumberFormat = "0.0000"; 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.0543Link to C# source.