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