跳转到内容

R 编程/因素分析

来自维基教科书,开放的书籍,开放的世界

因子分析 是一组用于降低数据维度的技术。目标是用更少的变量(即潜在因素)来描述数据集。因子分析是在20世纪初期由L.L. Thurstone等人开发的。对应分析最初是由 Jean-Paul Benzécri 在 60 年代和 70 年代开发的。因子分析主要应用于市场营销、社会学和心理学领域。它也称为数据挖掘多元数据分析探索性数据分析

主要有三种方法。主成分分析处理连续变量。对应分析处理列联表(两个定性变量),而多重对应分析是对应分析的推广,处理两个以上定性变量。因子分析和主成分分析之间的主要区别在于,在FA中,只分析多个变量共有的方差,而在PCA中,分析所有方差。因子分析是一个难以正确使用的过程,在心理学文献中经常被误用。FA(和PCA)中主要问题之一是数据中要提取的因素数量。错误的因素数量会导致数据解释和分析的困难。

有很多技术可以用来评估要提取多少个因素。两个最实用的技术是平行分析和最小平均偏量准则。平行分析通过模拟与数据秩相同的矩阵并从模拟数据集中提取特征值来工作。当模拟特征值大于数据特征值时,就表示已经提取了“正确”的因素数量。最小平均偏量准则采用不同的方法,但通常更准确。模拟研究已经证明这两种方法是最准确的。这两种方法都在psych包中,分别在fa.parallelVSS命令下。

因子分析中的另一个问题是选择哪种旋转(如果有的话)。本质上,旋转会转换得分,使其更容易解释。旋转主要分为两类:正交和斜交。正交旋转假设各因素不相关,而斜交旋转允许各因素相关(但不强制要求)。一些人(例如 MacCallum 等人,1999)建议使用斜交旋转,因为可以从斜交解中获得正交解,反之则不行。

因子分析周围的一个问题是,存在无限多个旋转可以解释相同量的方差,因此很难评估哪个模型是正确的。针对这些问题,由 Joreskeg 在 1970 年代开发了结构方程模型 (SEM),也称为验证性因子分析 (CFA)。SEM 的基本原理是,给定一个模型,它试图重现数据中观察到的协方差矩阵。模型重现数据的程度可以用作检验该模型真实性的依据。SEM 在 R 中的实现使用semlavaan包,以及 OpenMx 包(在 CRAN 上不可用)。

请参见以下包:FactoMineR (网站)、amapade4anacorvegan、'"psych"'

主成分分析 (PCA)

[编辑 | 编辑源代码]

PCA 处理连续变量

  • prcomp()stats包中。
  • princomp()stats包中。
  • PCA()(FactoMineR)
  • 另请参见factanal()
  • 另请参见faprcomppsych包中
N <- 1000
factor1 <- rnorm(N)
factor2 <- rnorm(N) 
x1 <- rnorm(N) + factor1
x2 <- rnorm(N) + factor1
x3 <- rnorm(N) + factor2 
x4 <- rnorm(N) + factor2
mydat <- data.frame(x1,x2,x3,x4)
pca <- prcomp(mydat)
names(pca)
plot(pca) # plot the eigenvalues
biplot(pca) # A two dimensional plot

pca2 <- princomp(mydat)
biplot(pca2)

pca2 <- princomp(~ x1 + x2 + x3 + x4, data = mydat) # princomp with a formula syntax


对应分析 (CA)

[编辑 | 编辑源代码]

对应分析是分析列联表的工具。

  • corresp() MASS
  • Michael Greenacre 的ca包 (JSS 文章)
  • 对应分析及相关网络 (链接)
  • Quick-R 的页面 (链接)
  • 使用 R 包anacor进行简单和典型对应分析 (pdfJSS 文章)
  • multiv

多重对应分析 (MCA)

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]


上一节:时间序列 索引 下一节:网络分析
华夏公益教科书