下面是一个简单的Matlab实现因子分析的案例。
包括数据预处理、因子提取和因子旋转:
% 1. 数据预处理
load data.mat; % 加载数据
x = zscore(data); % 数据标准化
% 2. 因子提取
[cov_mat,~,latent] = pca(x); % 主成分分析
eig_sum = sum(latent); % 特征值之和
loadings = cov_mat./sqrt(eig_sum); % 因子载荷
[~,factors,~] = factoran(x, 2, 'rotate', 'varimax'); % 方差最大化旋转
factor_loadings = loadings * factors; % 旋转后的因子载荷
% 3. 结果可视化
figure;
subplot(1,2,1);
biplot(loadings(:,1:2), 'Scores', x(:,1:2)); % 绘制原始数据和因子载荷图
title('Original data and factor loadings');
subplot(1,2,2);
biplot(factor_loadings(:,1:2), 'Scores', x(:,1:2)); % 绘制旋转后的因子载荷图
title('Rotated factor loadings');
这里解释一下上面的代码: