查看原文
其他

R包ade4的多重对应分析(MCA)

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08
R包ade4的多重对应分析(MCA)
在统计学中,多重对应分析(Multiple Correspondence AnalysisMCA)是一种处理分类变量(即数据框内所有的变量均为因子)的数据分析技术,用于检测和表示数据集中的底层结构。MCA可以用来解决经典的主成分分析(PCA)或者对应分析(CA)中对定性数据的难以处理的问题。MCA通过将数据表示为低维欧几里得空间中的点来实现,相当于是处理分类变量的PCA;同样由于MCA适用于大量的分类变量,因此它可以被视为CA的扩展。

本文简介Rade4MCA方法。
ade4MCA是通过dudi.acm()函数实现。

library(ade4)
 
#查看 R 文档,本篇就按照文档中下方示例过程来
?dudi.acm

帮助文档中提到了4各命令,可以相互配合使用。

dudi.acm(),用于执行因子表的多重对应分析;

acm.burt(),可用于给出两个因子表的crossed Burt表;

acm.disjonctif(),可用于提供一个因子表的完整析取表;

boxplot(),可作为解释轴的图形工具使用。

 

R文档中间部分的参数信息,可自行浏览。

查看最下方的示例,简介分析方法。使用ade4自带的数据集“banque”进行演示。

#MCA 分析
data(banque)
banque.acm <- dudi.acm(banque, scann = FALSE, nf = 3)

加载数据集banque,并使用dudi.acm()执行MCA。dudi.acm()中nf = 3,在排序结果中显示3个排序轴的坐标(实际计算还是将得到全部的排序轴,该参数仅为在全部结果中提取前n轴的坐标作为展示而已),若想展示更多的排序轴(如第四轴等),可更改此参数,此处示例只展示前3个轴。

dudi.acm()返回一个类列表,记录了排序空间维度、排序坐标(对象,li;变量因子,co)、特征值(Eigenvalues)、解释量(Projected inertia)、累计解释量(Cumulative projected inertia)等信息。

#概要
banque.acm
summary(banque.acm)


#查看特征值(显示前 4 轴)
banque.acm$eig[1:4]
#查看排序轴解释量(%,显示前 4 轴)
round(banque.acm$eig / sum(banque.acm$eig) * 100, 2)[1:4]
#所有特征值柱形图
scatterutil.eigen(banque.acm$eig, box = TRUE, sub = NA)

#对象和变量坐标
#因为上述 dudi.acm() 中,参数 nf = 3,故默认显示了前三个排序轴
head(banque.acm$li)
head(banque.acm$co)

 

可通过scatter()函数查看排序结果,并根据因子类型和数量,分别展示出各变量在排序图中的所对应位置。结果中每个点代表一个对象,各子图分别基于不同的因子类型(即原数据框中各因子列)分别展示变量的平均影响范围。

#查看排序图中,各因子变量的分布
scatter(banque.acm)


#以及 boxplot() 查看 MCA 结果中的因子分布
boxplot(banque.acm)


s.value()函数,能够在排序图中按对象分布标记对象。颜色划分依据,根据对象在各排序轴中的位置,分布在0点左侧的展示为白色,右侧的展示为黑色。同时根据对象分布离0点距离,以不同大小的形状展示对象,距离越远形状越大。图注即展示了在各轴特定坐标数值下所对应的点形状大小。

#s.value()能够以 0 刻度分为分界线,在各排序轴中标记对象,对象分布特征有助于探索数据
par(mfrow = c(2, 2))
s.value(banque.acm$li, banque.acm$li[,1]) #以第一轴区分
s.value(banque.acm$li, banque.acm$li[,2]) #以第二轴区分
s.value(banque.acm$li, banque.acm$li[,3]) #以第三轴区分,但二维排序图仍然默认展示前两轴

#因为上述 dudi.acm() 中,参数 nf = 3,即默认显示了前三个排序轴
#故以第四轴区分时,将会报错
#s.value(banque.acm$li, banque.acm$li[,4])
#可通过修改排序时的 nf 参数解决

 

acm.burt()函数可用于获取因子间Burt表。对测试数据集“banque”,计算因子间Burt表后,执行对应分析(CA),并观测CA与上述banque的MCA结果的一致性。

#acm.burt()示例,mca and coa of Burt table
bb <- acm.burt(banque, banque) #若有需要可使用 write.table() 输出
bbcoa <- dudi.coa(bb, scann = FALSE) #CA 排序

plot(banque.acm$c1[,1], bbcoa$c1[,1])


acm.disjonctif()函数同样可用于获取因子间Burt表。对测试数据集“banque”中的因子进行析取,执行对应分析(CA),并观测CA与上述banque的MCA结果的一致性。

#acm.disjonctif()示例,mca and coa of disjonctive table
bd <- acm.disjonctif(banque) #若有需要可使用 write.table() 输出
bdcoa <- dudi.coa(bd, scann = FALSE) #CA 排序

par(mfrow = c(1, 2))
plot(banque.acm$li[,1], bdcoa$li[,1], main = '对象')
plot(banque.acm$co[,1], bdcoa$co[,1], main = '变量')




链接

R包vegan的群落去趋势对应分析(DCA)

R包vegan的群落对应分析(CA)

对应分析(CA)和去趋势对应分析(DCA)在群落分析中的应用

R包vegan的群落PCA及tb-PCA分析

主成分分析(PCA)及其在生态数据分析中的应用

群落分析中常见的数据转化方法

常见的群落相似性或距离测度的计算

群落Beta多样性分析与群落相似性简介

R语言绘制群落物种累积曲线

R语言绘制物种稀释曲线及其它多种Alpha多样性曲线

R语言计算群落多样性分析中常见Alpha多样性指数

群落多样性分析中常见Alpha多样性指数简介



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存