R中的“手动”因子分析

时间:2018-06-12 13:12:22

标签: r pca

我正在尝试按照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加载对应于新的特征值*。

任何有关如何按照文本返回特征向量的帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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