gpt4 book ai didi

r - 函数 `dist` 在缺失值的向量上表现不正常

转载 作者:行者123 更新时间:2023-12-04 23:23:21 25 4
gpt4 key购买 nike

编辑:我认为,从下面与 @joran 的讨论中,@joran 帮助我弄清楚了 dist正在改变距离值(它似乎是按值 [总尺寸]/[非缺失尺寸] 缩放坐标的平方和,但这只是一个猜测)。如果有人知道的话,我想知道的是:这真的是怎么回事吗?如果是这样,为什么认为这样做是合理的?有没有,或者应该有 dist 的选项以我提议的方式计算它(尽管这个问题可能含糊不清或具有自以为是的性质)。

我想知道如何dist函数实际上适用于具有缺失值的向量。下面是一个重新创建的示例。我使用 dist函数和我认为应该是欧几里得距离的定义与 sqrt、sum 和 powers 的更基本的实现。我还预计,如果任一向量的分量是 NA ,那个维度只会从总和中被抛出,这就是我实现它的方式。但是您可以看到该定义与 dist 不一致。 .

我将使用我的基本实现来处理 NA值,但我想知道如何 dist当向量具有 NA 时,实际上是在到达一个值,以及为什么它不同意我在下面的计算方式。我认为我的基本实现应该是默认/通用的,我无法弄清楚什么替代方法 dist正在使用它来获取它正在获取的东西。

谢谢,
马特

v1 <- c(1,1,1)
v2 <- c(1,2,3)
v3 <- c(1,NA,3)

# Agree on vectors with non-missing components
# --------------------------------------------
dist(rbind(v1, v2))
# v1
# v2 2.236068

sqrt(sum((v1 - v2)^2, na.rm=TRUE))
# [1] 2.236068



# But they don't agree when there is a missing component
# Under what logic does sqrt(6) make sense as the answer for dist?
# --------------------------------------------
dist(rbind(v1, v3))
# v1
# v3 2.44949

sqrt(sum((v1 - v3)^2, na.rm=TRUE))
# [1] 2

最佳答案

是的,缩放与您描述的完全一样。也许这是一个更好的例子:

set.seed(123)
v1 <- sample(c(1:3, NA), 100, TRUE)
v2 <- sample(c(1:3, NA), 100, TRUE)

dist(rbind(v1, v2))
# v1
# v2 12.24745

na.idx <- is.na(v1) | is.na(v2)
v1a <- v1[!na.idx]
v2a <- v2[!na.idx]

sqrt(sum((v1a - v2a)^2) * length(v1) / length(v1a))
# [1] 12.24745

缩放对我来说很有意义。在所有条件相同的情况下,距离随着维数的增加而增加。如果您在某处有 NA尺寸 i ,对维度贡献的合理猜测 i对平方和是所有其他维度的平均贡献。因此线性放大。

虽然你建议当你找到一个 NA尺寸 i ,该维度不应对平方和做出贡献。这就像假设 v1[i] == v2[i]这是完全不同的。

总结 dist正在做某种类型的最大似然估计,而您的建议更像是最坏(或最好)的情况。

关于r - 函数 `dist` 在缺失值的向量上表现不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com