查看原文
其他

Play with R 第17期:R进行探索性因子分析

荷兰心理统计联盟 荷兰心理统计联盟 2023-02-03




17.1 这章会告诉我们什么?



在社会科学中,我们经常试图测量不能直接测量的东西(所谓的潜在变量)。例如,管理研究人员(甚至心理学家)可能会对测量“职业倦怠”感兴趣,也就是说,当一个人在一个项目(比如一本书)上花了很长时间,突然发现自己缺乏动力、灵感,想不停地用头顶着电脑大喊‘拜托迈克,开门,让我走出地下室,我需要感受阳光在我皮肤上的温柔温暖!’. 你不能直接测量倦怠,它有很多方面。然而,你可以测量倦怠的不同方面:你可以了解动机、压力水平、这个人是否有新的想法等等。这样做之后,有助于了解这些差异是否真正地反应了单个变量。换句话说,这些不同的变量是由同一个底层变量驱动的吗?

因子分析(和主成分分析):一种识别变量组或簇的技术。




17.2 什么时候使用因子分析



这项技术有三个主要用途:

(1)了解一组变量的结构(例如,智力先驱如Spearman和Thurstone使用因子分析试图了解潜在变量“智力”的结构);

(2)构建一份问卷来测量潜在变量(例如,你可以设计一份调查问卷来测量工作倦怠;

(3)在尽可能多地保留原始信息的同时,将数据集缩小到一个更易于管理的大小(例如,多重共线性在多元回归中可能是一个问题,而因子分析可以通过组合存在共线性的变量来解决这个问题)。


总结:

因子分析的第一步是扫描变量,以检查它们之间是否有某种程度的关联,但这种相关不是太强。因子分析本身有几个阶段:检查一些初始问题(如样本量是否足够),决定保留多少因子,最后决定哪些项目负载于哪些因子(并试图理解这些因子的含义)。做完所有这些,你可以考虑项目是否是衡量你试图测量变量的可靠指标。

本章使用的R包:

Corpcor; psych; GPArotation

本章使用的R函数:

abs();alpha();as.matrix();c();cat();cbind();cor();cortest.bartlett();det();factor.model()

factor.residuals();factor.structure();ggplot2();hist();kmo();mean();nrow();plot();polychor();principal();print.psych();residual.stats();round();sqrt();sum();upper.tri()


专业名词:

Alpha factoring

Bartlett’s test of sphericity (Bartlett球形检验)

Common variance

Communality  共同度

Component matrix   成分矩阵

Confirmatory factor analysis (CFA)  验证性因素分析

Cronbach’s α 

Direct oblimin 直接斜交转轴法;

Extraction

Factor 因子

Factor analysis 因子分析

Factor loading 因子负载

Factor matrix  因子矩阵

Factor scores  因子分数

Factor transformation matrix, 因子转换矩阵

Kaiser’s criterion

Kaiser–Meyer–Olkin (KMO) measure of sampling adequacy

Latent variable 潜变量

Oblique rotation  斜交旋转

Orthogonal rotation  正交旋转

Pattern matrix  模式矩阵

Principal components analysis (PCA)  主成分分析

Promax  

Quartimax  四次方

Random variance 随机变量

Rotation  旋转

Scree plot  碎石图

Singularity

Split-half reliability   分半信度

Structure matrix   矩阵结构

Unique variance 独特变量

Varimax 方差最大法


因子:

R矩阵只是一个相关矩阵:变量之间的相关系数表(实际上,我们在第6章中看到了这些矩阵的小版本)。一个R矩阵的对角元素都是1,因为每个变量都与自身完美相关。非对角线元素是变量对之间的相关系数。

变量子集间较大相关系数的存在表明这些变量可能测量的是相同潜在维度的成分。这些潜在维度被称为因素(或潜变量)。

通过将数据集从一组相互关联的变量减少成较小的一组因素,因子分析通过使用最小数量的解释结构来解释相关矩阵中的最大共同偏差来实现简化。





17.3 因子



我们在对一些我们感兴趣的变量进行测量后,为了衡量不同变量间的关系,我们会对变量(以列的形式组织)进行两两的相关,这样就可以得到一个R矩阵,即矩阵内保存的是相关系数值。就像我们下面操作的这样,我们得到了四个变量的相关矩阵。R-矩阵的对角元素都是1,因为每个变量都与自身完全相关。非对角元素则是变量对或我们所说的问题之间的相关系数。如果变量子集之间存在大量相关系数的聚类,这表明这些变量可能度量的是同一基础维度的各个方面。这些潜在的维度被称为因素即factor(或潜在变量或者隐变量)。我们这里产生的R矩阵不太好,哈哈哈。

```{r echo=TRUE}set.seed(2020)age <- rnorm(40,mean = 20,sd = 2)size <- rnorm(40,mean = 10,sd = 2)wight <- rnorm(40,mean = 50,sd = 5)grade <- rnorm(40,mean = 100,sd = 10)tall <- rnorm(40,mean = 170,sd = 50)datatest <- data.frame(age,size,wight,grade,tall)Rmatrix <- cor(datatest)print(Rmatrix)```

通过将一个数据集从一组相互关联的变量缩减为一组更小的因素,因子分析通过使用最小数量的解释结构来解释相关矩阵中最大数量的公共方差,从而达到简约的目的。这也是因子分析最重要的作用之一。

接下来,我们使用作者假设的例子来学习这一部分。想象一下我们想要衡量一个人受欢迎的不同方面。我们可以进行一些因素测量,我们认为这些措施可以挖掘受欢迎程度的不同方面。所以我们可以衡量一个人社交技巧(social skills),他们的自私程度(selfish),别人对他们感兴趣的程度(interest),他们在交谈中谈论另一个人花费的时间比例(Talk1),他们花费时间谈论自己的时间比例(Talk2),和他们对人们说谎倾向((the Liar scale)。作者没给出这个例子的数据,因此,我们无法模拟了,只能使用书中的图了。

我们对不同变量构建相关矩阵,可以得到下图中的内容:

很明显,可以看到有两组相互关联的变量。因此,这些变量可能度量了一些常见的底层维度。一个人在谈话中谈论另一个人的数量,似乎与社交技能的水平以及对方对那个人的兴趣有高度的关联。此外,社交技能与他人对一个人的兴趣程度密切相关。这些关系表明,你的社交技能越好,你可能就越有趣、越健谈。然而,还有第二组变量。人们在谈话中谈论自己的次数与他们的自私程度和撒谎程度有关。自私也与说谎的程度有关。简而言之,自私的人很可能撒谎,谈论自己。

在因子分析中,我们试图通过观察哪些变量以一种有意义的方式聚集在一起,从而将这个R矩阵来简化为它的基本维度。通过查找与一组与其他变量高度相关的变量,但不与该组之外的变量相关,可以实现数据的简约化。在本例中,似乎有两个cluster符合要求。第一个因素似乎与一般的社交能力有关,而第二个因素似乎与一个人对待他人的方式有关(我们可以称之为体贴)。因此,人们可能会认为,受欢迎程度不仅取决于你的社交能力,还取决于你对他人是否真诚。


17.3.1 因子的图示表征

因子(在析因方差分析中不要与自变量混淆,这里所说的因子和方差分析里的完全不一样哦)是可以可视化为分类轴的统计实体,测量变量可以沿着分类轴绘制。简单地说,这句话的意思是,如果你把因子想象成一个图形的轴,那么我们可以沿着这些轴画出变量。各轴上变量的坐标表示该变量与各因子之间的关系强度。就如下图一样:

首先,对于这两个因素,轴线的范围都是-1到1,这是相关系数的极限。因此,一个给定变量的位置取决于它与这两个因素的相关性。圆圈代表了与因素1(社交能力:水平轴)高度相关的三个变量,但与因素2(考虑:垂直轴)的相关性较低。相反,三角形代表的变量与他人的考虑高度相关,但与社交性的相关性较低。从这个图中,我们可以看出,自私,一个人谈论自己的数量和他们说谎的倾向都有助于一个因素,可以被称为对他人的考虑。相反,一个人对别人有多感兴趣,他们有多有趣,以及他们的社交技能水平对第二个因素——社交能力有多大影响。在这个图中,我们一共是两个因素,但是如果得到的是三个因素,我们就需要一个3D图形来增加一个维度进行图示了。

从图中可以看出,变量在同一轴上有较大的坐标,以度量某些基础维度的不同方面。变量沿分类轴的坐标称为因子载荷(factor loaded)。因子载荷可以被认为是一个因子和一个变量之间的皮尔逊相关,从我们所知道的相关系数的解释应该可以知道,如果我们平方因子载荷,我们就可以得到一个特定变量对因子的实质性重要性的度量(其实就类似于R2所说明的)。


17.3.2 因子计算的数学表达

在上面例子的图中,我们可以看出因子是可以被表示为一条直线的,也就是我们看到的坐标轴,x表示了consideration这个因子,y则表示了social skill 这个因子。那么,我们可以考虑用可以表示直线的方程的方法来表征我们的因子,先回顾下我们之前看到的方程:

Y是因变量,不同的自变量对因变量的方差变化所贡献的值可以由beta(即b)来衡量。那么我们可以用下面的公式来表示因子:

我们注意到在这里的模型中和之前章节不一样是没有截距,这是因为直线是相交于0点的(因此截距也是0)。回到我们的例子中,我们使用这个公式来表示consideration和social skills 就可以写成下面的公式:

公式中代替b值的是我们得到每个变量与因子计算得到的相关系数的平方,即factor loaded。可以看出来,在社交性因素中,b值在talk1、social skill和interest方面较高。其余变量(Talk2、selfish和Liar)b的值非常低(接近0)。这告诉我们,三个变量是很重要的因素(b值高的),三个则较低。在consideration因子中,则是Talk2、selfish和Liar这三个很重要,其余三个则不重要。

我们使用数据的矩阵表达方式,可以将两个因子的矩阵表达如下:


为了理解矩阵的含义,试着将这些元素与方程(17.3)中的载荷联系起来。例如,第一行表示第一个变量Talk1,它对第一个因素(社交能力)的载荷为.87,对第二个因素(考虑)的载荷为.01。这个矩阵被称为因子矩阵或成分矩阵(如果做主成分分析的话)。

因子分析的主要假设是这些代数因子代表现实世界的维度,必须通过考察哪些变量在同一因子上有较高的载荷来猜测它们的性质。因此,心理学家可能认为,因素代表心理层面,教育研究人员可能认为它们代表能力,而社会学家可能认为它们代表种族或社会阶层。然而,这一假设是否站得住脚是一个极具争议的观点,一些人认为,因子分析得出的维度仅在统计意义上是真实的,是真实世界的虚构,其可能并不存在一个underlying的底物。

接下来我们连看看如何衡量因子和变量。


17.3.3 因子得分

一个因素可以用所测量的变量及其对该因素的相对重要性(用b的值表示)来描述。因此,在发现了存在哪些因素并估计了描述它们的方程之后,还应该可以根据构成变量的得分来估计一个人在某个因素上的得分。这些分数被称为因子分数(factor scores)。因此,如果我们想得出一个特定的人的社交能力得分,我们可以把他们在各种测量中的得分带入方程。这种方法称为加权平均数。事实上,这种方法过于简单,很少使用,但它可能是解释原理的最简单方法。例如,想象六个尺度范围从1到10,有人得分如下:Talk1(4),社交技巧(9),(8),Talk2(6)、自私(8),骗子(6),我们可以把这些值带入方程得到一个分数这个人社交能力和他们对别人的考虑(consideration):

其实这里呢是使用最简单的带入我们通过计算每个自变量相对于因子的距离(即b值,也就是因子载荷)得到的对因子的表达的线性方程来计算每个人在测量每个自变量时的得分来得出每个人的因子得分,相当于初中数学。从上面计算得分例子可以看出,这个人在社交能力上比不体贴人得分高。但是使用的测量量表会影响结果的分数,如果不同的变量使用不同的测量量表,那么不同因素的因子分数是无法比较的。因此,这种计算因子得分的方法很差,通常使用更复杂的方法。这也是统计中最常遇见的问题,可以看做是标准化的过程。


17.3.3.1. 回归的方法

有几种复杂的计算因子得分的技术,它们使用因子得分系数作为公式中的权重,而不是使用因子载荷。方程的形式保持不变,但是将方程中的b值替换为这些因子得分系数。因子得分系数的计算方法有几种。最简单的方法是回归法。在这种方法中,调整因子载荷以考虑变量之间的初始相关性;这样,测量单位的差异和变量的方差就得到了稳定。

为了得到因子得分系数矩阵(B),我们将因子载荷矩阵乘以原相关系数或R矩阵的倒数(r1)。在前一章中,我们学习到相关矩阵是不能被分割的(参见16.4.4.1节)。因此,如果我们要除以一个矩阵它不能直接做而是乘以它的逆矩阵。因此,通过将因素载荷的矩阵乘以相关矩阵的倒数,从概念上讲,就是将因素载荷除以相关系数。因此,得到的因子得分矩阵表示每个变量和每个因子之间的关系,同时考虑了变量对之间的原始关系。因此,这个矩阵代表了对变量和因素之间的独特关系的更纯粹的度量。

我们首先对数据中的六个变量构建的相关矩阵取逆(矩阵取逆如果不会的话,点击这个链接,肯定能看明白

http://www.360doc.com/content/18/0325/20/48503472_740145916.shtml)。然后和我们之前得到的因子载荷矩阵相乘,根据矩阵乘法(不会矩阵乘法,看这里,肯定也能学会,这是我见到的最简单的解释了https://blog.csdn.net/zbq_tt5/article/details/90046527),就可以得到一个回归矩阵了。

因子评分系数的模式是相同的:即前三个变量对第一个因子的载荷是高的,对第二个因子的载荷是低的,而后三个变量的载荷模式是相反的。不同之处在于权重的实际值更小,因为现在可以考虑变量之间的相关性。这些因子得分系数可以用来代替方程中的b值,就可得到如下公式:

这种生成因子得分的技术确保会最终得分的均值为0,方差等于估计因子得分与真实因子值之间的平方多重相关性。然而,回归方法的缺点是,这些分数不仅与它们所依据的因素相关,而且与来自不同正交因素的其他因素相关。


17.3.3.2. 因子得分的使用

因子评分有几个用途。首先,如果因子分析的目的是将大量的数据减少到测量变量的一个更小的子集中,那么因子得分告诉我们一个人在这个度量子集中的得分。因此,任何进一步的分析都可以在因子得分上进行,而不是在原始数据上。例如,我们可以进行t检验,看看女性是否明显比男性更善于社交。第二个用途是克服共线性问题的回归。如果在多元回归分析之后,我们已经确定了多重共线性的来源,那么分析的解释就会受到质疑(见7.7.2.3节)。在这种情况下,我们可以对预测变量进行主成分分析,将其简化为不相关因素的子集。引起多重共线性的变量将组合成一个因子。如果我们重新进行回归,但是使用因子得分作为预测变量,那么多重共线性的问题就会消失(因为这些变量现在合并为一个单一因素)。

读者可能好奇那这些因子是如何被找到的呢?作者在这里故意隐去了这个较难的数学问题,而是从比较容易理解的具体例子中体现出因子的作用的。如果有同学感兴趣,可以读书里的附加材料,是有如何求出因子的计算方法的,如PCA。


17.3.4. 选择何种方法

在因子分析中,首先需要知道的是,有几种方法可以挖掘数据中的因子。您选择的方法将取决于您希望对分析做什么。Tinsley和Tinsley(1987)很好地说明了不同的方法。有两件事需要考虑:是否要将样本中的发现推广到总体,是否要研究数据或测试特定的假设。本章描述了使用因子分析探索数据的方法。

测试关于潜在变量的结构和它们之间的相互关系的假设需要相当的复杂性,并且可以通过像R中的sem或Lavaan这样的包来完成。对假设检验技术(即验证性因子分析)感兴趣的读者,建议阅读Pedhazur和Schmelkin(1991年,第23章)的介绍。

假设我们想要研究我们的数据,那么我们需要考虑是将我们的发现应用到收集的样本(描述性方法)还是将我们的发现推广到总体(推理方法)。当因子分析最初被提出时,人们认为它将被用来研究数据以产生未来的假设。因此,假定这项技术将适用于所有有关的样本。因此,某些技术假设使用的样本是总体,因此结果不能外推到特定的样本之外。

主成分分析就是其中之一,主因素分析(principal axis factoring)也是其中之一。主成分分析和主因子分析是较好的方法,通常得到相似的结果(见17.3.6节)。当使用这些方法时,结论只局限于收集的样本,只有使用不同的样本进行分析,发现相同的因子结构,才能实现结果的泛化。

另一种方法是假设参与者是随机选择的,所测量的变量构成了我们感兴趣的变量的总体。通过这样的假设,就有可能发展出一种技术,使结果可以从样本参与者推广到更大的群体。然而,一个约束条件是,任何发现只适用于所测量的变量集(因为我们假设这个集合构成了所有变量)。这类方法包括最大似然法(参见哈曼,1976)和Kaiser s alpha因子。方法的选择在很大程度上取决于研究者希望从数据中得到什么样的概括。


17.3.5 公因子方差

一个特定变量的总方差有两个组成部分:一部分与其他变量或度量(共同方差,common variance)共享,另一部分特定于该度量(唯一方差,unique variance)。我们倾向于使用“唯一方差”这个术语来指代那些只能可靠地归因于一个测量的方差。然而,也有一些方差是特定于一个测量的,但并不可靠;这个方差叫做误差或随机方差。一个变量中出现的共同方差的比例称为共同性。因此,没有特定方差(或随机方差)的变量的公共性为1;如果一个变量的方差与其他任何变量都不相同,那么该变量的公共性为0。

在因子分析中,我们感兴趣的是找出数据中共同的潜在维度,因此我们主要只对共同方差感兴趣。因此,当我们进行因子分析时,最基本的是要知道我们的数据中有多少方差是共同方差。这就给我们带来了一个逻辑上的僵局:要进行因子分析,我们需要知道数据中存在的共同方差的比例,而找出共同方差的程度的唯一方法是进行因子分析。有两种方法可以解决这个问题。首先,假设所有方差都是公共方差。因此,我们假设每个变量的公共性为1。

通过这个假设,我们只是将原始数据转换成组成的线性成分(称为主成分分析)。第二种方法是通过估计每个变量的公共值来估计公共方差的数量。估计公共性的方法多种多样,但最常用的方法(包括因式分解)是利用各变量与其他变量的平方多重相关(SMC)。


17.3.6因素分析和主成分分析的比较

简单地说,因子分析得出一个数学模型,从这个数学模型中可以估计因子,而主成分分析只是把原始数据分解成一组线性变量。Dunteman(1989年)和Widaman(2007年),以获取有关程序之间差异的更多详细信息。因此,只有因子分析才能估计潜在的因素,而这些估计的准确性依赖于各种假设。主成分分析只关心确定数据中存在哪些线性成分,以及特定变量如何对该成分作出贡献。在理论方面,本章是主成分分析,而不是因子分析。其原因是主成分分析是一种心理计量学上合理的方法,在概念上比因子分析简单,与判别分析有许多相似之处(前一章已经描述过)。

但是,我们应该考虑这些技术是否为相同的问题提供了不同的解决方案。Guadagnoli和Velicer(1988)在广泛的文献综述的基础上得出结论,主成分分析产生的解决方案与因子分析技术产生的解决方案差别不大。事实上,在某些情况下,这种说法是不正确的。Stevens(2002)总结了证据并得出结论,如果30个或30个以上的变量和共同性大于0.7。不太可能有不同的解决方案;然而,少于20个变量和任何低的共同性(< 4),差异就会发生。


17.3.7 主成分分析背后的理论

主成分分析与MANOVA和判别函数分析非常相似(见前一章)。虽然没有必要详细地理解数学原理,但是阅读前一章的读者可以从这两种技术之间的一些比较中获益。对于那些还没有读过这一章的人,我建议你在继续阅读之前快速浏览一下。

在MANOVA分析中,计算了包含因变量间关系信息的各种平方和和和外积矩阵。作者之前提到过,这些SSCP矩阵可以很容易地转换成方差协方差矩阵,它们表示相同的信息,但是以平均的形式(即考虑到观察到的数目)。通过将每个元素除以相关的标准偏差,方差协方差矩阵就标准化了。结果是一个相关矩阵。在主成分分析中,我们通常处理相关矩阵(虽然也可以分析方差、协方差矩阵),需要注意的是,这个矩阵几乎与方差分析中的SSCP矩阵表示相同的信息。不同之处在于,相关矩阵是已标准化的SSCP的平均版本。在在MANOVA中,我们使用了几个SSCP矩阵来表示实验变量的不同组成部分(模型变量和剩余变量)。在主成分分析中,协方差(或相关)矩阵不能以这种方式分解(因为所有数据都来自同一组参与者)。

在MANOVA中,我们最终查看了代表模型方差与误差方差之比的SSCP矩阵的变量或组件。这些变量是分隔测试组的线性维度,我们看到因变量映射到这些基础组件。简而言之,我们考虑的是这些组是否可以被因变量的某个线性组合分开。通过计算SSCP的特征向量得到了这些变量。得到的变量数是p(因变量数)和k-1(其中k是组数)中较小的。在成分分析中,我们做的也是类似的事情(作者在这里使用的是简化的解释,为了使读者更容易理解)。

也就是说,我们用一个相关矩阵来计算变量。没有观察组,因此计算出的变量的数量总是等于测量到的变量的数量的(p)。对于MANOVA来说,变量是通过与相关矩阵相关的特征向量来描述的。特征向量的元素是各变量在变量上的权重(见式(16.5))。这些值在这里是前面描述的因子载荷。与每个特征向量相关的最大特征值为每个变量(或组件)的实质重要性提供了单个指标。基本思想是我们保留那些特征值相对大的因子而忽略那些特征值相对小的因子。其实就类似于将方程中能够共同描述一个因子的那些较大的b值保留,而把那些较小的,没什么贡献的b值置0.

一个因素的特征值也可以通过对该因素的载荷的平方求和来计算。如果你重新计算因子分析,这没有多大用处,因为你需要计算特征值来计算载荷。但它可以是一个有用的方法来帮助理解特征值,一个因素的载荷越高,这个因素解释的变量的方差就越大。

总之,主成分分析的工作方式与MANOVA类似。我们从一个表示变量之间关系的矩阵开始。然后通过确定矩阵的特征值来计算该矩阵的线性分量(也称为变量或因子)。这些特征值是用来计算特征向量的,特征向量的元素对一个特定的因素提供了一个特定的变量 (即。,即式(17.1)中的b值)。特征值也是对与之相关的特征向量的实质重要性的度量。



17.3.8因素提取:特征值和碎石图

并不是所有的因素都会被保留在分析中,而且对于用来决定一个因素在统计上是否重要的标准是存在争议的。在前面提到,与变量相关的特征值表明了该因素的实质性重要性。因此,我们只保留特征值较大的因子似乎是合乎逻辑的。保留因子被称为因子提取(extraction)。我们如何决定一个特征值是否足够大来代表一个有意义的因素呢?Cattell (1966b)提倡的一种技术是将每个特征值(y轴)与与其相关的因素(x轴)作图。这个图被称为碎石图(因为它看起来像一个底部有一堆碎石的岩石表面)。之前提到过,有变量就有可能获得尽可能多的因子,并且每个因子都有一个相关的特征值。通过对特征值作图,可以看出各因素的相对重要性。通常会有几个特征值很高的因子,和许多特征值相对较低的因子,所以这个图有一个非常典型的形状:曲线有一个急剧下降,然后开始逐渐下降(见图17.4)。Cattell (1966b)认为,选择因子的分界点应该在该曲线的拐点上。拐点是直线的斜率发生急剧变化的地方:因此,在图17.4中,可以想象绘制一条直线来总结垂直部分,另一条直线总结水平部分(蓝色虚线);那么拐点就是这两条线相交的数据点。在图17.4的两个例子中,拐点出现在第三个数据点(因素);因此,我们提取两个因子。因此,您只保留(或提取)拐点左侧的因子(而不包括拐点本身的因子)。对于200多名参与者的样本,scree plot为因子选择提供了一个相当可靠的标准(Stevens, 2002)。

虽然碎石图是非常有用的,因素选择不应该仅仅基于这个标准。Kaiser(1960)建议保留所有特征值大于1的因子。这个标准是基于这样的思想:特征值代表由一个因子解释的变化量,特征值1代表大量的变化。Jolliffe(1972, 1986)报告说Kaiser的标准太严格,建议第三种选择保留所有特征值大于0.7的因素。这两种值的争论作者认为是戏剧性的,我觉得这个看起来有点像alpha水平设置0.05算呢还是设置0.01呢,还是说更严格呢。你们怎么看?

您可能很想知道这些方法是如何比较的。一般来说,Kaiser的标准高估了需要保留的因素的数量(参见Jane Superbrain Box 17.2),但是有证据表明,当变量的数量小于30和由此产生的共同性(提取后)都大于0.7时,它是准确的。当样本容量超过250且平均公共性大于或等于0.6时,Kaiser的标准也可以是准确的。在其他任何情况下,如果样本容量大于200,最好使用碎石图(参见Stevens, 2002,了解更多细节)。


17.3.9 提高因子分析的解释力:因素转换(factor rotation)

一旦因子被提取出来,就可以计算出变量对这些因子的影响程度(即,计算各因素对变量的载荷)。通常,你会发现大多数变量对最重要的因素有高的载荷,而对所有其他因素有低的载荷。这种特性使得我们在解释的时候变得困难,因此人们使用了一种叫做因素转换的技术来区分因子。如果一个因素是一个分类轴,变量可以沿着它绘制,那么因素旋转可以有效地旋转这些因素轴,这样变量就可以最大限度地载荷到一个因素上。图17.5用一个只有两个因素的例子说明了这个过程是如何工作的。

左图为正交旋转,右图为非正交旋转(也叫斜交转轴法,oblique rotation)

有两种旋转可以完成。第一个是正交旋转,图17.5左侧为该方法。在第10章中,我们知道正交这个术语的意思是不相关的即独立的,在这种情况下,它的意思是我们在保持因素独立或不相关的情况下,对它们进行转换。在旋转之前,所有的因素都是独立的。正交旋转确保了这些因素保持不相关。这就是为什么在图17.5中,坐标轴在保持垂直的同时转动。另一种形式的旋转是非正交旋转。与正交旋转的不同之处在于,这些因素可以相互关联(因此,图17.5右侧图表的轴线不保持垂直)。

旋转的选择取决于是否有一个很好的理论理由来假设这些因素应该是相关的或独立的,以及变量在旋转之前是如何聚集在这些因素上的。关于第一点,我们可能不希望酒精中毒完全独立于高成就(毕竟,高成就会导致高压力,而高压力会导致酗酒!)因此,在理论上,我们可以选择斜向旋转。关于第二点,图17.5演示了集群的位置对于决定旋转的成功程度是多么重要(请注意浅蓝色圆圈的位置)。具体地说,如果在右边的图上进行正交旋转,那么它在最大限度地增加载荷方面的效果要比显示的斜旋转差得多。一种方法是使用两种类型的旋转来运行分析。Pedhazur和Schmelkin(1991)认为,如果斜交旋转显示出提取因子之间的相关性很小,那么使用正交旋转解决方案是合理的。如果斜交旋转显示出相关的因子结构,则应放弃正交旋转的解。在任何情况下,只有当有充分的理由假定潜在因素在理论上是相关的时候,才应使用斜向旋转。因子旋转的数学原理过于复杂,我们就不解释了,会用就行,哈哈哈。

17.3.9.1.选择一种因子旋转的方法

我们将使用的R函数有四种正交旋转方法(varimax、quartimax、BentlerT和geominT)和五种斜向旋转方法(oblimin、promax、simplimax、BentlerQ和geominQ)。这些方法的不同之处在于它们如何旋转因子,因此,结果输出取决于你选择的方法。

最重要的正交旋转是quartimax和varimax。四分轴旋转试图最大限度地扩展一个变量在所有因素中的因子载荷。因此,解释变量变得更容易了。然而,这常常导致大量的变量在单个因素上高度载荷。与之相反的是,它试图最大限度地分散载荷的因素。因此,它试图在每个因素上加载较少的变量,从而产生更多可解释的因素集群。对于第一次分析,可能应该选择varimax,因为它是一种很好的通用方法,可以简化因素的解释。

两个重要的斜向旋转是promax和oblimin。Promax是为非常大的数据集设计的一个更快的过程。(如果您对这些旋转、其他旋转、甚至手动旋转的调整感兴趣,可以参考psych包中的GPARotate()函数。)从理论上讲,转换的准确选择将在很大程度上取决于你是否认为潜在的因素应该是相关的。

如果你希望这些因素是独立的,那么你应该选择一个正交旋转(作者推荐varimax)。然而,如果有理论根据假设你的因素可能相关,那么应该选择直接oblimin。在实践中,我们有充分的理由相信,正交旋转对于自然主义数据来说是完全没有意义的,当然对于任何涉及人类的数据也是如此(你能想到任何与其他心理结构没有任何关联的心理结构吗?)因此,一些人认为不应该使用正交旋转。

17.3.9.2 因素载荷的实质重要性

一旦发现了一个因素结构,就必须决定哪些变量构成哪些因素。前面说过,因素载荷是衡量某一特定变量对某一特定因素的实质性重要性的标准。因此,我们使用这些值来放置带有因子的变量是有意义的。可以评估一个因素载荷的统计意义(毕竟,它只是一个相关系数或回归系数);然而,有各种各样的原因,使得这个选择不像看起来那么容易(见史蒂文斯,2002年,第393页)。通常,研究人员认为大于0.3的绝对值是重要的。然而,一个因素的重要性将取决于样本量。Stevens(2002)提出了一个临界值表,可以根据它来比较载荷。总而言之,他建议的样本大小为50时,载荷大于0.722可以被认为是重要的,100时应大于0.512,200应该是大于0.364,300应该是大于0.298,600它应大于0.21,1000应该是大于0.162。

这些值基于.01(双尾)的alpha级别,这考虑到了需要测试几个载荷的事实(参见Stevens, 2002,了解更多细节)。因此,在非常大的样本中,小的载荷可以被认为是有统计意义的。(R可以提供因子载荷的显著性检验,但这些检验相当复杂,很少使用。通过应用史蒂文斯的指导方针,你应该对变量和因素的结构有一些深入的了解。载荷的重要性几乎不能说明一个变量对一个因素的实质性重要性。这个值可以通过平方因子负载来得到,从而得到一个由变量(比如R2)所占的因子的方差的估计值。在这方面,Stevens(2002)建议只解释绝对值大于0.4的因素载荷(这解释了变量中16%的方差)。





17.4 研究示例



因子分析的一个重要应用就是开发问卷,毕竟如果你想测量某种能力或特质,你需要确保所问问题与所要测量的构念是关联的。作者发现很多学生对于学习R感到很焦虑,因此想要设计一个问卷用于测量一种被我称作“R焦虑”的特质。采用访谈法找到了一些对于R有学习焦虑及无焦虑的学生进行测量,根据反馈总结出23个问题。每一个问题都是一个陈述句,后设从“非常不同意”到“非常同意”的5点李克特计分。

问卷用于预测个体在学习R时会有多焦虑,此外作者还想知道关于R的焦虑能够分成若干个特定的焦虑,换而言之就是找出潜变量。在几个教师的一点帮助下,作者回收了2571份问卷(看到这,读者应该猜到数据是虚构的吧哈哈)。数据储存在RAQ.dat。在R中载入数据,我们可以看到数据的组织形式为:被试放置于行,变量放置于列,这与先前几章是一致的。

17.4.1 样本量

相关系数可能随着样本量的变化而波动,在小样本的情况下尤甚。因此因子分析的信度依赖于样本量。而关于适合的样本量大小,不同研究者有不同的观点。通常的规则是建议对应于每个变量应该有10~15个被试,但是这种说法并没有明确的理论基础。这显然导致了“混乱”的局面。

最近几年研究者通过一系列数据模拟的实验(详见原文),提供了有力的实证基础。总结成一句话,300或更大的样本是能够提供稳定的因子分析结果的。但同样重要的是研究者需要测量足够多的变量来找到理论上所有因子。

另一种替代的方法是使用Kaiser-Meyer-Olkin(KMO)抽样充分性衡量。可以为单个变量和多个变量计算KMO,并且KMO表示变量之间的相关平方与变量之间的部分相关平方的比率。KMO统计信息在0到1之间变化。值为0表示部分相关的总和相对于相关的总和大,表明相关模式的分散(因素分析可能是不合适的)。接近1的值表示相关模式相对紧凑,因子分析能够用产生不同且可靠的因子。Kaiser(1974)建议接受大于0.5的值,几乎不能接受(低于此值,你要么收集更多数据,要么重新考虑要包含的变量)。此外,0.5和0.7之间的值是中等的,0.7和0.8之间的值是较好的,0.8和0.9之间的值很大,而0.9以上的值是非常好的(Hutcheson&Sofroniou,1999)。

17.4.2 变量间的相关

“垃圾进,垃圾出”这句名言同样适用于因子分析,这是因为如果变量分析毫无意义的话,R提供的因子分析不会产生任何实际作用。实施因子分析时需要关注两个潜在问题,一个是相关不够高,另一个是相关太高。两种情况下的解决方案都是从分析中去除某些变量。我们逐一来考虑。

如果我们的问题是用于测量相同的潜在维度的,我们会期望有一个高相关,毕竟它们是在测量同一个事物。我们可以通过直观地扫描相关矩阵并寻找低于.3的相关性来测试此问题:如果任何变量的相关性低于此值,则考虑排除它们。

如果要客观地检验相关性(整体)是否太小,可以测试一种非常极端的情况。如果我们的相关矩阵中的变量根本不相关,则我们的相关矩阵将是一个单位矩阵(即非对角线成分为零)。巴特利特(Bartlett)的检验用于检查人口相关矩阵是否类似于单位矩阵。如果总体相关矩阵类似于单位矩阵,则意味着每个变量与所有其他变量的相关性非常差(即所有相关系数都接近于零)。如果这是一个单位矩阵,那么这意味着所有变量都是完全独立的(所有相关系数均为零)。鉴于我们正在寻找测量相似事物的变量集群,很明显这种情况会带来问题:如果没有变量相关,那么就找不到集群了。巴特利特(Bartlett)的检验告诉我们,我们的相关矩阵是否与单位矩阵显著不同。因此,如果有效,则意味着变量之间的相关性(总体)与零显著不同。但是,与任何显著性检验一样,它取决于样本量,在因子分析中,我们通常使用非常大的样本。不显著的Bartlett检验肯定会引起关注,但显著的检验并不一定意味着相关性足够大,从而使得分析有意义。如果你确定某变量与许多其他变量的相关性很低,则应该把它们从因子分析中排除。

相反的问题是变量之间的相关性太高。尽管轻微的多重共线性不会对因素分析造成问题,但重要的是要避免极端多重共线性(即高度相关的变量)和奇异性(完全相关的变量)。与回归一样,多重共线性在因子分析中会引起问题,因为无法确定对高度相关的变量的因子的唯一贡献(如多元回归的情况)。因此,除了扫描相关矩阵中的低相关性外,我们还可以寻找非常高的相关性(r>0.8)。诸如此类的启发式方法的问题在于,r =0 .9的两个变量的影响可能小于在r =0 .6时的三个变量的影响。换句话说,消除这种高度相关的变量可能不是导致多重共线性的原因(Rockwell,1975)。可以通过查看R矩阵的行列式(| R |)来检测多重共线性。一种简单的启发式方法是R矩阵的行列式应大于0.00001。如果你有理由相信相关矩阵具有多重共线性,那么可以查看相关矩阵中相关性非常高的变量(R> 0.8),并考虑消除其中一个变量(或更多,取决于问题的严重程度),然后继续。你可能需要反复试验才能找出造成问题的变量(并非总是两个变量之间的相关性最高,它可能是大量相关性不太明显的变量)。

17.4.3 数据的分布

在寻找相互关系的同时,还应确保变量具有大致的正态分布并在等距量尺下进行测量。如果你希望将分析结果推广到收集的样本之外,则正态性假设最为重要。你可以对非连续数据进行因子分析。例如,如果你有二分变量,则应根据多变量相关系数构建相关矩阵。




17.6  在R上进行因子分析




library(corpcor)library(GPArotation)library(psych


## Warning: package 'psych' was built under R version 3.6.2

raqData<-read.delim("raq.dat", header = TRUE);#读入数据raqMatrix<-cor(raqData);#求相关矩阵correlation matrixround(raqMatrix, 2);#取两位小数

#因此,我们可以使用这个相关矩阵来检查关系的模式。首先,扫描矩阵寻找大于0.3的相关性,然后寻找只有少量相关性大于这个值的变量。然后查找相关系数本身,寻找任何大于0.9的。如果发现了任何问题,那么您应该意识到,由于数据中的多重共线性,可能会出现问题。

cortest.bartlett(raqData)  #bartlett检验cortest.bartlett(raqMatrix, n = 2571)

## $chisq
## [1] 19334.49
##
## $p.value
## [1] 0
##
## $df
## [1] 253

#另一种KMO检验方法

install.packages("DSUR")kmo(raqData)

#不过似乎加载不那个包了(http://tolstoy.newcastle.edu.au/R/e2/ help/07/08/22816.html)

det(raqMatrix)#最后,我们想要相关矩阵的行列式。为了找到行列式,我们使用det()函数,将相关矩阵的名称放入其中。我们已经计算了这个矩阵的当前数据(raqMatrix)。

## [1] 0.0005271037

det(cor(raqData));

## [1] 0.0005271037


17.6.3因子提取

• To decide how many factors to extract, look at the eigenvalues and the scree plot.

• If you have fewer than 30 variables then using eigenvalues greater than 1 is OK (Kaiser’s criterion) as long as your communalities are all over .7. Likewise, if your sample size exceeds 250 and the average of the communalities is .6 or greater then this is also fine. Alternatively, with 200 or more participants the scree plot can be used.

• Check the residuals and make sure that fewer than 50% have absolute values greater than 0.05, and that the model fit is greater than 0.90.

library(psych)
#pcModel<-principal(dataframe/R-matrix, nfactors = number of factors, rotate= "method of rotation", scores = TRUE/FALSE)

pc1 <- principal(raqData, nfactors = 23, rotate = "none") pc1 <- principal(raqMatrix, nfactors = 23, rotate = "none") pc1

#length(dataFrame)
#length(matrix[,1])
#用这两个函数可以比较简单求出数据集中的变量

pc2 <- principal(raqData,nfactors=length(raqData),rotate="none")pc2 <- principal(raqMatrix,nfactors=length(raqMatrix[,1]), rotate="none")


pc1#显示了第一个主成分模型的结果。第一部分是未旋转的载荷。目前这些并不有趣,但是它们代表了从每个因素或组件到每个变量的加载

#解释输出

plot(pc1$values, type = "b")
pc2 <- principal(raqData, nfactors = 4, rotate = "none") pc2 <- principal(raqMatrix, nfactors = 4, rotate = "none") pc2

## Principal Components Analysis
## Call: principal(r = raqMatrix, nfactors = 4, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
##       PC1   PC2   PC3   PC4   h2   u2 com
## Q01  0.59  0.18 -0.22  0.12 0.43 0.57 1.6
## Q02 -0.30  0.55  0.15  0.01 0.41 0.59 1.7
## Q03 -0.63  0.29  0.21 -0.07 0.53 0.47 1.7
## Q04  0.63  0.14 -0.15  0.15 0.47 0.53 1.3
## Q05  0.56  0.10 -0.07  0.14 0.34 0.66 1.2
## Q06  0.56  0.10  0.57 -0.05 0.65 0.35 2.1
## Q07  0.69  0.04  0.25  0.10 0.55 0.45 1.3
## Q08  0.55  0.40 -0.32 -0.42 0.74 0.26 3.5
## Q09 -0.28  0.63 -0.01  0.10 0.48 0.52 1.5
## Q10  0.44  0.03  0.36 -0.10 0.33 0.67 2.1
## Q11  0.65  0.25 -0.21 -0.40 0.69 0.31 2.2
## Q12  0.67 -0.05  0.05  0.25 0.51 0.49 1.3
## Q13  0.67  0.08  0.28 -0.01 0.54 0.46 1.4
## Q14  0.66  0.02  0.20  0.14 0.49 0.51 1.3
## Q15  0.59  0.01  0.12 -0.11 0.38 0.62 1.2
## Q16  0.68  0.01 -0.14  0.08 0.49 0.51 1.1
## Q17  0.64  0.33 -0.21 -0.34 0.68 0.32 2.4
## Q18  0.70  0.03  0.30  0.13 0.60 0.40 1.4
## Q19 -0.43  0.39  0.10 -0.01 0.34 0.66 2.1
## Q20  0.44 -0.21 -0.40  0.30 0.48 0.52 3.2
## Q21  0.66 -0.06 -0.19  0.28 0.55 0.45 1.6
## Q22 -0.30  0.47 -0.12  0.38 0.46 0.54 2.8
## Q23 -0.14  0.37 -0.02  0.51 0.41 0.59 2.0
##
##                        PC1  PC2  PC3  PC4
## SS loadings           7.29 1.74 1.32 1.23
## Proportion Var        0.32 0.08 0.06 0.05
## Cumulative Var        0.32 0.39 0.45 0.50
## Proportion Explained  0.63 0.15 0.11 0.11
## Cumulative Proportion 0.63 0.78 0.89 1.00
##
## Mean item complexity =  1.8
## Test of the hypothesis that 4 components are sufficient.
##
## The root mean square of the residuals (RMSR) is  0.06
##
## Fit based upon off diagonal values = 0.96

输出中h1表示公共属性(有时称为h2),u2表示唯一性列,标记为u2。这是每个变量的唯一方差,它是1减去公共性。


factor.model(pc2$loadings)# 使用factor.model()函数请求的经过编辑的重新生成的相关矩阵

#看看我们是否提取了正确的数量的因素:这是复制的相关矩阵和差异之间的复制相关矩阵和相关矩阵的数据

residuals<-factor.residuals(raqMatrix, pc2$loadings)

#重现矩阵中的相关性与r -矩阵中的相关性不同,因为它们源于模型而不是观测数据。如果该模型与数据完全吻合,那么我们期望重现的相关系数与原始的相关系数相同。因此,为了评估模型的适用性,我们可以观察观察到的相关性与基于模型的相关性之间的差异。计算公式示例:


large.resid<-abs(residuals) > 0.05sum(large.resid)

## [1] 205

sum(large.resid)/nrow(residuals)

## [1] 8.913043

sqrt(mean(residuals^2))

## [1] 0.1191977

hist(residuals)


#函数

residual.stats<-function(matrix){residuals<-as.matrix(matrix[upper.tri(matrix)]) large.resid<-abs(residuals) > 0.05 numberLargeResids<-sum(large.resid)propLargeResid<-numberLargeResids/nrow(residuals) rmsr<-sqrt(mean(residuals^2))cat("Root means squared residual = ", rmsr, "\n")cat("Number of absolute residuals > 0.05 = ", numberLargeResids, "\n") cat("Proportion of absolute residuals > 0.05 = ", propLargeResid, "\n") hist(residuals)
resids <-factor.residuals(raqMatrix, pc2$loadings)residual.stats(resids)

17.6.4 因子旋转

(1)正交旋转

pc3 <- principal(raqData, nfactors = 4, rotate = "varimax")pc3 <- principal(raqMatrix, nfactors = 4, rotate = "varimax")print.psych(pc3, cut = 0.3, sort = TRUE)

(2)非正交旋转

pc4 <- principal(raqData, nfactors = 4, rotate = "oblimin")pc4 <- principal(raqMatrix, nfactors = 4, rotate = "oblimin")print.psych(pc4, cut = 0.3, sort = TRUE)

## Principal Components Analysis
## Call: principal(r = raqMatrix, nfactors = 4, rotate = "oblimin")
## Standardized loadings (pattern matrix) based upon correlation matrix
##     item   TC1   TC4   TC3   TC2   h2   u2 com
## Q06    6  0.87                   0.65 0.35 1.1
## Q18   18  0.70                   0.60 0.40 1.1
## Q07    7  0.64                   0.55 0.45 1.2
## Q13   13  0.64                   0.54 0.46 1.1
## Q10   10  0.57                   0.33 0.67 1.2
## Q14   14  0.57                   0.49 0.51 1.3
## Q12   12  0.45        0.43       0.51 0.49 2.0
## Q15   15  0.40                   0.38 0.62 1.9
## Q08    8        0.90             0.74 0.26 1.0
## Q11   11        0.78             0.69 0.31 1.0
## Q17   17        0.78             0.68 0.32 1.0
## Q20   20              0.71       0.48 0.52 1.1
## Q21   21              0.60       0.55 0.45 1.3
## Q03    3             -0.51       0.53 0.47 1.8
## Q04    4              0.41       0.47 0.53 2.6
## Q16   16              0.41       0.49 0.51 2.4
## Q01    1        0.33  0.40       0.43 0.57 2.4
## Q05    5              0.34       0.34 0.66 2.7
## Q22   22                    0.65 0.46 0.54 1.2
## Q09    9                    0.63 0.48 0.52 1.4
## Q23   23                    0.61 0.41 0.59 1.6
## Q02    2             -0.36  0.51 0.41 0.59 1.9
## Q19   19             -0.35  0.38 0.34 0.66 2.1
##
##                        TC1  TC4  TC3  TC2
## SS loadings           3.90 2.88 2.94 1.85
## Proportion Var        0.17 0.13 0.13 0.08
## Cumulative Var        0.17 0.29 0.42 0.50
## Proportion Explained  0.34 0.25 0.25 0.16
## Cumulative Proportion 0.34 0.59 0.84 1.00
##
##  With component correlations of
##       TC1   TC4   TC3   TC2
## TC1  1.00  0.44  0.36 -0.18
## TC4  0.44  1.00  0.31 -0.10
## TC3  0.36  0.31  1.00 -0.17
## TC2 -0.18 -0.10 -0.17  1.00
##
## Mean item complexity =  1.6
## Test of the hypothesis that 4 components are sufficient.
##
## The root mean square of the residuals (RMSR) is  0.06
##
## Fit based upon off diagonal values = 0.96

pc4$loadings %*% pc4$Phi

##             TC1         TC4         TC3         TC2
## Q01  0.39880377  0.50177396  0.53085623  0.01319618
## Q02 -0.12176001 -0.03711265 -0.39340677  0.55185498
## Q03 -0.38833069 -0.36190760 -0.63587080  0.40844261
## Q04  0.47398710  0.48672665  0.55953619 -0.01518895
## Q05  0.44295354  0.39705814  0.47207886 -0.03391765
## Q06  0.78264465  0.28840060  0.09677161 -0.14283596
## Q07  0.71839902  0.37905779  0.41522326 -0.15228176
## Q08  0.29889381  0.85441753  0.23112921 -0.03145522
## Q09 -0.17581490  0.01280450 -0.28136856  0.65805627
## Q10  0.55726382  0.26323189  0.08698024 -0.17302673
## Q11  0.43276235  0.82076898  0.29601098 -0.18924896
## Q12  0.59712102  0.32533507  0.58523427 -0.14639743
## Q13  0.71860429  0.43004468  0.33087379 -0.16982006
## Q14  0.66537513  0.35293345  0.43812216 -0.13977751
## Q15  0.55284816  0.44440276  0.30664798 -0.24115552
## Q16  0.50040738  0.49590054  0.57768769 -0.17046283
## Q17  0.43614180  0.82189163  0.30093857 -0.08993166
## Q18  0.75722167  0.36374128  0.41837362 -0.15366469
## Q19 -0.26952336 -0.16544839 -0.43532561  0.45257267
## Q20  0.14627523  0.21017967  0.68270517 -0.16379270
## Q21  0.46172677  0.37117958  0.70196968 -0.12620429
## Q22 -0.24702530 -0.16319638 -0.07153012  0.65969681
## Q23 -0.06587879 -0.18188029  0.08483947  0.58292792

factor.structure(pcModel, cut = 0.2, decimals = 2)factor.structure(pc4, cut = 0.3) #这个函数也是在DSUR package中 #没有"factor.structure"这个函数factor.structure(pc4, cut = 0.3)

17.6.5 因子分数

pc5 <- principal(raqData, nfactors = 4, rotate = "oblimin", scores = TRUE)pc5$scoreshead(pc5$scores, 10)#提取前10的数值raqData <- cbind(raqData, pc5$scores)#进行合并

总结:

综上所述,分析揭示了我们的问卷中的四个潜在的量表,这些量表可能与R焦虑的真正的子成分有关,也可能与之无关。由于各因素之间的相互关系,似乎偏向于斜旋转的溶液。因子分析的使用纯粹是探索性的;它应该只用于指导未来的假设,或告知研究人员数据集中的模式。许多决策是留给使用因素分析的研究人员,敦促你做出明智的决定,而不是基于你想要的结果。




17.7 报告因素分析







17.8 信度分析



17.8.1 信度的测量方法

信度:测量(或者在本例中的问卷)应该一致地反映它所测量的结构。

重测信度:在其他条件相同的情况下,如果一个人在两个不同的时间点完成问卷,他应该得到相同的分数。如果我们拿一个害怕统计数据的人来说,那么他们在RAQ上的总分会很高;如果RAQ是可靠的,那么如果我们从中随机选择一些项目,这个人在这些项目上的得分也应该很高。如果需要完成这个,我们可以选择分半信度(split-half reliability)。如果一个量表非常可靠,那么一个人在一半量表上的得分应该与在另一半量表上的得分相同(或相似):因此,在几个参与者中,问卷两部分的得分应该完全相关。两半量表之间的相关性是用对半法计算出来的统计量,相关性大是可靠性的标志。

17.8.2克隆巴赫α系数

克隆巴赫α系数是最常用的量表信度的测量指标

计算公式:

克隆巴赫α系数(Cronbach’s alpha, α): (1)Cortina (1993) notes that such general guidelines need to be used with caution because the value of α depends on the number of items on the scale. (2)Grayson (2004) demonstrates that data sets with the same α can have very different structures.

In extreme cases, it is even possible to get a negative value for Cronbach’s α, simply because the magnitude of negative covariances is bigger than the magnitude of positive ones. A negative Cronbach’s α doesn’t make much sense, but it does happen, and if it does, ask yourself whether you included any reverse-phrased items.


信度分析的R语言过程 主要是用psych的alpha()函数 运用的数据集RAQ.dat 单独对各个子量表进行信度分析。

Subscale 1 (Fear of computers): items 6, 7, 10, 13, 14, 15, 18

Subscale 2 (Fear of statistics): items 1, 3, 4, 5, 12, 16, 20, 21

Subscale 3 (Fear of mathematics): items 8, 11, 17

Subscale 4 (Peer evaluation): items 2, 9, 19, 22, 23

library(psych)library(corpcor)library(GPArotation)raqData<-read.delim("raq.dat",header=TRUE)computerFear<-raqData[,c(6,7,10,13,14,15,18)]statisticsFear<-raqData[,c(1,3,4,5,12,16,20,21)]mathFear<-raqData[,c(8,11,17)]peerEvaluation<-raqData[,c(2,9,19,22,23)]alpha(computerFear)alpha(statisticsFear,keys=c(1,-1,1,1,1,1,1,1))alpha(peerEvaluation)alpha(mathFear)

备注:So for computerFear, which has only positively scored items, we would use: keys = c(1, 1, 1, 1, 1, 1, 1)

but for statisticsFear, which has item 3 (the negatively scored item) as its second item, we would use: keys = c(1, -1, 1, 1, 1, 1, 1, 1)

17.8.5 解释输出

##
## Reliability analysis  
## Call: alpha(x = computerFear)
##
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.82      0.82    0.81       0.4 4.6 0.0052  3.4 0.71     0.39
##
##  lower alpha upper     95% confidence boundaries
## 0.81 0.82 0.83


##  Reliability if an item is dropped:


##     raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## Q06      0.79      0.79    0.77      0.38 3.7   0.0063 0.0081  0.38
## Q07      0.79      0.79    0.77      0.38 3.7   0.0063 0.0079  0.36
## Q10      0.82      0.82    0.80      0.44 4.7   0.0053 0.0043  0.44
## Q13      0.79      0.79    0.77      0.39 3.8   0.0062 0.0081  0.38
## Q14      0.80      0.80    0.77      0.39 3.9   0.0060 0.0085  0.36
## Q15      0.81      0.81    0.79      0.41 4.2   0.0056 0.0095  0.44
## Q18      0.79      0.78    0.76      0.38 3.6   0.0064 0.0058  0.38

G6(Guttman’s lambda 6)这可以通过平方多重相关计算(因此它被称为smc) average_r为项目间的平均相关性(从中可以计算出标准化的alpha值)

G6:Guttman's Lambda 6 reliability estimate is based upon the smcs for each item in a scale. G6 uses the smc based upon the entire item domain.



 ##  Item statistics


##        n raw.r std.r r.cor r.drop mean   sd
## Q06 2571  0.75  0.74  0.68   0.62  3.8 1.12
## Q07 2571  0.75  0.73  0.68   0.62  3.1 1.10
## Q10 2571  0.54  0.57  0.44   0.40  3.7 0.88
## Q13 2571  0.72  0.73  0.67   0.61  3.6 0.95
## Q14 2571  0.70  0.70  0.64   0.58  3.1 1.00
## Q15 2571  0.64  0.64  0.54   0.49  3.2 1.01
## Q18 2571  0.76  0.76  0.72   0.65  3.4 1.05
##

r.cor有点复杂,所以我们不会深入讨论它(但是alpha的帮助文件解释了它),

r.drop是该项目与scale total的相关性,如果该项目没有包含在scale total中。有时这被称为the item–rest correlation (因为它是项目如何与其他项目相关联的),有时它被称为corrected item–total correlation。

## Non missing response frequency for each item


##        1    2    3    4    5 miss
## Q06 0.06 0.10 0.13 0.44 0.27    0
## Q07 0.09 0.24 0.26 0.34 0.07    0
## Q10 0.02 0.10 0.18 0.57 0.14    0
## Q13 0.03 0.12 0.25 0.48 0.12    0
## Q14 0.07 0.18 0.38 0.31 0.06    0
## Q15 0.06 0.18 0.30 0.39 0.07    0
## Q18 0.06 0.12 0.31 0.37 0.14    0


关于信度

可靠性实际上是度量的一致性。

可靠性分析可以用来衡量问卷的一致性。记住要处理得分相反的物品。

在运行分析时使用keys选项。对问卷的所有子量表进行单独的可靠性分析。

克伦巴赫的α表明问卷和价值观的总体可靠性。.8是好(.7对于能力测试等还行)。

当一个项目被删除时,原始alpha值会告诉你删除一个项目是否会提高整体可靠性:大于整体可靠性的值表明删除该项目会提高量表的整体可靠性。采用那些可以大大增加α的值的项目。

如果您确实删除了项目,请重新运行因子分析以检查因子结构是否仍然有效!



17.9 报告信度分析



RAQ量表中对计算机的恐惧,对统计数据的恐惧和对数学的恐惧分量表都有高可靠性、克伦巴赫的α= .82。然而,消极的同伴评价分量表的可靠性相对较低,克伦巴赫α= .57。

原文:(APA的格式) The fear of computers, fear of statistics and fear of maths subscales of the RAQ all had high reliabilities, all Cronbach’s α = .82. However, the fear of negative peer evaluation subscale had relatively low reliability, Cronbach’s α = .57.


本期特别负责的小伙伴~


17.1,17.2

李静

华中师范大学

17.3

吴国伟

江苏师大

17.4,17.5

黄广律

中山大学

17.6,17.7,17.8,17.9

温秀娟

广州医科大学


本期排版:杨伟文

往期回顾:

Play with R 第15期:Non-parametric tests

Play with R 第14期:混合设计方差分析

Play with R 第13期:重复测量设计(GLM 4)

Play with R 第12期:多因子方差分析

Play with R 第11期:协方差分析

2019年荷兰心理统计联盟推文合集



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存