decostand
是群落生态学中常用的工具包,提供了很多主流且高效的数据标准化方法。
基本语法
decostand (x,method, MARGIN, range.global,logbase = 2, na.rm = FALSE,...)
标准化,和转化相反,是求相对值,旨在降低数据之间因量级、单位等差异而带来的数据异质性。
示例
(dat = matrix(sample(seq(100)),nrow = 20,dimnames = list(paste0('OTU_',seq(20)),paste0('smp',seq(5)))))
library('vegan')
library('dplyr')
![](https://img.haomeiwen.com/i16550912/1c477d48edd392cb.png)
- 除以和,转化后,加和为1
decostand(dat,'total') %>% rowSums()
decostand(dat,'total',2) %>% colSums()
![](https://img.haomeiwen.com/i16550912/6b363d0386463369.png)
![](https://img.haomeiwen.com/i16550912/4ca56823cf9639e1.png)
- 1.1 其他方法可实现对列除以和,并使列和为1
t(t(df)/colSums(df))
dat/matrix(rep(colSums(dat),nrow(dat)), nrow = nrow(dat), byrow = T)
sweep(dat,2,colSums(dat),`/`)
scale(dat, center=FALSE, scale=colSums(dat))
- 除以最大值
decostand(dat,'max') %>% summary()
decostand(dat,'max',1) %>% summary()
![](https://img.haomeiwen.com/i16550912/62ad450558492b97.png)
![](https://img.haomeiwen.com/i16550912/d15073c3fbc6bd6b.png)
- 均值为1
decostand(dat,'frequency') %>% colMeans()
decostand(dat,'frequency',1) %>% rowMeans()
![](https://img.haomeiwen.com/i16550912/ef3a1443f115c117.png)
![](https://img.haomeiwen.com/i16550912/173a072afbc843d2.png)
- 平方和为1
decostand(dat,'normalize') %>% apply(1,function(x) sum(x^2))
decostand(dat,'normalize',2) %>% apply(2,function(x) sum(x^2))
![](https://img.haomeiwen.com/i16550912/9e5a963a558346e2.png)
![](https://img.haomeiwen.com/i16550912/0adb1028f73cd37b.png)
- 归一化为0~1
decostand(dat,'range') %>% summary() #apply(dat, 2, function (x) (max(x)-x)/(max(x)-min(x)))
decostand(dat,'range',1) %>% summary() #apply(dat, 1, function (x) (max(x)-x)/(max(x)-min(x)))
![](https://img.haomeiwen.com/i16550912/18eea7cb329ebfef.png)
![](https://img.haomeiwen.com/i16550912/40002435a7a6ca33.png)
- z-score转化,均值为0,方差为1
decostand(dat, 'standardize') %>% summary()
decostand(dat, 'standardize',1) %>% summary()
![](https://img.haomeiwen.com/i16550912/e3302db63cd521ab.png)
![](https://img.haomeiwen.com/i16550912/8aec928a7dcdc718.png)
- chi.square 卡方,先每行差异行和,再每列除以列和平方根,最后除以矩阵和的平方根
decostand(dat,'chi.square')
# (dat / rowSums(dat)) %*% diag(1/sqrt(colSums(dat))) * sqrt(sum(dat))
![](https://img.haomeiwen.com/i16550912/1d9d80de5659852d.png)
![](https://img.haomeiwen.com/i16550912/cf11a1c53907429c.png)
- log
decostand(dat,'log') %>% summary()
![](https://img.haomeiwen.com/i16550912/bcdf4f5d63ad5198.png)
- 以排序序号替代具体数值
decostand(dat,'rank',2)
![](https://img.haomeiwen.com/i16550912/7f9eb003ff0536d0.png)
- 转化为二进制0/1
decostand(dat,'pa') %>% summary()
![](https://img.haomeiwen.com/i16550912/288f06974b34b6f8.png)
网友评论