8、spss做因子分析及主成分分析

简介: 上一篇文章我们讨论完了回归的最后一部分内容,非线性回归。这一次我们正式结束回归,开始讨论降维分析。在之前关于相关的内容里,我们就说过,做相关,回归等分析的时候,消除多重共线性是一个很复杂很复杂的问题,一次数据分析的变量多达三四十个是很正常的情况,这个时候调整变量的效果往往微乎其微,因此就需要用到一个有力办法,降维。 现在我们就来谈一谈降维。首先要先明确一个概念,什么是降维。我们知

上一篇文章我们讨论完了回归的最后一部分内容,非线性回归。这一次我们正式结束回归,开始讨论降维分析。在之前关于相关的内容里,我们就说过,做相关,回归等分析的时候,消除多重共线性是一个很复杂很复杂的问题,一次数据分析的变量多达三四十个是很正常的情况,这个时候调整变量的效果往往微乎其微,因此就需要用到一个有力办法,降维。

现在我们就来谈一谈降维。首先要先明确一个概念,什么是降维。我们知道“维”是一个数学领域的一个术语,放在统计分析里边,我们可以简单的理解为一个变量就是一个维。降维的意思就是说把原来的许多变量通过一些方法压缩为较少的变量,这样变量数减少了,也就是维数减少了,也就叫降维。因子分析由于应用广泛,所以是最广为人知的降维方法。此外由于主成分分析和因子分析联系非常紧密,并且,注意,并且,spss没有独立的模块来做主成分分析,所以,我就同时讨论这两种技术了。

【一】因子分析和主成分分析的异同

因子分析和主成分分析的相同和不同的地方是每一个希望使用因子分析这种分析手段的人所必须要掌握的知识点。在博客或者各种论坛上,有许多相关的资源贴。我们在这里不从数学层面进行讨论,主要从应用层面来展开讨论。

对于因子分析和主成分分析最主要的也是最重要的一点是:因子分析需要旋转矩阵,主成分分析则不用。(实际上,在spss里边,如果你做因子分析时旋转方法为不旋转的话,那你做的就是主成分分析)

第二个不同点在于结果的解释:对于因子分析,要求公共因子不相关。主成分分析则不要求这个。这里不得不讲一点点原理性的东西。因子分析的目的是将输入变量表示成各因子的线性组合,而主成分分析则是试图选择出主成分,其表示为各变量的线性组合。(基本上比较绕)关键在于,主成分分析的目的是解释变量的总方差,而因子分析则侧重于解释各变量之间的协方差。也就是说,对于主成分分析,我们的目的是提取出主成分,用我们的变量来表示。而对于因子分析,我们的目的是找出公共因子,用这些公共因子去表示我们原有的变量。这个因果关系的不同,就要求因子分析中我们找到的公共因子可以从逻辑上被解释。

因为我们不涉及原理的解说,因此主要的异同点就是这些了。

【二】主成分分析的操作方法

因为spss里并没有专门的模块可以用来做主成分分析,所以我们操作主成分析的时候,需要选择菜单分析——降维——因子分析,在因子分析的模块下做主成分分析。

在主面板里把你想要分析的变量选到右边的大框框里。注意,这里不选地区啊,省份啊这些标志性的变量。你要选你认为信息有重合的变量,举个例子,比如身高和坐高在一项健康状况里有重叠性的作用,那你就把它们选到这个变量框里。下边的选择变量是用来选择个案的,一般不需要管它。

打开描述对话框,全部勾选。打开抽取对话框,抽取对话框最上边有一个方法的下拉菜单。默认的是主成分。除了主成分以外,还有六种抽取方法,我们要做的是主成分分析,当然默认就可以啦,下边的输出勾选碎石图,未旋转的因子解。在下边有一个抽取。一般基于特征值就可以了。下边还有一个最大收敛性迭代次数,默认是25。打开旋转对话框,勾选载荷图。打开保存对话框,勾选保存为变量,显示因子得分系数矩阵。

注意,注意。现在我们打开选项对话框。将缺失值勾选为使用均值替换。如果你的变量有缺失值,那么一定要千万记得这一步。不然你的变量得分会有缺失,就是说你的结果基本废了。我老是搞忘掉这一步,然后每次都想哭TAT。

【三】主成分分析的结果解释

第一个要看的表是kmo,这个表里的kmo度量值(第一行)告诉你你的数据是否适合做因子分析/主成分分析。这个值大于0.65就可以了。通常只要你的变量确实彼此之间有重叠,直观的想想都觉得有关系的话,而且变量数比较多的话,那kmo一般是过得去的。然后第二个表看解释的总方差,你看第二行有一个方差的百分比,第三行是累计百分比。我们主要看这两个指标,第一个指标告诉你每个主成分的解释的方差(你不用去管什么叫解释的方差,记住那个指标有用,怎么判断就可以了。),第二个指标是前几个主成分加起来的方差。仔细观察,你会发现这两个指标之间存在一个加法和和的关系。

