【发布时间】:2020-11-13 12:53:20
【问题描述】:
我得到了一个修改后的距离矩阵,我想在其中使用转换后的(标准化)距离来创建变量。下面,我有一些生成示例数据的代码。
set.seed(12)
size <- sample(100:1000, 7)
var <- c("V3", "V4", "V5", "V6", "V7", "V8", "V9")
dist <- matrix(runif(100), nrow = 7, ncol = 7)
diag(dist) <- 0
df <- as.data.frame(cbind(var, size, dist))
这导致数据集如下所示:
var size V3 V4 V5 V6 V7 V8 V9
1 V3 549 0 0.264918377622962 0.787836347473785 0.439429325051606 0.941087544662878 0.97763589094393 0.774718186818063
2 V4 445 0.0228777434676886 0 0.0978530396241695 0.669819295872003 0.693911424372345 0.197649595327675 0.394586439244449
3 V5 435 0.00832482660189271 0.457607151241973 0 0.240883231163025 0.843702238984406 0.844225987326354 0.361513090785593
4 V6 346 0.392697197152302 0.540707547217607 0.217823043232784 0 0.384644460165873 0.0950279189273715 0.421090044546872
5 V7 958 0.813880559289828 0.665679829893634 0.267943592974916 0.882756386883557 0 0.381151003297418 0.322011524345726
6 V8 273 0.37624845537357 0.112698937533423 0.504767951788381 0.814063254510984 0.58848182996735 0 0.552160830702633
7 V9 552 0.380812183720991 0.21836716751568 0.188586926786229 0.633264608215541 0.530477509833872 0.152623838977888 0
数据由几个变量组成,表示var和不同点之间的距离,其中V3、V4等列是另一个点,即var == V4到@的距离987654329@ 由名为V5 的列表示。 Size 表示大小。
我要做的是计算distance的加权和,其中距离根据另一点的大小加权。见下面的公式:
其中Si 是单位i 的大小,(变量称为size)。 Di 是一个点(即列var3、var4、var5...)到i 个点,总和是所有 k 个单位。
例如,Di可以是给定点V3到V4(0.264918377622962)的距离,然后是Si是var == V4的size(即445)
当我的数据看起来像这样时,如何执行此计算?
谢谢!
【问题讨论】:
-
@Onyambu 我认为
WS是一个标量,它是根据与所有其他点的距离加权的单个点的大小,因此下标代表所有其他点,我们只需要为每个考虑的WS提供一个索引。这就是我的解释-也许OP可以澄清一下? -
@AllanCameron 很抱歉不够清楚。但是,是的。你的解释是对的。如何编辑帖子以使其更清晰?
-
@AllanCameron 很抱歉不够清楚。我意识到我误读了您之前评论的一部分。你的解释几乎是正确的。 WS 是一个标量,它是从一个点到所有其他点的加权距离之和,根据其他点的大小加权。所以 WS 是,例如从 V3 到 V4 的距离根据 V4 的大小加权,从 V3 到 V5 的距离应该根据 V5 的大小加权,以此类推。然后将这个相加,这就是 V3 的 WS 值。那有意义吗?如何编辑帖子以使其更清晰?
-
我想我明白了。你能检查我的更新吗?
标签: r distance distance-matrix