相应分析的R包ca和mca,cca,RDA的R实现整理

 对应分析(correspondence analysis, CA)是在因子分析的基础上发展起来的方法,通过对原始数据采用适当的标度方法,把R型因子分析(对变量)和Q型因子分析(对样品)结合起来,同时得到两方面的结果。对应分析是一种维度缩减方法,特别的,可以在同一因子平面上表现变量和样品,从而直观的揭示所研究的变量和样品之间的内在联系。
    因子分析最早由法国学者Benzecri (1973)提出,现已有广泛的应用,特别在社会科学研究,市场分析等领域,对应分析已经成为一种常用的数据分析方法。[1]

ca分析

用的数据是smoke

 none light medium heavy
SM    4     2      3     2
JM    4     3      7     4
SE   25    10     12     4
JE   18    24     33    13
SC   10     6      7     2

行是体重和列是人名

library(ca)

data("smoke")

ca(smoke)

即可查看ca分析的结果

names(ca(smoke)) 抽烟者姓名,即列名

summary(ca(smoke))

plot(ca(smoke))基本图形样式[2],plot中的map参数默认是symmetric即对称分布;具体格式可参考文章2

这里还是说一下吧

plot(x, dim = c(1,2), map = "symmetric", what = c("all", "all"),
mass = c(FALSE, FALSE), contrib = c("none", "none"),
col = c("#0000FF", "#FF0000"), pch = c(16, 1, 17, 24),
labels = c(2, 2), arrows = c(FALSE, FALSE), ...)
 
可选的图形参数
"symmetric" (default) 对称分布
"rowprincipal" 行数据为主
"colprincipal" 列数据为主
"symbiplot" 主成分分析的biplot绘图
"rowgab"
"colgab"
"rowgreen"行作为主坐标列作为标准坐标的情形
"colgreen"

plot(ca(smoke), mass = TRUE, contrib = "absolute",map = "rowgreen", arrows = c(FALSE, TRUE))

行作为主坐标列作为标准坐标的情形

三维图:

install.packages("rgl")

library(rgl)

plot3d.ca(ca(smoke, nd=3)) nd参数:Number of dimensions to be included in the output;即输出中包含的维度数目

################################################

多重相关分析:

引用数据:wg93 dataset
 
这个数据集是国际社会调查计划关于1993年环境的调查:德国西部地区的样本
作为调查记录的数据框,包含了关于科学态度的四个问题,各自对应一个5分的标度
(1=强烈同意,5=强烈反对),同时数据框中还有3个人口统计学变量:性别,年龄和教育程度。
 数据集大小 817x7

library(ca)
data("wg93")
mjca(wg93[,1:4])

head(wg93[,1:4])
  A B C D
1 2 3 4 3
2 3 4 2 3
3 2 3 2 4
4 2 2 2 2
5 3 3 3 3
6 3 4 4 5

绘图:plot( mjca(wg93[,1:4]))

#换Burt矩阵的方法再作一次
#先看看Burt矩阵:(共20行20列,这里是一部分)
#这个矩阵由anacor包的burtTable( )函数生成

summary(mjca(wg93[,1:4], lambda = "Burt"))

plot(mjca(wg93[,1:4], lambda = "Burt"))

貌似作图效果差异不大

######################################################3

ade4 :  cca介绍

典范对应分析(canonical correspondence analusis, CCA),是基于对应分析发展而来的一种排序方法,将对应分析与多元回归分析相结合,每一步计算均与环境因子进行回归,又称多元直接梯度分析。其基本思路是在对应分析的迭代过程中,每次得到的样方排序坐标值均与环境因子进行多元线性回归。CCA要求两个数据矩阵,一个是植被数据矩阵,一个是环境数据矩阵。首先计算出一组样方排序值和种类排序值(同对应分析),然后将样方排序值与环境因子用回归分析方法结合起来,这样得到的样方排序值即反映了样方种类组成及生态重要值对群落的作用,同时也反映了环境因子的影响,再用样方排序值加权平均求种类排序值,使种类排序坐标值值也简介地与环境因子相联系
library(ade4)

data(rpjdl)

