lyao222lll的个人博客分享 http://blog.sciencenet.cn/u/lyao222lll

博文

R包ade4运行模糊主成分分析(FPCA)及模糊对应分析(FCA)的方法简介

已有 701 次阅读 2019-4-6 17:07 |个人分类:R统计分析|系统分类:科研笔记| _R语言, _多元统计, _排序分析

Rade4运行模糊主成分分析(FPCA)及模糊对应分析(FCA)的方法简介

 

经典的主成分分析Principal Component AnalysisPCA对极端值及缺失值比较敏感,具有极端值或缺失值的数据使用常规的主成分分析时会产生明显的偏差。通常我们对于对于极端值的解决方法,除了删掉部分影响较大数据外,某些情况下可以使用数据转化(如标准化、中心化)的方式缩小差异;对于缺失值,我们常常会使用0值等代替。

除了以上这些常规的解决方法外,还可尝试使用模糊主成分分析(Fuzzy Principal Components AnalysisFPCA)来解决,能够在数据存在极端值或缺失值的情况下明显地提升结果的准确性和可信度。同样地,对于对应分析Correspondence analysisCA,同样存在模糊对应分析(Fuzzy Correspondence AnalysisFCA)可供选择。

 

Rade4包中提供了能够运行模糊主成分分析(FPCA)以及模糊对应分析(FCA)的方法。本文参考ade4包中的R文档,简介这两种方法的运行命令。

这回偷个懒,未单独寻找合适的测试数据运行命令,直接展示R文档的示例;同样地,由于以下展示的两个主要命令与前述博文中的命令很相似,故下文中也不再阐述更多细节的内容。

 


ade4包运行模糊主成分分析(FPCA)及模糊对应分析(FCA)简介


前面的博文中,对ade4包执行主成分分析(PCA以及对应分析(CA分别做了阐述(可点击查看),其中dudi.pca()用于执行主成分分析,dudi.coa()用于执行对应分析。

与上述二者相似,在ade4包中可使用dudi.fpca()执行模糊主成分分析,dudi.fca()执行模糊对应分析。查看它们的R文档。

library(ade4)
 
#查看官方说明
?dudi.fpca
#或者
?dudi.fca

使用?dudi.fpca?dudi.fca参看帮助文档,出来的是同一个。作者将两个命令放在一起介绍了。

 

此处不再对R文档作过多介绍,可自行浏览。查看R文档下方的示例(以下稍作变更以帮助理解)。

#加载 ade4 示例数据
data(bsetal97)
w <- prep.fuzzy.var(bsetal97$biol, bsetal97$biol.blo)
 
#FPCA 排序分析
fpca <- dudi.fpca(w, scann = FALSE, nf = 3)
#FCA 排序分析
fca <- dudi.fca(w, scann = FALSE, nf = 3)

加载ade4自带的数据集bsetal97,虽然我没搞懂prep.fuzzy.var()对数据做了什么......但可以得知最后得到的数据框w中的数值分布并不均匀且存在缺失值(已经替换为了0,这也是dudi.fpca()以及dudi.fca()的要求,缺失值提前处理为0,已经不适合使用常规的PCA或者CA分析了。之后分别使用两个命令对数据框w执行执行模糊主成分分析(dudi.fpca())以及模糊对应分析(dudi.fca())。

 

排序后若想查看结果,可使用如下命令等查看,或者提取主要的结果输出。

#查看简要
fpca     #或 summary(fpca)、names(fpca) 等
fca       #或 summary(fca)、names(fca) 等
 
#提取结果示例,以 FPCA 的结果 fpca 为例,FCA 的结果提取同理
round(fpca$eig / sum(fpca$eig) * 100, 2)              #查看各排序轴解释量
barplot(fpca$eig)            #各排序轴特征值柱状图
li <- data.frame(fpca$li)[1:2]             #提取对象排序坐标(前两轴)
write.csv(li, 'FPCA.csv')             #将排序结果以 csv 样式输出在本地
co <- data.frame(fpca$co)[1:2]                  #提取变量排序坐标(前两轴)
 
#scatter()展示
scatter(fpca, csub = 3, clab.moda = 1.5)
scatter(fca, csub = 3, clab.moda = 1.5)

排序分析结果的查看或数据提取及输出方式,与前述博文类似,此处不再多说,可点击主成分分析(PCA对应分析(CA查看更多详细的内容。

4.png

5.png

scatter()可用于将ade4的排序分析结果以图形展示(适用于ade4的多种排序命令如coafcaacmpco等),可使用?scatter()查看帮助。下图分别为对FPCA结果的展示(上)以及对FCA结果的展示(下)。

此外,在使用自己的数据做分析时,若考虑将分析结果提取出并进行较好的可视化展示时,前述两篇博文中同样提供了ggplot2的作图示例可供参考,此处不再多说。

1.png

2.png

 

以下为参考R文档中的另一个示例。

w1 <- prep.fuzzy.var(bsetal97$biol, bsetal97$biol.blo)
w2 <- prep.fuzzy.var(bsetal97$ecol, bsetal97$ecol.blo)
d1 <- dudi.fca(w1, scannf = FALSE, nf = 3)
d2 <- dudi.fca(w2, scannf = FALSE, nf = 3)
plot(coinertia(d1, d2, scannf = FALSE))

3.png

 




http://blog.sciencenet.cn/blog-3406804-1171788.html

上一篇:R语言绘制箱线图和小提琴图作图示例
下一篇:R包ade4运行多重对应分析(MCA)的方法简介

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-10-14 09:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部