由于我们之前默认的提取方法是基于特征值,所以这里会自动为你提取主成分。不过我们一般认为提取的方差需要大于百分之八十五,如果你的主成分特征值大于1的累计方差值小于85%,那么很不幸的,我需要告诉你,你得重做一遍。这时候你的抽取里的个数,就选那个抽取固定的数目。然后设定的数目为你查这个表查询的得到的累计方差大于85%的主成分数目。

然后看成分矩阵和成分系数矩阵,这两个表都是反映变量在成分的权重。不过成分矩阵可以看成是反映了一个绝对值,第二个则反映了用变量写成分的表达式怎么写(有了表达式,才能算出成分得分哇)。这个类似于啊,类似于回归里边的标准系数和非标准系数。

最后一个是综合得分的计算,我们上边把成分得分保存为了变量,用这些成分得分可以计算一个综合得分出来,算法如下,用每个成分的方差的百分比作为权重,将成分相加就可以了。综合得分的用处在于排名次,比如看看全国31个省的通信质量的高低,通过综合得分就可以来排名。此外做聚类的时候哇,也可以用这个。

【四】因子分析的操作方法

类似于主成分分析。只是旋转那里勾选最大方差法。和大家公认的抽取方法里主成分法最好以外,选装方法一般认为最大方差法最好。

【五】因子分析的结果解释

类似于主成分分析。只是多了一个旋转成分矩阵。咳,注意了注意了。因子分析最精髓的一个点就在这里了。

你看这个表的时候一定要很小心仔细,这个表的行是每个成分,列是每个变量,然后每个格格里对应的数就是相对应的变量在相对应的成分里的权重指标。我们需要反过来付过去的做因子分析,最后达到一个什么状态呢?最后达到每个成分在所有的变量里边有一个系数占绝对优势,明显比其他系数大的多。举个例子,一个变量在三个成分的系数分别是0.3,0.2,0.8,哎,这个里边0.8明显比其他的大,这个因子就可以。再比如,这三个系数是0.4,0.6,0.6,那由于出现了两个最大值,所以呢这个因子就不可以。通常来说,认为这个最大的系数和第二大要差0.2,这样才认为占了绝对优势。

上边我们说过因子分析的重点在于,用公共因子去解释变量。认为变量收到了公共因子的影响。也就是说哇,我们认为有一个公共因子潜在的影响到了几个变量,使得他们表现出了多重共线性。所以呢,旋转成分矩阵里就要表现出这个公共因子对于变量的影响。一个变量不能既受这个因子的影响,又受那个因子的影响,一个变量只能受一个因子影响,所以它的系数只能有一个占大头。

然后我们就有了分别代表一些不同变量的成分(既然一个变量只能由一个成分代表,那么每个成分代表的变量也就不同哇),然后,注意,然后,我们就可以给这些成分命名了。

你大概很恼火,有完没完啊,不过命名还是挺简单的一个步骤,你观察你的每个成分所代表的变量,然后给它们命个名字。比如你的一个成分是身高,坐高,体重,那你就命名为人体体型,另一个成分是胸围,肩宽,盆骨宽,那你就命名为人体体宽,懂?

【六】注意事项

我觉得这个是最重要的一个部分。请仔细看看。

1.关于kmo,有时候(很多时候),你的kmo输不出来。它会告诉你什么什么系数矩阵是非正定的,反正就是没有kmo矩阵,遇到这种情况,先别急好吗?我只能大致的告诉你这个不是很严重,不影响结果的解读。具体怎么回事,请看这篇链接:http://www.ppvke.com/Blog/archives/3357

2.关于结果解读。因子分析会生成相当多的表哦,但是我们只解读了其中两三个表,这并不是其他的表就没有意义,比如碎石图,在许多论文里就要用到。可以直观的看到各个成分的作用大小。

3.关于预处理。请记得数据要先进行标准化以后,才可以做分析。

4.关于因子分析的旋转。旋转出合适的成分矩阵是很重要的一件事,你可以通过改变你的抽取方法或者增大你的抽取因子数目来改善你的矩阵,这些都是可能起到作用的。多试试。此外,那些系数是负的话,就是说明是负相关,很正常哈。

5.关于因子分析和主成分分析的辨析。通常使用因子分析。主要是因为它比较高级。


目录
相关文章
|
3天前
|
机器学习/深度学习
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟-1
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟
25 6
|
3天前
|
机器学习/深度学习 人工智能 算法
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟-2
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟
17 6
|
2天前
|
机器学习/深度学习 数据可视化 算法
【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享
【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享
39 13
|
3天前
|
算法
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
19 1
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
|
8天前
|
数据可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
16 0
|
9天前
|
机器学习/深度学习 数据可视化 算法
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
15 0
|
8天前
|
算法 C++ Python
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
32 0
|
8天前
R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
25 0
|
9天前
|
算法
R语言中Gibbs抽样的Bayesian简单线性回归
R语言中Gibbs抽样的Bayesian简单线性回归
16 0
|
9天前
|
数据可视化
R语言中GLM(广义线性模型),非线性和异方差可视化分析
R语言中GLM(广义线性模型),非线性和异方差可视化分析
12 0