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