跳转到内容

R语言中的数据挖掘算法/包/FactoMineR

来自Wikibooks,开放世界中的开放书籍

FactoMineR 是一个专门用于多元数据分析的 R 包。该包的主要特点是可以考虑不同类型的变量(定量或分类)、数据上的不同类型结构(变量上的分区、变量上的层次结构、个体上的分区)以及补充信息(补充个体和变量)。此外,不同探索性数据分析产生的维度可以通过定量和/或分类变量自动描述。还提供了许多具有各种选项的图形。最后,在Rcmdr环境中实现了图形用户界面,以提供用户友好的包。

该包中实现的方法在概念上与其主要目标相似,例如,通过降低数据集的维度来合并和简化数据。这些方法的使用取决于可用数据以及变量是定量(众多)还是定性(分类或名义)。

实现了多种方法,包括最经典的方法(PCA、对应分析、多对应分析、多因子分析)以及一些高级方法(层次多因子分析、混合数据分析、双重多因子分析)。

对于经典方法,我们有以下情况使用解决方案

  • 当个体由定量变量描述时,使用主成分分析 (PCA);
  • ˆ 当个体由两个分类变量描述导致列联表时,使用对应分析 (CA);
  • ˆ 当个体由分类变量描述时,使用多对应分析 (MCA)。

对于高级方法

  • MFA(多因子分析),其中同一组的变量可以是数值型或分类型。
  • HMFA(层次多因子分析),MFA 的扩展,其中变量根据层次结构进行组织。
  • GPA(广义普罗克拉斯提斯分析),其中变量必须是连续的。


令 X 为感兴趣的数据表。为了降低维度,通过正交线性变换将 X 变换到新的坐标系。令 Fs(分别为 Gs)表示行(分别为列)在等级为 s 的轴上的坐标向量。这两个向量通过所谓的“转移公式”相关联。在 PCA 的情况下,它们可以写成

其中 Fs (i) 表示个体 i 在轴 s 上的坐标,Gs (k) 表示变量 k 在轴 s 上的坐标,λs 是与轴 s 相关的特征值,mk 是与变量 k 相关的权重,pi 是与个体 i 相关的权重,xik 是数据表的一般项(行 i,列 k)。

转移公式奠定了我们的观点基础,并因此将图形输出置于我们实践的根源。从这些公式来看,分析个体和变量的散点图至关重要:个体与取高值的变量位于同一侧,与取低值的变量位于相对侧。

补充元素

[编辑 | 编辑源代码]

转移公式的另一个重要特征是,它们可以应用于补充个体和/或变量,以便在散点图上添加补充信息,以便更好地理解数据。在 PCA 框架中,令 i' 为一个新个体,它在等级为 s 的轴上的坐标可以很容易地得到如下

同样,当前者为定量时,计算补充变量的坐标也很容易;在这种情况下,补充变量位于变量的散点图中。当变量为分类时,其模态通过每个模态的“平均个体”的方式表示。对于每个模态,与每个“平均个体”相关的数值是具有该模态的个体上每个变量的平均值;在这种情况下,补充变量位于个体的散点图中。

在您的 R 会话中编写以下代码行加载 FactoMineR

    library(FactoMineR)

要在您的 R 会话中下载 FactoMineR 的图形界面,请编写以下代码行(您必须连接到互联网)

    source("http://factominer.free.fr/install-facto.r")

加载和使用

[编辑 | 编辑源代码]

通过键入以下代码行在每个新的 R 会话中加载 FactoMineR

    library(FactoMineR)

或者通过键入以下代码行在每个新的 R 会话中加载 FactoMineR 及其 GUI

    library(Rcmdr)

函数参考

[编辑 | 编辑源代码]

所有50个FactoMineR函数的完整实现参考,包括描述、用法、参数和值,可以在这里找到。

可视化

[编辑 | 编辑源代码]

