2017-04-23 23 views
4

我跑一些聚類分析,我想弄清楚兩兩件事:在pvclust和在hclust結果p值

1)如何最好地解釋p值在pvclust結果(那是什麼,他們正在建立空?)

2)如何把這些結果hclust

我將使用mtcars數據集作爲一個例子...

在使用pvclust功能第一(使用歐幾里得遠程CE和完整連接):

d.pv <- pvclust(t(mtcars), method = "euclidean", 
      method.hclust = "complete", nboot = 10) 

然後我產生我的樹狀圖,並作爲紅色框周圍放置顯著集羣(阿爾法= 0.95)

plot(d.pv) 
pvrect(d.pv, alpha = 0.95) 

我得到這個數字:

enter image description here

我還可以調用那名顯著的意見:

pvpick(team.clus.pv, alpha = 0.95) 

但這些發現的意義是什麼?我們在樹狀圖中看到兩個聚類,那麼這兩個聚類有何不同,這一重大發現(p = 0.02)呢?這很簡單嗎?

由於聚類分析是一種描述性/探索性技術,如果我使用hclust軟件包構建它並指定我感覺有3個感興趣的聚類,該怎麼辦?

d <- dist(mtcars, method = "euclidean") 
hc <- hclust(d, method = "complete") 
plot(hc) 
rect.hclust(hc, k = 3, border = "red") 

現在我的樹狀圖如下所示:

enter image description here

因爲我感興趣的3個集羣,有沒有辦法讓pvclust使這3個集羣之間的比較呢?或者,也許這不是pvclust比較的?這裏的零假設是什麼?

如果我查看pvclust產生的樹狀圖,似乎在右邊的紅色框內,我有興趣指定的其他兩個簇(使用hclust)也具有顯着的p值。我將如何報告或解釋它?

+1

什麼是pvclust? http://www.sigmath.es.osaka-u.ac。jp/shimo-lab/prog/pvclust/ –

+0

是的,謝謝你,亞當,在發佈我的問題之前,我發現了該網站。問題在於它不能回答我的問題,即如何使用hclust測試集羣的第二個問題。我想答案是,「主觀」的集羣並不存在,因爲它們使用pvclust並不顯着。 – user3585829

+0

您是否注意到紅色和綠色的小數字,以及它們與「p值」的關係?但總體而言,這些p值看起來太「重要」,要逼真。顯然,對於這種方法一切都很重要... –

回答

3

也許這是更多的交叉驗證問題比堆棧溢出?

我不確定您在這裏使用pvclust的方式 - 在轉置數據集上 - 進行了修改。 當你瞭解pvclust的工作方式以及如何解釋輸出時,這更加清晰。
請接受這個答覆,因爲我不是這種方法的專家。

注意:mtcars數據集在行上有不同的車型,在列上有不同的汽車特徵。根據行的特點對行(車型)進行聚類。

pvclust輸出

pvclust提供2種類型的樹狀圖紅色和綠色的數字的每個節點顯示的結果(灰色數字只是節點號)或通過print方法:

  • 綠色數字是Bootstrap Probability * 100(BP)並且有最直接的解釋
  • 紅色數字是Approximately Unbiased p-value * 100(AU)並且是BP的一個修正版本以限制偏差

引導概率(BP)

BP的解釋非常簡單。在您的示例中,pvclust將引導數據集的列(這裏是汽車的特徵)(即某些列將被刪除,其他列將會多次出現),然後重新計算行之間的歐幾里得距離並計算樹狀圖。它將重複此nboot * length(r)次(默認爲length(r) = 10),並且對於每次運行,它將檢查每個集羣是否同一組汽車一起存在於自舉數據集的集羣中。

在你的例子中,左邊的第一個集羣有一個BP = 0.31,這意味着這9個車型(瑪莎拉蒂寶來,克萊斯勒帝國,Pontia Firebird)結束了在同一集羣中的31個用完100個bootstraps。
這意味着,如果您要使用另一個汽車特徵的隨機樣本(但是這是否合理?),這個羣集只會出現在31%的案例中。注意:集羣內的拓撲結構可能在引導程序中有所不同。檢查的唯一標準是這些車輛是在同一個集羣中,還是不在集羣內部的關係。

