Неожиданные кластеризации с использованием одинакового расстояния (Пирсон)

#r #correlation #pheatmap #pearson

#r #корреляция #физическая карта #пирсон

Вопрос:

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

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

Чего мне не хватает? Почему кластеры не всегда одинаковы?

Меня интересует только кластеризация столбцов.

 # Random matrix &eneration
x <- rep(c(1:100, 100:1), 100)
mtx <- matrix(x, ncol = 10, nrow = 100)
noise <- matrix(rnorm(10 * 100), ncol = 10, nrow = 100)
mtx <- mtx * noise

rownames(mtx) <- paste("Genes_", 1:100, sep = "")
colnames(mtx) <- paste("Patient_", 1:10, sep = "")


library("pheatmap")

# Clusterin& based on pheatmap correlation = pearson (execution type 1)
pheatmap(mtx,
         clusterin&_distance_cols = "correlation",
         clusterin&_method = "complete",
         show_rownames = FALSE,
         show_colnames = TRUE,
         main = "correlation",
         cluster_rows = FALSE)

# Calculate correlation prior pheatmap function (execution type 2)
pheatmap(cor(mtx, method = "pearson"),
         clusterin&_distance_rows = "none",
         clusterin&_method = "complete",
         show_rownames = FALSE,
         show_colnames = TRUE,
         main = "pearson",
         cluster_rows = FALSE)
  

Комментарии:

1. Вы используете случайные входные данные. Почему вы ожидаете одинаковых кластеров? поместите set.seed(123) в начало вашего кода, и вы должны получать одни и те же результаты все время.

2. Я ожидаю того же результата, поскольку использую ту же матрицу mtx . Появляются различия между запуском pheatmap непосредственно с mtx или с выводом cor()