距离矩阵中缺失数据的插补

Imputation of missing data in distance matrix

想请问有没有人熟悉距离矩阵中缺失值的插补。对于普通数据(具有连续变量和名义变量的表),有很多插补技术,例如热卡和冷卡、预测模型等。但是几乎没有关于如何处理距离矩阵的信息。

示例:

distance <- dist(rnorm(20))
distance[c(10, 20, 30, 40, 50, 60)] <- NA

在这种情况下如何估算缺失值?

有两种方法可以完成部分距离矩阵:一种是基于超度量不等式,另一种是基于使用四点条件的加法程序(算法在 Makarenkov & Lapointe 中有详细描述, 2004).这两种方法都在 R 中的 ape 包中实现。

方法的选择取决于距离属性。

# Generate a distance matrix with five missing values
set.seed(111)
dd <- dist(1:10)
dd[sample(x = 1:length(dd), size = 5)] <- NA
dd

    1  2  3  4  5  6  7  8  9
2   1                        
3   2  1                     
4   3  2  1                  
5   4  3  2  1               
6   5  4  3  2  1            
7   6  5  4 NA NA  1         
8   7  6 NA  4  3  2  1      
9   8 NA  6  5  4  3  2 NA   
10  9  8  7  6  5  4  3  2  1

# Replace missing data
library(ape)
as.dist( additive(dd) )         # additive procedure
as.dist( ultrametric(dd) )      # ultrametric procedure

Makarenkov V, Lapointe FJ (2004)。从不完整的距离矩阵推断系统发育的加权最小二乘法。生物信息学, 20(13), 2113-2121, DOI: 10.1093/bioinformatics/bth211.