给大家安利一款朋友开发的自研国产数据分析基础工具,一键式自动分析,自动生成分析模板,5分钟掌握主流61个统计类数学模型(几乎涵盖SPSS绝大部分功能),以及23个有监督机器学习(包括随机森林,SVM,XGBoost等)
PS:巨方便简单上手,貌似现在是免费
官网:www.mpaidata.com mpai数据科学平台
因子分析可以看作是主成分分析的一个扩充,因子分析在数学建模中使用的没有主成分分析那么多。关于因子分析和主成分分析的区别可以看一下司守奎老师的“因子分析”那个章节。一开始就有介绍区别。
因子分析
1)主成分分析法:
例5 研究纽约股票市场上五种股票的周回升率。这里,周回升率=(本星期五市场收盘价-上星期五市场收盘价)/上星期五市场收盘价。从1975年1月到1976年12月,对这五种股票作了100组独立观测。因为随着一般经济状况的变化,股票有集聚的趋势,因此,不同股票周末回升率是彼此相关的。
相关系数矩阵:
对m=1和m=2,因子分析主成分解见下表。
变量 |
一个因子 |
两个因子 |
|||
因子载荷估计 |
特殊方差 |
因子载荷估计 |
特殊方差 |
||
|
|
||||
1 |
0.7836 |
0.3860 |
0.7836 |
-0.2162 |
0.3393 |
2 |
0.7726 |
0.4031 |
0.7726 |
-0.4581 |
0.1932 |
3 |
0.7947 |
0.3685 |
0.7947 |
-0.2343 |
0.3136 |
4 |
0.7123 |
0.4926 |
0.7123 |
0.4729 |
0.2690 |
5 |
0.7119 |
0.4931 |
0.7119 |
0.5235 |
0.2191 |
累积贡献 |
0.571342 |
|
0.571342 |
0.733175 |
|
对m=2,残差矩阵为
第一个因子F1代表了一般经济条件,称为市场因子,所有股票在这个因子上的载
荷都比较大,且大致相等,第二个因子是化学股和石油股的一个对照,两者分别有比较大的负、正载荷。可见F2使不同的工业部门的股票产生差异,通常称之为工业因子。归纳起来,我们有如下结论:股票回升率由一般经济条件、工业部门活动和各公司本身特殊活动三部分决定。
MATLAB源代码:
clc,clear
r=[1.000 0.577 0.509 0.387 0.462
0.577 1.000 0.599 0.389 0.322
0.509 0.599 1.000 0.436 0.426
0.387 0.389 0.436 1.000 0.523
0.462 0.322 0.426 0.523 1.000];
%下面利用相关系数矩阵求主成分解,val的列为r的特征向量,即主成分的系数
[vec,val,con]=pcacov(r);%val为r的特征值,con为各个主成分的贡献率
f1=repmat(sign(sum(vec)),size(vec,1),1); %构造与vec同维数的元素为±1的矩阵
vec=vec.*f1; %修改特征向量的正负号,每个特征向量乘以所有分量和的符号函数值
f2=repmat(sqrt(val)',size(vec,1),1);
a=vec.*f2 %构造全部因子的载荷矩阵
a1=a(:,1) %提出一个因子的载荷矩阵
tcha1=diag(r-a1*a1') %计算一个因子的特殊方差
a2=a(:,[1,2]) %提出两个因子的载荷矩阵
tcha2=diag(r-a2*a2') %计算两个因子的特殊方差
cc