

雙向指示種分析(Two Way INdicator SPecies Analysis,TWINSPAN)是最流行的層次分劃方法之一,廣泛用於植被群落研究中(Hill, 1979)。
TWINSPAN概述
TWINSPAN基於由對應分析(CA)或去趨勢對應分析(DCA)所得的座標軸,透過逐級細化實現對整個資料集的層次劃分,構造一個有序的雙向表對物件(樣方)和變數(物種)進行分類。Hill(1979)也稱該方法為二分排序分析(dichotomized ordination analysis)。
TWINSPAN演算法簡述
該演算法本身非常複雜,可以概括為以下步驟(Kent and Coker, 1992)。
(1)以排序軸為基礎進行預分類。首先對樣方–物種組成矩陣執行CA或DCA,並根據第一排序主軸中的得分值(座標)將物件分為兩組(並不一定從0點進行劃分),稱為初級分類(primary ordination)。
(2)選取指示種。指示種(indicator species)代表了對分類有重要意義的物種,這種重要性透過指示值(indicator value)衡量:

n+和n–分別為劃分點兩側(正方向和負方向,即兩組)的樣方數量,nj+和nj–分別為兩組樣方中含有物種j的樣方數量,Ij為指示值,可知Ij取值範圍[-1,1]。
指示值實際上描述了劃分點兩側分組對物種的偏好。通常選擇Ij絕對值最大的一些代表性物種作為指示種,它們也通常為分佈於排序軸兩端的種。
(3)計算樣方的指示得分(indicator score)。在(2)中,將物種的丰度值轉化為指示值,對於一個樣方,如果含某正指示種(Ij>0),計+1分;含某負指示種(Ij<0),計-1分;該樣方中所有指示種的得分相加後,即為該樣方的指示得分。
(4)重新根據指示得分對樣方分類。選擇合理的指示得分閾值作為劃分點,使兩側的分組與(1)中分組的吻合程度最高,降低分類錯誤。若二者完全吻合,則繼續(5);若不完全一致,則需要對預分組進行調整。
以最初排序軸上的劃分點為中心向兩側擴充套件得到一個較窄的中性帶(indifference zone),對鄰近劃分點樣方的模糊分類進行調整,如下所示(Hill et al, 1975),調整後①、②、③區歸為一組,④、⑤、⑥區歸為一組。

(5)重複(1)–(4)過程,在得到的每個分類中進一步細分分類,最終得到整個資料集的層次分類結構。
存在兩種停止劃分的終止原則:組內樣方數降到一個規定數值(如包含5個或更少樣方的組不進行進一步劃分),或者達到規定的劃分層級(如只允許劃分3級)。
(6)透過類似的過程也可實現對物種的分類。
聚類結果解讀
TWINSPAN的主要輸出是一個重新構建的樣方×物種的雙向表,稱為雙向分類矩陣(two-way classification matrix),同時提供了樣方或物種的分類資訊,這是TWINSPAN 的一個特點。
如果有必要,可以透過雙向表繪製樹狀圖觀測分類概況,它的結構很容易理解。

97個樣方30個物種的TWINSPAN聚類。
下方的矩陣為樣方×物種的雙向分類矩陣,縱列為樣方,橫列為物種,交叉區域的數值代表了該物種在該樣方中的數量,“–”表示該物種不存在於此樣方中。矩陣右側和下側的0和1分別代表每次劃分分類時的兩個組,例如“10”代表了第一次劃分到了1組,在1組中繼續劃分,第二次劃分到了0組。
上方的樹狀圖即為聚類樹,這裡表示了樣方在層次分劃時的分類資訊,和雙向分類矩陣中代表分類的“0-1”資訊對應。
TWINSPAN的改進
根據上述計算原理可知,指示種的概念只考慮了該樣方中物種存在與否的情況。
為了加入物種丰度的定量資訊,可將丰度較高的物種轉換為一系列假物種(pseudospecies)帶入運算,即原始資料中某物種丰度越高,預處理資料中其對應的假物種越多,轉換使用預先定義的割層(cut-levels)完成。TWINSPAN的結果是一個層次結構的樹狀圖,它顯示了各個細分割槽域之間的關係,每個細分割槽域都有一個或多個指示物種的列表,根據層次分類的劃分對樣方進行排序後,物種將在組內成塊分佈。
最初的TWINSPAN在劃分層次時,對於每個亞組是同步進行的,因此最終所得聚類簇數量只能是2n,n為劃分的層級。
Roleček等(2009)加以改進,劃分層次時僅對組成上異質性最高(高β多樣性)的亞組進一步細化,修改後的TWINSPAN允許獲得任意的聚類簇數量。

原始(a)和改進(b)TWINSPAN演算法的樹狀圖。在原始TWINSPAN中,各層級的每個組都被進一步分為更細的兩組;改進的TWINSPAN中,只對異質性最高的組進一步劃分。
TWINSPAN的缺點
Belbin和McDonald(1993)指出TWINSPAN的兩個缺點:
(2)排序主軸上的劃分點是任意的(無固定的準則),在梯度不明顯時,可能會導致物種組成非常接近的樣方彼此分離。
統計學家經常批評TWINSPAN是一個隨意的、沒有完整記錄的步驟。儘管如此,在群落生態學研究中該方法卻受青睞,因為它經常返回生態學上直觀的結果,特別是在植被群落的研究中,使用TWINSPAN有著悠久的傳統。
R語言執行TWINSPAN
在R中,可使用twinspanR包執行TWINSPAN。
以下程式碼直接搬運自原作者的文件:
https://davidzeleny.net/blog/2015/05/10/twinspan-in-r/
#install twinspanR packages
#https://github.com/zdealveindy/twinspanR/blob/master/README.md
install.packages('devtools') # if you don't have it installed yet
devtools::install_github('nsj3/riojaExtra')
devtools::install_github('zdealveindy/twinspanR')
# Modified TWINSPAN on traditional Ellenberg's Danube meadow dataset,
# projected on DCA and compared with original classification into
# three vegetation types made by tabular sorting:
library(twinspanR)
library(vegan)
data(danube)
res <- twinspan(danube$spe, modif = TRUE, clusters = 4)
k <- cut(res)
dca <- decorana(danube$spe)
par(mfrow = c(1,2))
ordiplot(dca, type = 'n', display = 'si', main = 'Modified TWINSPAN')
points(dca, col = k)
for (i in c(1,2,4)) ordihull(dca, groups = k, show.group = i, col = i, draw = 'polygon', label = TRUE)
ordiplot(dca, type = 'n', display = 'si', main = 'Original assignment\n (Ellenberg 1954)')
points(dca, col = danube$env$veg.type)
for (i in c(1:3)) ordihull(dca, groups = danube$env$veg.type,
show.group = unique (danube$env$veg.type)[i], col = i,
draw = 'polygon', label = TRUE)

然而本人上來就卡在了安裝環節上……
因為還有很多其它事情要做,加上本人實際中似乎也用不到該方法,就沒再花時間研究該包,具體用法還請自行研究吧……
參考資料



