R语言中的数据挖掘算法/包/FactoMineR
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的目标非常相似:获得行和列的类型,并研究这两种类型之间的联系。但是,行或列之间相似性的概念是不同的。在这里,两行或两列之间的相似性是完全对称的。如果两行(或两列)以相同的方式与列(或行)关联,则它们将彼此靠近。
我们正在寻找与总体分布最不同的行(或列)。那些看起来最相似或最不相似。每一组行(或列)的特征在于它过度或不足地关联的列(或行)。
我们将使用前三列(对应于第二个问题的答案)作为活动变量,并将最后四列(对应于第三个问题)作为补充变量。
- 仅活动行和列
要分别查看行和列的散点图,请键入
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
“完全同意”和“相当同意”(对于“不工作的女性会感到与世隔绝”)靠近支持女性工作的类别。“相当不同意”和“完全不同意”靠近反对女性工作的类别。