您好,登錄后才能下訂單哦!
這篇“R語言數據標準化方法怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“R語言數據標準化方法怎么使用”文章吧。
什么是數據標準化?
在微生物組學數據分析之前,我們常常需要根據數據量綱的不同以及分析方法的需要對數據進行各種預處理,也即數據標準化。數據標準化的目的是使數據的總體符合某種要求,例如使數據總體符合正態分布以方便參數檢驗、使數據范圍相同以方便比較分析、使數據分布均勻以方便作圖展示等。我們必須知道不同標準化方法的內涵,從而在實際研究中可以選擇正確的數據標準化方法。
首先我們介紹一下數據轉換。簡單數據轉換也即對整體數據進行簡單運算,數據轉換的目的主要有三個,一是改變數據結構,例如非線性通過平方根、對數轉換為線性;二是改變數據范圍,便于比較和作圖分析,例如數據變化特別大的可以進行對數轉換來縮小屬性范圍;三是改變數據分布,使得樣本偏離標準分布太遠的更加接近標準分布(例如正態分布)。常見的數據轉換有以下幾種:
對數轉換:將數據(樣本觀察值)取自然對數(或者其他數為底的對數),可以使用log()函數來實現(log1p()可以將數據加1后取自然對數)。若是數據中有0或負值,可以全部數據加上一個數轉換為正數。一般來說自然對數轉換可以使0~1范圍內的數據范圍變大,可以使>1范圍內數據范圍變緊湊。
平方根轉換:將數據全部取平方根,可以使用sqrt(x)或者x^0.5來實現。類似的還有立方根轉換、四次方根轉換,偶數次方根要求數據非負。如果數據結構為二次關系,平方根轉換后平方根轉換可以使數據范圍變小。
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,樣品分布在一個圓弧上,彼此之間的距離為弦長,因此也稱為弦轉化。在基于歐氏距離的PCA、RDA中分析群落數據可以將每個樣方弦轉化可以彌補歐氏距離的缺陷。弦轉化后的數據使用歐氏距離函數計算將得到弦距離矩陣。
⑥method="hellinger",hellinger轉化,就是總和標準化數據的平方根(default MARGIN=1),hellinger轉化后的數據使用歐氏距離函數計算將得到hellinger距離矩陣。
⑦method="chi.square",卡方轉化,在默認(defaultMARGIN=1)的情況下是數據除以行的和再除以列的和的平方根,卡方轉化后的數據使用歐氏距離函數計算將得到卡方距離矩陣。
⑧Wisconsin轉化,這個是使用伴隨的函數wisconsin(),將數據除以該列最大值再除以該行總和,是最大值標準化和總和標準化的結合。
一般情況下,上面方法中默認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="Raw data")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更大,五種處理方法標準化數據后的結果都比較好的證實了上面的猜想,尤其是最后兩種。然而在微生物生態中,我們傾向于認為微生物群落是一個整體,不同樣品之間物種的相對豐度是有可比較的實際意義的,因此最常用的就是總和標準化(當然在不涉及豐度比較的聚類和排序分析中各種標準化方法都可以嘗試,在傳統群落研究里,雖然經常使用中心化等方法,但是需要使用蓋度等對不同物種進行加權,因此直接進行總和標準化從某種意義上是使用相對豐度進行加權)。
以上就是關于“R語言數據標準化方法怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。