因素分析法

喵先生的进阶之路

因素分析法

一种统计技术,希望从众多的可观测的“变量”中,概括和推论少数“因素”。用少数“因素”来概括和解释大量的观测事实。又叫“因子分析法”。

KMO和Bartlett球形检验

用于检验试卷是否适合进行因素分析。

KMO计算方法:

ix = inv(X); // X表示原始数据的相关系数矩阵,inv表示求X的逆矩阵
S2 = diag(diag((iX.^-1)));     // 将ix对角线元素全部取倒数,其余元素变0,得矩阵S2
AIS = S2*iX*S2;        // AIS是反映像协方差矩阵
IS = X + AIS - 2 * S2; // IS 是映像协方差矩阵
Dai = diag(diag(sqrt(AIS)));    // 将矩阵AIS对角线上的元素开平方,并且将其余元素都变成0,得到矩阵Dai
IR = inv(Dai) * IS * inv(Dai);    // IR是映像相关矩阵
AIR = inv(Dai) * AIS * inv(Dai);// AIR是反映像相关矩阵
a = sum((AIR - diag(diag(AIR))).^2);    // diag(diag(AIR))表示将矩阵AIR的对角线取出来,再构造成一个对角矩阵(即对角线之外元素都是 0);. 表示将偏相关系数矩阵AIR - diag(diag(AIR))的每一个元素乘方,这样得到矩阵a
AA = sum(a);     // 偏相关系数矩阵AIR - diag(diag(AIR))中所有偏相关系数的平方和AA,但不考虑其对角线上的数值。
b = sum((X - eye(size(X))).^2);        // eye()是单位矩阵;b就是将相关系数矩阵R中每一个元素乘方,但X对角线元素全部变成0
BB = sum(b);        // BB就是所有变量之间(不包括变量自己与自己)的相关系数的平方和。
kmo=BB/(AA+BB);        // KMO就是所有变量之间相关系数的平方和除以它与所有变量之间偏相关系数平方和的商,但不考虑变量  自己与自己的相关系数1以及偏相关系数。

在这里,我通过SPSS计算和按照上面的步骤进行计算,做出验证,得出了相同的结果。

测试数据如下,后面的计算都基于这一组数据

image.png

SPSS的KMO巴特利特检验结果:

image.png

需要说明的是,在使用SPSS进行数据分析的时候,数据量最少是变量数的10倍。

手动结果:

KMOimage.png

经检验,两者结果基本一致。

当KMO值大于0.8,说明适合做因子分析。这里由于是使用随便给的一组数,所以并不适合做因子分析。

巴特利特球形检验的公式:

H0:原始数据的相关系数矩阵X与同维度的单位矩阵一致
H1:原始数据的相关系数矩阵X与同维度的单位矩阵不一致
χ2 = -[n-(2p+11)/6]ln|X|;   // 近似卡方
df = p(p-1)/2;              // 自由度

其中:n是数据记录的条数p是因子分析的变量数目ln()自然对数函数|X|是相关系数矩阵X的行列式的值

显著性计算:在Excel中输入函数:=CHISQ.DIST.RT(χ2所在单元格地址,df所在单元格地址)从而得到P概率值

p < 0.05或0.01或0.001,则拒绝H0而认可H1。

SPSS的巴特利特检验结果:

image.png

手动结果:

巴特利特检验:image.png

显著性计算这一部分目前只能通过excel计算,没有找到具体的计算公式。

主成分分析——相关矩阵或协方差矩阵

目的:减少需要分析的变量的数量,尽量减少变量包含信息的损失,已达到对所收集数据的全面分析。

相关矩阵:即相关系数矩阵(上面求过)

  1. 对原数据进行标准化:xi = (xi - X)/St
    其中xi为原数据,X为该变量的平均值St为该变量的标准差
  2. 计算标准化后的相关系数矩阵
  3. 计算特征值特征向量
    (1)计算特征值,并按从大到小排序
    (2)计算特征值对应的特征向量
    (3)计算主成分贡献率和累计贡献率:
    贡献率 = 特征值/所有特征值的和;
    累计贡献率 = 之前的贡献率相加
  4. 计算主成分载荷:特征值开方 * 特征向量

SPSS的结果:

image.png

image.png

手动结果:

image.png

主成分载荷:image.png

经验证,结果基本一致。

协方差:衡量两个随机变量的相关程度

求解过程和相关矩阵的相同,只在第二步的时候计算协方差矩阵。

Promax和Direct Oblimin 斜交旋转

Direct Oblimin(直接斜交变换):使因素负荷量的差积(cross-products)最小化。

Promax(迫近最大方差斜交旋转):基本原理是使每个变量在尽可能少的因子上有比较高的载荷,让某个变量某个因子上的载荷趋近于1,而在其他因子上的载荷趋近于0。允许因子间相关,适合于大量数据。

  1. 先得到正交选择 (e.g. 使用 Varimax)
  2. 变换 T 的元素为 k 次方 (常常 k=4),以扩大小的负荷和
  3. 大的负荷之间的差异
  4. 对变换后的负荷阵再进行斜交旋转.
  5. 该变换可比直接最小斜交变换更快地计算出来,因此适用于大型数据集。

image.png

具体旋转公式还是没有找到,大部分文章中都认为计算量很大,需要用正交阵多次去乘载荷矩阵,建议这部分使用spss进行计算。

总结

因子分析的步骤:

  1. 适用性检验,判断数据是否可以使用因子分析法
  2. 主成分分析,确定因子个数
  3. 因子旋转
  4. 得出最终模型,并作出解释

相关参考:

因子分析
HSK[高级]客观卷的构想效度初探
https://bbs.pinggu.org/thread-2421588-1-1.html
Promax斜旋转理论及在机能实验学中的应用

阅读 1.1k

朴世超
个人学习总结与项目实战问题记录
336 声望
19 粉丝
0 条评论
你知道吗?

336 声望
19 粉丝
宣传栏