赞
踩
和之前一样,也是根据老师的课件和自己的理解整理的,不过为了减少不必要的时间开支,只会记录一些重要的点,其他不关心的就不记录了。
目录
区别①:分析角度不一样。因子分析侧重于找到变量的共同点或者异常点,并且把原有的变量分类,构成新的综合变量;主成分分析只是单纯的降维。
区别②:计算方法不一样。主成分分析是先投影到第一主成分上,方差最大化,然后第二主成分垂直于第一主成分。因子分析是已经知道了样本的分布,直接计算某个平面的概率最大化。
联系:如果样本均匀分布,那么因子分析退化成主成分分析。
图1
因子载荷A的估计有两种,一种是主因子估计(涉及到谱分解),计算样本投影到某个轴的方差最大;另一种是极大似然估计法,知道样本分布规律的时候,可以用极大似然法,估计样本落在某个平面的概率,然后求概率的最大方差。
图2
表示 xj (第i个变量)依赖 Fj (第j个因子)的程度,值越大,依赖程度越大。
①共同度就是列系数加总,表示同一个变量对所有因子的累计权重,如果低就说明这一组(m个)因子对该变量的解释性不好,也可以说因子的公共性不好。
②方差贡献就是行系数加总,表示同一个因子的累计权重。
为了寻找每个主因子的实际意义,如果各个主因子的典型代表变量载荷不高,就需要进行旋转,使得因子载荷矩阵中的绝对值向0和1两个方向分化。
图3
结合上图进行理解,旋转前六个变量的三个因子的载荷比较平均,旋转后就比较明显得知Factor1包括x1和x2。
已知 ,用回归估计法得到
图4
可以看到,狮头股份在Factor2轴上绝对值比较大,说明F2的得分比较高,同时狮头股份和x3方向一致,说明x3变量上狮头股份比其他主体得分更高。
①变量较少的时候看相关系数矩阵-如果相关系数较低,说明变量之间没有太高的相关性,就不需要因子分析了。
②变量较多的时候相关系数矩阵数据较多,如果看相关系数会比较麻烦,可以用KMO和Bartlet's检验
此时的旋转是为了涵盖尽可能多的信息。
一般大于80%就可以了。
和构造因子变量那一步的旋转不一样,这一步旋转因子是为了让结果更有解释性。相当于在上一步得到的因子基础上旋转我们的变量,让变量倾向于某个因子,让结果更有解释性。再结合一下图3和图5,其实可以知道银子旋转之后变量会更加贴近因子(理解为坐标轴)。
一般这一步用"varimax"(最大方差正交旋转法)
图5
- setwd(".../") #设定工作路径
- ex6.6 = read.csv("ex6.6.csv",header = T)
- d6.6 = ex6.6[,-1] #第一列不要
- rownames(d6.6) = ex6.6[,1] #给行名重新命名
- head(d6.6) #预览数据
-
- # 1、因子分析-KMO
- # 调用路径
- setwd("D:/.../")
- source("KMO_function.R") #调用老师写的函数
- KMO= KMO_fun(d6.6)
- KMO$overall; KMO$report #输出结果
-
- # 2、确定因子数目
- ## 可以用碎石图,也可以先选择3个,然后查看总方差,根据80%为临界值选择数目
- outa1 = factanal(d6.6,3,scores="regression",rotation="none") #不旋转
- outa2 = factanal(d6.6,3,scores="regression",rotation="varimax") #旋转
- ## factanal函数scores="regression(线性回归计算因子得分/Bartlett)"
-
- outa1$loadings #载荷
- outa2$loadings
-
- outa1$uniquenesses #共同度
- outa2$uniquenesses
-
-
- #旋转前:因子得分画图
- s1_before = outa1$scores[,1:2]
- l1_before = outa1$loadings[,1:2]
- biplot(s1_before,l1_before);abline(h=0,v=0,lty=3)
-
-
- #旋转后:因子得分画图
- s1_after = outa2$scores[,1:2]
- l1_after = outa2$loadings[,1:2]
- biplot(s1_after,l1_after);abline(h=0,v=0,lty=3)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。