Я новичок в 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)
Опять же, я рисую исходные цвета, но использую кластеры журнала, потому что я знаю, что это то, что делает другая программа.
Я попытался поиграть с методами, но не получил ничего, что хоть как-то выглядело бы как кластерная тепловая карта. Когда я снимаю масштабирование, тепловая карта становится очень темной (и я действительно совершенно уверен, что мне нужно как-то масштабировать или нормализовать данные по столбцам). Я также попытался выполнить кластеризацию с помощью k-средних, но, опять же, это не помогло. Моя идея заключалась в том, что цветовую шкалу нельзя использовать полностью из-за двух выбросов, но, хотя их удаление немного увеличило диапазон цветов, отображаемых на тепловой карте, это все равно не выявило правильных кластеров.
Есть ли еще что-нибудь, с чем я могу поиграть?
И можно ли изменить цветовую шкалу с помощью тепловой карты, чтобы выбросы находились в последней ячейке, которая имеет диапазон «все, что больше определенного значения»? Я попытался сделать это с помощью тепловой карты.2 (аргумент «обрывается»), но мне это не удалось, а также мне не удалось установить цвета сторон строки, которые я использую с функцией тепловой карты.