繁体   English   中英

R中的“手动”因素分析

[英]“Manual” Factor Analysis in R

我试图遵循Tabachnick和Fidell撰写的“使用多元统计”中的因素分析一章。

数据和我的步骤如下:

# data
dat.ski <- data.frame(skiers = paste0("S", c(1:5), sep=""), cost = c(32, 61, 59, 36, 62), lift=c(64, 37, 40, 62, 46) , depth = c(65, 62, 45, 34, 43), powder = c(67, 65, 43, 35, 40))

# correlation matrix
cor.ski <- cor(dplyr::select(dat.ski, -skiers)) 

# eigenvalues and eigenvectors
eig.ski <- eigen(cor.ski)

相关矩阵和特征值(2.02、1.94、0.04和0.00)与书中的相对应。 我具有的前两个特征向量是(.352,-0.251,-0.626,-0.647)和(.514,-。664,.322,.280)。

但是,该书随后继续说,仅保留了前两个特征值,并且“重新进行因子分析”会导致以下两个特征值*:2.00、1.91和特征向量(-2,83、0.177、0.568, 0.675)和(0.651,-0.685,0.252,0.207)。 我无法计算出这些特征向量...如果运行psych::fa(cor.ski, nfactors=2, fm="pa") ,则SS加载对应于新的特征值*。

非常感谢您提供有关如何根据文本返回特征向量的帮助。

谢谢。

我通过记住R是一种可见的语言来解决这个问题! 通过查看psych::fac的定义,我看到作者实际上已经进行了7次因子分析迭代,而不是mereley“获取了前两个特征向量并重新运行FA”; 我最终还了解了如何进行因子分析,并将其与后续文本结合在一起,简而言之是:

从相关矩阵(r)开始并假设使用了k个因子

  • 获取相关矩阵r的特征值(L)和特征向量(V)
  • 计算C = sum(diag(R))
  • 计算载荷,A = V [,1:k] * Sqrt {L [1:k]}(文本的等式13.6)
  • 设置R * = AA'(文本的13.5,R = AA')
  • 设置C * = sum(diag(R *))
  • 更新diag(R)= diag(R *)
  • 重复上述步骤,直到达到最大迭代次数,或直到e = abs(CC *)小于某个阈值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM