首先,我们要知道这两个方法都是用于数据降维。在多变量,大样本的情况尤为适用。
那么,接下来我将以我理解的最简单的话来介绍它们,在此说明,若想要严谨,数学证明得大家自己去推。
那么什么叫做主成分分析?
主成分分析,又叫PCA.
是把多个原始变量进行线性组合来形成新的变量。
那么有人就会问,为什么要形成新的变量?不是有吗?
对,确实是有,但是变量太多,分析太复杂太困难了。
比如说,大学学生成绩,一共有90门科目,那么一个学生的成绩水平如何去衡量?当然是加权成绩啦!那么加权成绩就是这90个科目成绩变量的线性组合形成的新变量。
主成分就可以表示为:
a 表示权重,x表示原始变量
接下来,将以图的形式来直观的说明一下:
以下为身高和体重的12份数据x1,x2
可以看到,在y1方向上数据的信息更加充分表达数据之间的差异,y1 y2就是x1 与x2的线性组合。我们可以只用y1就可以代表原信息的80%以上,那么就可以抛弃y2,就实现的降维处理。
2-3个变量我们还可以通过图像看到主成分分析的几何解释,当变量超出我们可以感知的维度时我们就只能用数学去‘感觉'了。
那么主成分的系数如何计算呢?
要是在这里写出数学公式岂不是太扫兴了?
主成分就是找出数据在哪个方向变化最大,在统计中衡量一组数据变化的统计量是什么?没错,就是方差
由于要求各主成分不相关(就是要消除变量之间的相关性,要是提出来的主成分相关,还提它干什么?)
所以各主成分必须正交呗!什么叫正交?emmm,看上面,二维三维就是垂直。
二维上最多两个方向互相垂直,三维最多三个方向互相垂直,以此类推,n维(n个原始变量)最多n个方向垂直呗。所以,我们最多能计算出多少个主成分?对,也是n个。
能计算出n个,不代表就要n个,毕竟我们的目的是降维嘛!况且,除了前面的主成分,后面的主成分解释比例基本上不足1%,要他干嘛?
这样我们就把几十个变量变成几个变量,损失信息也不超过20%。
至于系数,当然是通过原始变量的相关系数矩阵的特征值和特征向量来计算的(具体计算就不写了,需要可以联系我,程序就只是一丢丢)。
程序实现(R)
1、数据为某市13个行业8项重要经济指标,其中x1为年末固定资产净值;x2为职工人数数据;x3为工业总产值;x4为全员劳动生产率;x5为百元固定资产原值实现值;x6为资金利税率;x7为标准燃料消耗率;x8为能源利用效率。
cor(data)
eigen(cor(data))
PCA = princomp(x,cor=T) ;summary(PCA)
PCA$loadings
你还可以计算各个样本在各个主成分下的得分。
接下来的分析就得仁者见仁,智者见智了,看各位自己的数据了。
什么叫做因子分析
因子分析,和主成分一样,也是一种降维技术,那么有人会问,二者有什么区别呢?且容我慢慢说,说完之后你们就完全不知道二者有什么区别了。
因子分析是假设我们数据中的变量里有一些共同的东西,专业术语叫做共同因子,还有一些特殊自己独有的东西,叫做特殊因子。
举个栗子,
现在,收集到你的身高,体重,睡眠时间,高数成绩,有没女朋友,这些变量,因子分析认为:
呀!你看你这么胖,成绩还不错,还有个女朋友,这里面肯定有些共同的因子在作用着。说不定是学习水平,
但是学习水平是测不出来的隐性因子,哎,没办法,只能通过这些原始变量来推出来的。
x代表变量,F代表因子,a代表参数。
有没有点眼熟,这不就是反过来的主成分分析嘛!
那么因子分析的系数如何求得?
让你们失望了,还是没有公式推导,当然,你们可以选择找我,我给你们发过来。
因子分析和主成分分析不同,主成分的参数是计算出的。
它的参数是估计的,有2种方式。
1、主成分法 线代 通过矩阵的普分解
2、极大似然法 统计
好了,假设参数你们算完了。各因子之间也是不相关的,比如你提出来了一个学习水平因子,你还能提出来一个知识水平因子吗?
既然是降维,那么肯定也涉及到选择因子的问题,因子和主成分一样,也可以提出more and more 因子,所以我们也只选择可以解释大部分信息的前几个因子,并且分析各因子的具体意义。(——这个是最难的,毕竟,前面说的东西,几行代码就全解决了。)
举个例子
程序实现
最大似然法计算因子分析 FAQ = factanal(x,4,rotation = "none")
主成分因子法计算因子分析 Fac = factpc(x,4) ; Fac
到这里,还远远没有结束,因子分析还有旋转因子,因子分析图,以及最重要的结果分析,但是,
我统统都不介绍,对于简单的想了解,我认为这就够了。
高山仰止,景行行止,虽不能至,然欣然向往之!