我正在尝试制作一个有很多NA的不同矩阵的热图。然而,我在尝试执行聚类时遇到了问题。没有聚类,热图工作正常。我不想估算/删除NA。有没有办法执行聚类?我知道NA计算距离是一个问题,但应该有办法解决,对吗?
我得到以下错误消息:
“hatch(get_dist(submat,distance),method = method)中出错:外部函数调用中的NA/NaN/Inf(arg 10)
此外:警告消息:矩阵中存在NA,通过删除NA值计算距离。
编辑:
我使用的数据是一个不寻常的矩阵,有很多NA。也许这就是问题所在?但我也想在热图中可视化这些NA。所以只聚类行,而不是列。
dissimilar matrix example
3条答案
按热度按时间1yjd4xko1#
我不知道你为什么会得到这个错误。
dist
函数默认情况下应该处理NA。下面是一个例子。另外,你可能想先简单地计算你的距离矩阵,然后馈送到hclust
。vegan
包可以计算许多距离度量,你可以指定是否应该删除NA:字符串
cig3rfwq2#
好的,我设法解决了这个问题。我必须做简单的估算。我只是用一个“常数”代替了所有的NA。
然后,我可以可视化整个数据集,而无需删除任何样本或行,对行和列进行聚类。然后,当我想绘制NA在数据集中的位置时,我只需在任何图中为“常量”给予特定的颜色。
通过这种方式,我对所有的NA都进行了相同的处理,而不会根据其他样本(例如均值/中位数/回归方法)为每行/列中的NA分配一个值。这种方法最适合我的数据集,而不会使它们向任何方向倾斜。
c3frrgcw3#
管理NA问题的另一种方法是,如果NA的数量上级超过阈值,则删除该列。阈值将是热图/聚类不再工作的最大值。
例如# remove columns if number of na is up to 15 na_count <- colSums(is.na(t_Mat))columns_to_remove <- which(na_count > 15)# Remove identified columns t_Mat <- t_Mat[,-columns_to_remove]