对应分析(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))
关键问题:
(1)RDA或CCA的选择问题:RDA是基于线性模型,CCA是基于单峰模型。一般我们会选择CCA来做直接梯度分析。但是如果CCA排序的效果不太好,就可以考虑是不是用RDA分析。RDA或CCA选择原则:先用species-sample资料做DCA分析,看分析结果中Lengths of gradient 的第一轴的大小,如果大于4.0,就应该选CCA,如果3.0-4.0之间,选RDA和CCA均可,如果小于3.0, RDA的结果要好于CCA。
(2)计算单个环境因子的贡献率:CCA分析里面所得到的累计贡献率是所有环境因子的贡献率,怎么得到每个环境因子的贡献率:生成三个矩阵,第一个是物种样方矩阵,第二个是目标环境因子矩阵,第三个是剔除目标环境因子矩阵后的环境因子矩阵。分别输入Canoco软件中,这样CCA分析得到的特征根贡献率即是单个目标环境因子的贡献率。
###################################
发现还有一个包,vegan
先列出来几篇文章
豆瓣的几篇博文,大概介绍了一下对应分析的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