目的:为探究因子分析法在R软件中的使用和问卷结构效度的检验。方法:采用随机抽样的方法对昆明医科大学护理专业学生进行匿名问卷调查,随后对问卷用Rstudio软件进行因子分析。结果:使用Rstudio软件可以方便地实现因子分析,并检验问卷的结构效度。结论:R软件是一款免费开放且方便的软件,表明R软件可以方便而且快捷地完成因子分析的运算和问卷结构效度的检验。 Purpose: To explore the use of factor analysis in R Software and the validity test of questionnaire structure. Methods: An anonymous questionnaire survey was conducted among nursing students in Kunming Medical University by random sampling, and then factor analysis was carried out with R studio software. Results: Using R studio software, factor analysis can be easily realized, and the structural validity of the questionnaire can be tested. Conclusion: R software is a free, open and convenient software, which shows that R software can easily and quickly complete factor analysis and validity test of questionnaire structure.
王石坤*,王熙婷,屈永强,程雪桃,沈海文
昆明医科大学护理学院,云南 昆明
收稿日期:2019年7月16日;录用日期:2019年7月28日;发布日期:2019年8月5日
目的:为探究因子分析法在R软件中的使用和问卷结构效度的检验。方法:采用随机抽样的方法对昆明医科大学护理专业学生进行匿名问卷调查,随后对问卷用Rstudio软件进行因子分析。结果:使用Rstudio软件可以方便地实现因子分析,并检验问卷的结构效度。结论:R软件是一款免费开放且方便的软件,表明R软件可以方便而且快捷地完成因子分析的运算和问卷结构效度的检验。
关键词 :探索性因子分析,R软件
Copyright © 2019 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
探索性因子分析 [
X 1 = w 11 F 1 + w 21 F 2 + ⋯ + w n 1 F n + w 1 U 1 + e 1
其中,x表示观测变量,FM代表因子分析中最基本的公因子(Common factor),它们是各个观测变量所共有的因子,解释了变量之间的相关;U代表特殊因子(Unique factor)。它是每个观测变量所特有的因子,相当于多元回归分析中的残差项,表示该变量不能被公因子所解释的部分:wM代表因子负载(Factor-loading),它是每个变量在各公因子上的负载,相当于多元回归分析中的回归系数;而e则代表了每一观测变量的随机误差。
图1. 探索性因子分析模型(来源:郭志刚 [
① 收集观测变量:通常采用抽样的方法,按照实际情况收集观测变量数据。② 构造相关矩阵:根据相关矩阵可以确定是否适合进行因子分析。③ 确定因子个数:可根据实际情况事先假定因子个数,也可以按照特征根大于1的准则或碎 石准则来确定因子个数。④ 提取因子:可以根据需要选择合适的因子提取方法,如主成分方法、加权最小平方法、极大似然法等。⑤ 因子旋转:由于初始因子综合性太强,难以找出实际意义,因此一般都需要对因子进行旋转(常用的旋转方法有正交旋转、斜交旋转等),以便于对因子结构进行合理解释。⑥ 解释因子结构:可以根据实际情况及负载大小对因子进行具体解释。⑦ 计算因子得分:可以利用公共因子来做进一步的研究,如聚类分析、评价等 [
本次研究以昆明医科大学护理学院护生为对象。纳入标准为实习过两个月以上的实习护生,愿意填写问卷的护生。
使用自制问卷进行调查。该问卷包含22条目,问卷中对问卷进行初步的划分维度,均采用Iikert5级计分法。随机抽取70名学生进行调查,最终回收问卷70份,有效问卷65份。
采用克朗巴哈α系数评估问卷的内部一致性。用R软件分析,问卷本次调查的克朗巴哈α系数为0.802,说明问卷具有较高信度。适合做探索性因子分析。
① 将65份的数据用EpiData软件录入后导出为sav文件。② 将数据命名为X123456.sav。③ 打开R studio软件,点击import Dataset,选择从SPSS中导入数据。
输入>library(psych)#载入psych包
cor<-cor(X123456)#计算变量相关系数矩阵并赋值给cor。
其中相关系数矩阵的原理,其是由矩阵各列间的相关系数构成的。也就是说,相关矩阵第i行第j列的元素是原矩阵第i列和第j列的相关系数。
fa.parallel(cor,n.obs=65,n.iter=100,fa=fa,show.legend=FALSE,main=scree plot with parallel analysis)#n.obs:样本量cor:相关系数矩阵;#fa = fa,因子分析;#n.iter:模拟分析的次数;#main:标题命名。运行代码后得到碎石图:
分析:图2中,实线表示真实数据,虚线表示模拟数据。
因子分析(FA)即三角形线,通过模拟,真实数据中只有4个主成分高于模拟数据;Kaiser-Harris 准则,在探索性因子分析中,Kaiser-Harris 准则的特征值取值应该是大于0,而不是主成分分析中的大于1,这是大多数人所不了解的。根据图形,我们可以看出有7个公共因子特征值大于0;Cattell 碎石检验,通过绘制特征值与公共因子数的图形,因此我们选择7个公共因子。当然在选择公共因子时,有时候我们也可以我们所需要的公共因子数,来进行调整。需要考虑到因子分析中的累计方差贡献率。
图2. 平行分析碎石图
fa<-fa(correlations,nfactors=7,rotate=none,fm=pa)
#r:相关系数矩阵;#nfactors:设定公共因子数;#rotate:指定旋转方法。
代码运行后,输出结果如下:
PA1 PA2 PA3 PA4 PA5 PA6PA7
SS loadings 6.78 2.22 1.60 1.380.88 0.74 0.56
Proportion Var 0.31 0.100.07 0.06 0.040.030.03
Cumulative Var 0.310.41 0.48 0.540.590.62 0.64
已删除了多余的输出
其中,SS loadings行包含了与公共因子相关联的特征值,指的是与特定公共因子相关联的标准化后的方差值,Proportion Var行表示的是每个公共因子对整个数据集的解释程度,Cumulative Var行表示累计的公共因子的累计解释程度。
可以看到,在提取公共因子中,原始数据中的特征值和方差贡献率分别为:① 特征值:第1公共因子特征值为6.78,第2公共因子特征值为2.22,.....省略.....第6公共因子特征值为0.74,第7公共因子特征值为0.56;②方差贡献率:第1公共因子解释了问卷中31%的方差,第2公共因子解释了10%,.....省略.....第6公共因子解释了3%,第7公共因子解释了3%。累计共解释了64%的方差。累计方差贡献率大于64%,说明在提取公共因子中的因子分析是可靠的。
fa.varimax<-fa(correlations,nfactors=7,rotate=varimax,fm=pa)#使用正交旋转来计算。varimax表示最大方差旋转法。pa表示主轴迭代法。
代码运行后,输出结果如下:
PA1 PA2 PA3 PA5 PA6 PA4 PA7
SS loadings 4.65 3.031.62 1.51 1.16 1.10 1.10
Proportion Var 0.210.14 0.07 0.07 0.05 0.05 0.05
Cumulative Var 0.21 0.35 0.42 0.49 0.54 0.59 0.64
已删除了多余的输出
可以看到,在提取公共因子中,旋转后的特征值和方差贡献率分别为:① 特征值:第1公共因子特征值为4.65,第2公共因子特征值为3.03,.....省略.....第6公共因子特征值为1.10,第7公共因子特征值为1.10;② 方差贡献率:第1公共因子解释了问卷中21%的方差,第2公共因子解释了14%,.....省略.....第6公共因子解释了5%,第7公共因子解释了5%。累计共解释了64%的方差。
在经过了因子旋转后,特征值和各公共因子贡献率发生了变化。
scores<-fa(correlations,nfactors=7,rotate=varimax,fm=pa,scores=TRUE)#Scores:设定是否需要计算因子得分。
fa.diagram(fa.varimax,simple=TRUE,digits=3)#digits=3表示保留3位小数。
> corrplot(fa.varimax$loadings)
图3. 因子分析可视化(因子得分)
图4. 因子分析可视化
公共因子PA1中q11:0.813、q12:0.774、q8:0.761、q7:0.760、q10:0.743、q6:0.705、q14:0.629、q9:0.569;在公共因子PA2中q1:0.794、q2:0.777、q3:0.763、q5:0.724;在公共因子PA3中q20:0.776、q16:0.603;在公共因子PA5中q21:0.752、q22:0.066;在公共因子PA6中q18:0.747、q17:0.608;在公共因子PA4中q15:0.716、q13:0.567;在公共因子PA7中q19:0.751、q4:0.497。
包括:PA1:人文关怀和有利原则因子;PA2:基础护理因子;PA3:慎独因子;PA5:护患沟通因子;PA6:保密原则因子;PA4:护理决策因子;PA7:执行医嘱和医疗监督因子。利用探索性因子分析出来的结果与原先问卷中构建的问卷模型基本相符,说明问卷的结构效度良好,可以进行下一步分析。而且使用R软件可以方便的用因子分析法对实际的问题进行计算。
在此次研究中,R软件可以以清晰的碎石图(图2),向我们展现出清晰的数据,其中根据图形,我们可以看出有7个公共因子特征值大于0;Cattell碎石检验,通过绘制特征值与公共因子数的图形,因此我们选择PA1:人文关怀和有利原则因子;PA2:基础护理因子;PA3:慎独因子;PA5:护患沟通因子;PA6:保密原则因子;PA4:护理决策因子;PA7:执行医嘱和医疗监督因子。当然我们也可以从提取公共因子中应用简单的程序得出,这里采用了主轴迭代法,当然也可以灵活地应用最大似然法(ml)、最小二乘法(wls)等,得出每个公共因子的特征值及方差贡献率,在因子旋转部分选用正交旋转中最常用的最大方差旋转法来实现。可以明显地看出,与因子旋转之前的结果相比,在人文关怀和有利原则因子中,方差贡献率减少了;慎独因子的方差贡献率没变;基础护理因子、护患沟通因子、保密原则因子、护理决策因子、执行医嘱和医疗监督因子的方差贡献率都增加了。然而,在R软件中,还可以对数据进行可视化及显示各公共因子的因子得分(如图3)情况。由此可以看出R软件是一款免费开放且方便的软件,而且应用R软件可以方便而且快捷地用因子分析方法对实际问题进行分析计算(图4),检验问卷的结构效度。有利于下一步科研工作的进行。
王石坤,王熙婷,屈永强,程雪桃,沈海文. 基于探索性因子分析的R软件实现R Software Implementation Based on Exploratory Factor Analysis[J]. 统计学与应用, 2019, 08(04): 598-603. https://doi.org/10.12677/SA.2019.84068