至於你的第二個問題,你有這個每個節點的BP號碼,所以你可以用同樣的方式解釋任何集羣。例如,您用hclust(包含7輛汽車:Homet 4驅動器,...,AMC Javelin)顯示的middel集羣的BP = 0.39,這可以解釋爲如上所述。

你能使用pvclust來測試觀察(行)上的聚類嗎?

如果您可以重新採樣新的數據集,bootstrap通常用於估計統計量的可變性。 在你的例子中,如果你可以重新採樣一個新的數據集,你可能會有相同的汽車特徵 ,但一組不同的汽車模型。汽車模型是這裏的樣本/觀測數據,重新採樣觀測比特徵/變量更有意義。 pvclust旨在用於測試變量(列)而不是觀測值(行)的聚類 。這可能是爲什麼它在列 上執行羣集,而hclust對這些行執行羣集。

pvclust所使用的方法起源於phyllogenetic分析,您嘗試根據基因的DNA或其他特徵聚類來自不同物種的個體。然而,phyllogenetic或基因組病例是有點奇特的。在這種情況下,觀察/樣本 是個體(DNA的來源),變量/特徵/描述符例如是基因或其表達水平。在這種情況下,根據基因對個體進行聚類並通過引導基因來測試聚類的穩定性是有意義的,因爲基因是多方面的,並且在基因庫中隨機重新取樣是合理的。

在生態學中,您通常在網站(=觀測)x物種(=變量)矩陣上工作。根據網站的具體組成情況對網站進行聚類分析是很常見的。在這種情況下,引導物種以測試位點簇的穩定性是沒有意義的,因爲整個社區應該被用來表徵位點,並且不能隨意丟棄一些物種......但是進行聚類分析是有意義的如果我們可以對一組新的地點進行重新採樣,則可以測試物種協會的穩定性。

近似無偏估計p值」(AU)

非盟應該以類似的方式被解釋爲BP,但被認爲是一個公正的版本。 但是它背後的理論是更技術的超出了我達到... 因此,先驗你應該使用這個值而不是BP來解釋你的集羣,但我想你應該更加謹慎,因爲在你的例子中對變量進行了重新採樣,因爲偏見在這種情況下,修正可能還沒有開發出來(這只是一個猜測,我不知道這是多麼有風險)

英國石油公司往往表現爲一個向下偏向的統計。例如Paradis(2011)解釋說,如果BP很高,那麼數據支持該集羣。但是,如果數據不足,可能是因爲該數據集沒有被數據支持或因爲偏見。但Efron等人(1996)認爲,這是對bootstrap方法實際測試的誤解,並且BP沒有系統地向下偏向。他們提出了另一種方法來計算這個p值,「更好地符合置信水平和假設檢驗的標準思想」,並採用「兩級自舉算法」。 Suzuki & Shimodaira用「多步多尺度自舉算法」擴展了這種方法,該算法在pvclust中用於計算AU。

在此算法的第一步中,您重做自舉多次,但具有不同的樣本大小。在你的例子中,有11列,所以經典引導將重新取樣這些列11次,並重復這nboot時間(默認= 1000,你選擇nboot = 10)。使用「多步多尺度自舉算法」,您重複此過程1000 * 10次(默認情況下),但是樣本大小爲5,6,7,8,9,11,12,13,14和15.這由r該函數的參數提供了原始樣本大小(此處爲= 11)與自舉樣本大小(默認情況下爲5至15)的比率。當您運行pvclust時,它將顯示在控制檯上:Bootstrap (r = 0.45)... Done.(即樣本量爲0.45*11 = 5的第一組引導程序)。

參考文獻

Efron B.et al。 (1996)Bootstrap confidence levels for phylogenetic trees,Proc。 Natl Acad。科學。 93:13429-13434

Paradis,E.(2011)Analysis of Phylogenetics and Evolution with R,1st ed。斯普林格。

Shimodaira H.(2004)使用multistep-multiscale bootstrap resampling進行的近似無偏區域測試,Ann。統計。 32:2616-2641

Suzuki,R.,Shimodaira,H.,(2006)Pvclust:一種R包,用於評估層次聚類中的不確定性。 Bioinformatics 22:1540-1542

+0

感謝您的詳細回覆!那太棒了! – user3585829