【问题标题】:How to calculate a distance matrix from a diagonal line?如何从对角线计算距离矩阵?
【发布时间】:2019-02-04 02:03:40
【问题描述】:

假设我们有一个名为 Pred 的数据框。

每行包含 1 个用户。

用户由他们唯一的 userID 指定。

用户可以按他们所属的集群分组。

用户报告了他们对某项任务的信心和挑战,此信息分别保存为 ConfChall

请注意,ConfChall 的范围相同,即 1-6。

cluster   userID      Conf        Chall
1           A           5           3
2           B           3           2
1           C           6           1
1           D           3           4
2           E           2           4
2           F           3           5
1           G           6           2
1           H           5           5
2           I           6           2
2           J           5           4
2           K           1           1
1           L           3           5
1           M           4           4

假设我们制作了一个散点图,其中 Conf 在 x 轴上,Chall 在 y 轴上。

以下几点:

Conf == Chall

会在穿过原点的对角线上。

现在我有兴趣根据他们的坐标找到每个用户到对角线的距离:

(Conf, Chall) 

总体而言,该问题涉及找到点(Conf,Chall)与对角线的距离。

注意:请注意,我对绘制图表不感兴趣。我有兴趣计算距离向量。

我明白,这可能是一个非常基本的问题,但过去几天我一直在苦苦挣扎。一个简单的演示示例代码可以帮助我理解这个问题。

我将不胜感激这方面的任何指导!

【问题讨论】:

    标签: r line point diagonal distance-matrix


    【解决方案1】:

    点 (x,y) 到对角线的欧几里得距离由下式给出

    abs(x - y) / sqrt(2)
    

    参见,例如,here。因此,您可以使用

    (Pred$distance <- abs(Pred$Conf - Pred$Chall) / sqrt(2))
    # [1] 1.4142136 0.7071068 3.5355339 0.7071068 1.4142136 1.4142136 2.8284271
    # [8] 0.0000000 2.8284271 0.7071068 0.0000000 1.4142136 0.0000000
    

    【讨论】:

    • 感谢您的解决方案!当我在更大的文件上运行此代码时,我看到了一些差异。根据我的理解,当点位于对角线上时,即 Conf == Chall 时,距离应该为 0。但是,对于所有数据,我的距离向量保持非零。
    • @Sadiaz,没问题。您一定遗漏了一些东西,因为显然它应该给出 0,就像我们有 df$Conf - df$Chall 的分子一样。
    猜你喜欢
    • 2018-08-05
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多