rpjdl$mil
    ROCH C.25 C.50 C1 C2 C4 C8 C16
1     80    5    0  0  0  0  0   0
2     80   10    1  1  0  0  0   0
3      5   90    1  0  0  0  0   0
4     20   70    1  0  0  0  0   0
5     20   80    5  1  0  0  0   0

millog <- log(rpjdl$mil + 1)
iv1 <- cca(rpjdl$fau, millog, scan = FALSE)
plot(iv1)
s.corcircle(iv1$as)
s.label(iv1$c1, 2, 1, clab = 0.5, xlim = c(-4,4))
s.label(iv1$ls, 2, 1, clab = 0, cpoi = 1, add.p = TRUE) 加点
s.match(iv1$ls, iv1$li, 2, 1, clab = 0.5)
s.arrow(iv1$fa)
s.label(iv1$l1, 2, 1, clab = 0, cpoi = 1.5)
s.label(iv1$co, 2, 1, add.plot = TRUE)
s.distri(iv1$l1, rpjdl$fau, 2, 1, cell = 0, csta = 0.33)
s.label(iv1$co, 2, 1, clab = 0.75, add.plot = TRUE)  加表识
par(mfrow = c(1,2))
s.corcircle(iv1$cor, 2, 1) 
s.arrow(iv1$fa, 2, 1)
par(mfrow = c(1,1))

是由对应分析CA/RA修改而产生的新方法。它是把CA/RA和多元回归结合起来,每一步计算结果都与环境因子进行回归,而详细地研究植被与环境的关系。Braak把这一方法用于多元直接梯度分析,以区别前面简单的直接梯度分析。CCA要求两个数据 矩阵。一个是植被数据矩阵;一个是环境数据矩阵。不同于以前的直接梯度分析,CCA可以结合多个环境因子一起分析从而更好地反映群落与环境的关系。在种类和环境因子不特别多的情况下,CCA可以将样方排序,种类排序及环境因子排序表示在一个图上,可以直观地看出它们之间的关系。CCA的基本思路是在CA/RA迭代过程中,每次得到的样方坐标都要与环境因子相结合,其结合方式为 多元线性回归。
(参见,《数量生态学》 张金屯著

关键问题:

        (1)RDA或CCA的选择问题:RDA是基于线性模型,CCA是基于单峰模型。一般我们会选择CCA来做直接梯度分析。但是如果CCA排序的效果不太好,就可以考虑是不是用RDA分析。RDA或CCA选择原则:先用species-sample资料做DCA分析,看分析结果中Lengths of gradient 的第一轴的大小,如果大于4.0,就应该选CCA,如果3.0-4.0之间,选RDACCA均可,如果小于3.0, RDA的结果要好于CCA。

      (2)计算单个环境因子的贡献率:CCA分析里面所得到的累计贡献率是所有环境因子的贡献率,怎么得到每个环境因子的贡献率:生成三个矩阵,第一个是物种样方矩阵,第二个是目标环境因子矩阵,第三个是剔除目标环境因子矩阵后的环境因子矩阵。分别输入Canoco软件中,这样CCA分析得到的特征根贡献率即是单个目标环境因子的贡献率。

###################################

发现还有一个包,vegan

library(permute)
library(vegan)

vare.pca <- rda(varespec)
vare.pca

plot(vare.pca)

sum(apply(varespec, 2, var))

biplot(vare.pca, scaling = -1)

vare.pca <- rda(varespec, scale = TRUE)
vare.pca

plot(vare.pca, scaling = 3)

dim(varespec)



先列出来几篇文章

豆瓣的几篇博文,大概介绍了一下对应分析的ca包中的ca分析函数和mjca()函数,具体算法和具体参数的意思并没有细说

1 : http://www.douban.com/note/236615553/

2:http://www.douban.com/note/236880884/

3:http://www.douban.com/note/237832019/

典型相关分析

4:http://blog.csdn.net/statdm/article/details/7585113

5:http://blog.sina.com.cn/s/blog_b5c8908c0101eddd.html




http://www.cnblogs.com/medo/archive/2010/01/02/1637839.html



你可能感兴趣的:(R语言编程案例)