数据标准化方法:该如何选择?

原文链接:

数据标准化方法:该如何选择?

什么是数据标准化?

在微生物组学数据分析之前,我们常常需要根据数据量纲的不同以及分析方法的需要对数据进行各种预处理,也即数据标准化。数据标准化的目的是使数据的总体符合某种要求,例如使数据总体符合正态分布以方便参数检验、使数据范围相同以方便比较分析、使数据分布均匀以方便作图展示等。我们必须知道不同标准化方法的内涵,从而在实际研究中可以选择正确的数据标准化方法。

首先我们介绍一下数据转换。简单数据转换也即对整体数据进行简单运算,数据转换的目的主要有三个,一是改变数据结构,例如非线性通过平方根、对数转换为线性;二是改变数据范围,便于比较和作图分析,例如数据变化特别大的可以进行对数转换来缩小属性范围;三是改变数据分布,使得样本偏离标准分布太远的更加接近标准分布(例如正态分布)。常见的数据转换有以下几种:

对数转换:将数据(样本观察值)取自然对数(或者其他数为底的对数),可以使用log()函数来实现(log1p()可以将数据加1后取自然对数)。若是数据中有0或负值,可以全部数据加上一个数转换为正数。一般来说自然对数转换可以使0~1范围内的数据范围变大,可以使>1范围内数据范围变紧凑。

平方根转换:将数据全部取平方根,可以使用sqrt(x)或者x^0.5来实现。类似的还有立方根转换、四次方根转换,偶数次方根要求数据非负。如果数据结构为二次关系,平方根转换后平方根转换可以使数据范围变小。

倒数转换:将数据全部取倒数,也即1/x,倒数转换使0~1范围内的数据范围变大,使>1范围内数据范围变紧凑,而且转换后数据为倒序。

数据转换仅仅是对数据中每个观察值的独立处理,而标准化则涉及到数值之间的处理。下面我们以生态学常用的vegan包中的decostand()函数为例,分析不同标准化方法的差别,此函数使用方法如下:

decostand(x, method, MARGIN, range.global, logbase = 2, na.rm=FALSE, ...)

其中x为向量或矩阵,method为标准化方法,MARGIN=1按行处理,MARGIN=2按列处理,不同标准化方法介绍如下:

①method="pa",将数据转换为有-无(1-0)类型,若分析不加权的情况群结构下可以使用;

②method="max",最大值标准化,将数据除以该行或者列的最大值(defaultMARGIN=2)。若数据非负,最大值标准化后数据全部位于0到1之间。

③method="total",总和标准化,将数据除以该行或者列的总和,也即求相对丰度(default MARGIN=1),总和标准化后数据全部位于0到1之间。

④method="range",Min-max标准化,将数据减去该行或者列的最小值,并比上最大值与最小值之差(defaultMARGIN=2),Min-max标准化后的数据全部位于0到1之间。

⑤method="normalize",模标准化,将数据除以每行或者每列的平方和的平方根(default MARGIN=1),模标准化后每行、列的平方和为1(向量的模为1),也即在笛卡尔坐标系中到原点的欧氏距离为1,样品分布在一个圆弧上,彼此之间的距离为弦长,因此也称为弦转化。在基于欧氏距离的PCARDA中分析群落数据可以将每个样方弦转化可以弥补欧氏距离的缺陷。弦转化后的数据使用欧氏距离函数计算将得到弦距离矩阵

⑥method="hellinger",hellinger转化,就是总和标准化数据的平方根(default MARGIN=1),hellinger转化后的数据使用欧氏距离函数计算将得到hellinger距离矩阵

⑦method="chi.square",卡方转化,在默认(defaultMARGIN=1)的情况下是数据除以行的和再除以列的和的平方根,卡方转化后的数据使用欧氏距离函数计算将得到卡方距离矩阵

⑧Wisconsin转化,这个是使用伴随的函数wisconsin(),将数据除以该列最大值再除以该行总和,是最大值标准化和总和标准化的结合。

⑨method="standardize",z-score标准化,最常用的标准化方法之一,将数据减去均值比上标准差(default MARGIN=2),z-score标准化后数据均值为0,方差为1,服从正态总体的数据标准化后服从标准正态分布。z-score标准化可以去除不同环境因子量纲的影响。

一般情况下,上面方法中默认MARGIN=1是默认对样品进行处理,默认MARGIN=2是默认对物种或者环境变量进行处理。

为了比较不同标准化方法对群落数据的影响,我们使用只有两个物种的虚拟群落进行处理,然后在笛卡尔坐标系进行展示(彼此之间是欧氏距离):

#假设虚拟数据:2个物种在5个样方的分布

spe1=c(0.1,0.2,0.3,0.4,0.5)

spe2=c(0.6,0.7,0.8,0.9,1)

ab=cbind(spe1,spe2)

rownames(ab)=LETTERS[1:5]

#各种标准化

ab1=decostand(ab, MARGIN=1, "total")

ab2=decostand(ab, MARGIN=1, "normalize")

ab3=decostand(ab, MARGIN=1, "hellinger")

ab4=decostand(ab, MARGIN=1, "chi.square")

ab5=wisconsin(ab)

#作图观察不同标准化方法距离差异

par(mfrow=c(2,3))

plot(ab[,1], ab[,2], xlim=0:1, ylim=0:1, main="Rawdata")

text(ab[,1], ab[,2]-0.05, labels=rownames(ab), cex=1.2)

plot(ab1[,1], ab1[,2], xlim=0:1, ylim=0:1, main="Total")

text(ab1[,1], ab1[,2]-0.05, labels=rownames(ab), cex=1.2)

plot(ab2[,1], ab2[,2], xlim=0:1, ylim=0:1,main="Normalize")

text(ab2[,1], ab2[,2]-0.05, labels=rownames(ab), cex=1.2)

plot(ab3[,1], ab3[,2], xlim=0:1, ylim=0:1,main="Hellinger")

text(ab3[,1], ab3[,2]-0.05, labels=rownames(ab), cex=1.2)

plot(ab4[,1], ab4[,2], xlim=0:1, ylim=0:1,main="Chi.square")

text(ab4[,1], ab4[,2]-0.05, labels=rownames(ab), cex=1.2)

plot(ab5[,1], ab5[,2], xlim=0:1, ylim=0:1,main="Wisconsin")

text(ab5[,1], ab5[,2]-0.05, labels=rownames(ab), cex=1.2)

结果如下所示:

在没有处理的情况下,群落之间的欧氏距离相等,然而在生态学方面我们不这么看,因为B中物种1的数量是A的两倍,其群落差异显然比D、E更大,五种处理方法标准化数据后的结果都比较好的证实了上面的猜想,尤其是最后两种。然而在微生物生态中,我们倾向于认为微生物群落是一个整体,不同样品之间物种的相对丰度是有可比较的实际意义的,因此最常用的就是总和标准化(当然在不涉及丰度比较的聚类和排序分析中各种标准化方法都可以尝试,在传统群落研究里,虽然经常使用中心化等方法,但是需要使用盖度等对不同物种进行加权,因此直接进行总和标准化从某种意义上是使用相对丰度进行加权)。

对于物理、化学变量而言,则完全不同,因为环境变量的值具有绝对性,例如温度1-2℃和21-22℃其差异是一样的。环境变量由于量纲不同,在计算距离矩阵(欧氏距离)、根据特征根提取的主成分分析、比较系数的回归分析之前,均需要进行z-score标准化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容