Понимание кластеризации дендограмм тепловой карты в R

Буду признателен за любой информационный материал о дендограммах (Colv, Rowv) функции тепловой карты R. Например, как работает кластеризация (это евклидово расстояние?). Вам не нужно публиковать длинные объяснения, я уже был бы рад некоторым ключевым словам, которые могли бы вывести меня на правильный путь, чтобы я мог провести некоторое онлайн-исследование.

Вот выдержка из справочного руководства, которое меня немного смущает. Что означает «заслуженный» в этом контексте и чем он отличается от переупорядочивания?

Если Rowv или Colv являются дендрограммами, они учитываются (и не переупорядочиваются).


person Community    schedule 13.03.2013    source источник
comment
Это просто означает, что вы можете либо предоставить свои собственные дендрограммы (переданные в Rowv и/или Colv), либо позволить тепловой карте рассчитать дендрограммы для вас. Таким образом, «уважать» просто означает, что если вы предоставите свою собственную дендрограмму, тепловая карта будет «уважать» их, то есть использовать их.   -  person joran    schedule 13.03.2013


Ответы (3)


Rowv и Colv определяют, следует ли переупорядочивать строки и столбцы набора данных, и если да, то как.

Возможные значения для них: TRUE, NULL, FALSE, вектор целых чисел или объект дендрограммы.

  • В режиме по умолчанию TRUE Heatmap.2 выполняет кластеризацию с использованием параметров hclustfun и distfun. По умолчанию это завершает кластеризацию связей с использованием меры евклидова расстояния. Затем дендрограмма переупорядочивается с использованием средств строки/столбца. Вы можете контролировать это, определяя различные функции для hclustfun или distfun. Например, чтобы использовать манхэттенское расстояние, а не евклидово расстояние, которое вы должны сделать:

    heatmap.2(x,...,distfun=function (y) dist(y,method = "manhattan") )
    

    проверить ?dist и ?hclust. Если вы хотите узнать больше о кластеризации, вы можете начать с «измерений расстояния» и «методов агломерации».

  • Если Rowv/Colv равно NULL или FALSE, то переупорядочение или кластеризация не выполняются, и матрица строится как есть.

  • Если Rowv/Colv является числовым вектором, то кластеризация вычисляется как для TRUE, а переупорядочивание дендрограммы выполняется с использованием вектора, предоставленного Rowv/Colv.

  • Если Rowv/Colv является объектом дендрограммы, то эта дендрограмма будет использоваться для переупорядочения матрицы. Объекты дендрограммы могут быть сгенерированы, например, с помощью:

    rowDistance = dist(x, method = "manhattan")
    rowCluster = hclust(rowDistance, method = "complete")
    rowDend = as.dendrogram(rowCluster)
    rowDend = reorder(rowDend, rowMeans(x))
    

    который генерирует полную кластеризацию на манхэттенском расстоянии, упорядоченную по средним значениям строк. Теперь вы можете передать rowDend в Rowv.

    heatmap.2(x,...,Rowv = rowDend)
    

    Это может быть полезно, если, например, вы хотите кластеризовать строки и столбцы по-разному, или использовать кластеризацию, которую вам дал кто-то другой, или вы хотите сделать что-то странное, что нельзя сделать, просто указав hclustfun и distfun. . Это то, что подразумевается под «дендрограммой соблюдается»: она используется вместо того, что указано в hclustfun и distfun.

person Ian Sudbery    schedule 13.03.2013
comment
Спасибо за подробное объяснение! Я нахожу поведение Heatmap() по сравнению с Heatmap.2() немного запутанным. Мне кажется, что в Heatmap.2 по умолчанию используется Rowv=TRUE, а в Heatmap() по умолчанию используется Rowv=NULL. Но оба варианта по умолчанию рассчитывают полную кластеризацию связей на основе евклидовых расстояний? - person ; 14.03.2013
comment
Да. Rowv=NULL в тепловой карте эквивалентно Rowv=TRUE в тепловой карте.2. В обоих случаях полная кластеризация связей, основанная на евклидовом расстоянии, является кластеризацией по умолчанию, потому что это режим кластеризации Rs по умолчанию, независимый от какой-либо функции, которая используется для построения результатов. - person Ian Sudbery; 14.03.2013

Чтобы узнать, как именно он обрабатывает Rowv/Colv, вы также можете использовать body(heatmap) для отображения его источника.

person texb    schedule 14.03.2013
comment
Спасибо, тело для меня новая функция ;) - person Jetse; 12.07.2013

Из руководства:

distfun : функция, используемая для вычисления расстояния (несходства) между строками и столбцами. По умолчанию расст.

hclustfun : функция, используемая для вычисления иерархической кластеризации, когда Rowv или Colv не являются дендрограммами. По умолчанию hclust. Должен принимать в качестве аргумента результат distfun и возвращать объект, к которому можно применить as.dendrogram.

dist() по умолчанию используется евклидово расстояние, а hclust() метод полной связи.

person EDi    schedule 13.03.2013
comment
If either Rowv or Colv are dendrograms they are honored (and not reordered). Otherwise, dendrograms are computed as dd <- as.dendrogram(hclustfun(distfun(X))) where X is either x or t(x). Я все еще в замешательстве: если я не устанавливаю Colv=NA и Rowv=NA, будет ли это евклидово расстояние или метод полной связи? Поскольку as.dendrogram вызывает как hclustfun, так и distfun, если я правильно понимаю - person ; 13.03.2013
comment
Не «или», это «и»! Полная кластеризация сцепления на матрице эклидовых расстояний. Я предлагаю вам немного прочитать об иерархической кластеризации. - person EDi; 13.03.2013
comment
Хорошо, спасибо, так и сделаю! РЕДАКТИРОВАТЬ: Я на правильном пути с иерархической кластеризацией агломератов? - person ; 13.03.2013