我是R的新手,我試圖對數據表做一些聚類,其中行代表單個對象,而列代表已測量這些對象的功能。我已經完成了一些集羣教程,並且獲得了一些輸出結果,但是,聚類之後得到的熱圖與完全不對應於使用另一個程序從同一數據表生成的熱圖相對應。雖然該程序的熱圖確實表明對象之間的標記表達有明顯差異,但我的熱圖沒有顯示出太多差異,並且我無法識別熱圖上的任何聚類(即顏色)模式,它似乎只是一個隨機混雜集彼此接近的顏色(沒有大的對比度)。這裏是我正在使用的代碼的一個例子,也許有人對我可能做錯了什麼有一個想法。R中的聚類和熱圖
mydata <- read.table("mydata.csv")
datamat <- as.matrix(mydata)
datalog <- log(datamat)
我使用日誌值聚類,因爲我知道,其他程序這樣做,太
library(gplots)
hr <- hclust(as.dist(1-cor(t(datalog), method="pearson")), method="complete")
mycl <- cutree(hr, k=7)
mycol <- sample(rainbow(256)); mycol <- mycol[as.vector(mycl)]
heatmap(datamat, Rowv=as.dendrogram(hr), Colv=NA,
col=colorpanel(40, "black","yellow","green"),
scale="column", RowSideColors=mycol)
同樣,我繪製了原來的顏色,但使用log-集羣,因爲我知道,這是其他程序所做的。
我嘗試過使用這些方法,但是我沒有得到任何至少看起來像聚簇熱圖的東西。當我拿出縮放比例時,熱圖變得非常暗(我實際上非常肯定我以某種方式按比例縮放或標準化數據)。我也嘗試用k-means進行聚類,但是這再次沒有幫助。我的想法是由於有兩個異常值,顏色比例可能無法完全使用,但儘管將它們略微增加了熱圖上繪製的顏色範圍,但仍未顯示出適當的羣集。
還有什麼我可以玩的?
是否可以通過熱圖來改變顏色比例,以便在最後一個有「範圍大於特定值的區域」的區域發現異常值?我試圖用heatmap.2(參數「break」)來做到這一點,但是我沒有成功,而且我也沒有設法將熱像圖函數中使用的行邊顏色。
有關使用ggplot2創建熱圖的教程,請參見[http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/] – 2012-03-22 13:16:53
有關R中聚類分析的教程可用在[http://www.statmethods.net/advstats/cluster.html] – 2012-03-22 13:17:46
@ EtienneLow-Décarie:謝謝,我之前通過了這些教程以及Thomas Girke的教程,但它並沒有幫助我找出問題。事實上,我一直在嘗試使用大量網站和教程來查找整個一週的解決方案。如果你可以給我一個關於我可能忽略了哪些特定細節的暗示,那麼這些細節無法正常工作。 – AnjaM 2012-03-22 13:37:52