缺失值向量间的距离

8

对于向量AB,欧几里得距离是:sqrt((A1-B1)^2+(A2-B2)^2+...+(An-Bn)^2)

(注:欧几里得距离指的是两点之间的直线距离)
A <- c(5, 4, 3, 2, 1, 1, 2, 3, 5)
B <- c(1, 0, 6, 4, 3, 2, 3, 1, 3)
dist(rbind(A,B), method= "euclidean") 
7.681146

当向量A和B中包含缺失值时,距离如何计算?下面是一个例子:R输出的距离为8.485281,但它是如何计算的?

A <- c(5, NA, NA, NA, 1, 1, 2, 3, 5)
B <- c(1, 0, 6, NA, NA, NA, NA, 1, 3)
dist(rbind(A,B), method= "euclidean")
8.485281
1个回答

12

删除带有NA的记录,然后将距离按比例缩放以考虑完整样本的较大维度:

i <- is.na(A) | is.na(B)
dist(rbind(A[!i], B[!i])) * sqrt(length(A) / length(A[!i]))
#          A2
# B2 8.485281

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接