使用plot函数,可以绘制图形和结果。用法

    R> plot(<method>,<what variable to color individuals from>)

使用FactoMineR的图形界面,可以轻松直观地执行任务。例如,我们有PCA函数的界面:主窗口允许选择活动变量(默认情况下所有变量都处于活动状态,可以执行PCA)。几个按钮允许选择补充定量或分类变量、补充个体、要显示的输出或要绘制的图形。

例如,这里我们使用一个来自1974年关于法国女性工作的问卷调查的数据集。你可以在这里加载数据集。

数据介绍

[编辑 | 编辑源代码]

1724名女性回答了关于女性工作的一些问题,其中包括

   * What do you think the perfect family is ?
         o Both husband and wife work
         o Husband works more than wife
         o Only husband works
   * Which activity is the best for a mother when children go to school?
         o Stay at home
         o Part-time work
         o Full-time work
   * What do you think of the following sentence: women who do not work feel cut off from the world?
         o Totally agree
         o Quite agree
         o Quite disagree
         o Totally disagree

数据集是两个列联表,将第一个问题的答案与另外两个问题交叉。对于每个交叉点,给出的值是给出这两个答案的女性人数。

要加载软件包和数据集,请编写以下代码行

    library(FactoMineR) 
    women_work=read.table("http://factominer.free.fr/classical-methods/datasets/women_work.txt", header=TRUE, row.names=1, sep="\t")

CA的目标与PCA的目标非常相似:获得行和列的类型,并研究这两种类型之间的联系。但是,行或列之间相似性的概念是不同的。在这里,两行或两列之间的相似性是完全对称的。如果两行(或两列)以相同的方式与列(或行)关联,则它们将彼此靠近。

我们正在寻找与总体分布最不同的行(或列)。那些看起来最相似或最不相似。每一组行(或列)的特征在于它过度或不足地关联的列(或行)。

对应分析(CA)

[编辑 | 编辑源代码]

我们将使用前三列(对应于第二个问题的答案)作为活动变量,并将最后四列(对应于第三个问题)作为补充变量。

仅活动行和列

要分别查看行和列的散点图,请键入

    res.ca.rows = CA(women_work[,1:3], invisible="col")
    res.ca.col = CA(women_work[,1:3], invisible="row") 
    #women_work: the data set used
    #invisible: elements we do not want to be plotted

在列的散点图上,我们可以看到第一轴对立“在家待业”和“全职工作”,这意味着它对立着两种女性的特征。回答“在家待业”的女性比总体更经常回答“只有丈夫工作”,并且比总体更少经常回答“丈夫和妻子都工作”。同样,回答“全职工作”的女性比总体更少经常回答“只有丈夫工作”,并且比总体更经常回答“丈夫和妻子都工作”。第一轴根据女性工作意愿程度对第二个问题的类别进行排序。

我们可以对行散点图的第一轴进行相同的解释。这些类别按女性工作意愿程度从低到高排序(从“只有丈夫工作”到“丈夫和妻子都工作”)。

要获得行和列的表示,请键入

    res.ca = CA(women_work[,1:3]) 
    #women_work: the data set used

“在家待业”与“只有丈夫工作”高度相关,与其他两个类别关联较少。

“丈夫和妻子都工作”与“全职工作”相关,与“在家待业”相反。

添加补充列

我们现在将对应于第三个问题的列作为补充变量添加。键入

    res.ca = CA(women_work, col.sup=4:ncol(women_work)) 
    #women_work: the data set used
    #col.sup: vector of the indexes of the supplementary columns

“完全同意”和“相当同意”(对于“不工作的女性会感到与世隔绝”)靠近支持女性工作的类别。“相当不同意”和“完全不同意”靠近反对女性工作的类别。

参考文献

[编辑 | 编辑源代码]
  1. FactoMineR官方网站 [1]
  2. FactoMineR:用于多元分析的R软件包 [2]
  3. 综合R档案网络 [3]
华夏公益教科书