寻找平均 GPS 点

机器算法验证 异常值 空间的
2022-03-17 20:40:03

我需要编写一个程序来从一组点中找到平均 GPS 点。

在实践中会发生以下情况:

  • 每个月都有一个人记录同一静态资产的 GPS 点。
  • 由于 GPS 的性质,这些点每个月都会略有不同。
  • 有时,这个人犯了一个错误,在完全不同的位置记录了错误的资产。
  • 每个 GPS 点都有一个确定权重 ( HDOP ),表示当前 GPS 数据的准确性。具有更好 HDOP 值的 GPS 点优先于较低的点。

如何确定以下内容:

  • 处理具有 2 个值与单个值(例如年龄)的数据。(求人口中的平均年龄)
  • 确定异常值。在下面的示例中,这些将是 [-28.252, 25.018] 和 [-28.632, 25.219]
  • 排除异常值后,找到其中的平均 GPS 点,它可能是 [-28.389, 25.245]。
  • 如果可以使用 HDOP 值为每个点提供的“权重”,那将是一个奖励。

替代文字

3个回答

多元数据的问题之一是决定并解释一个合适的计算距离的度量标准,因此聪明但有点难以解释的概念,如马氏距离。但在这种情况下,选择肯定是显而易见的——欧几里得距离我建议使用一个简单的启发式算法,例如:

  1. 计算数据点的(未加权)质心,即2个坐标的(未加权)均值
  2. 计算所有读数与质心的欧几里得距离
  3. 排除任何超过一定距离的读数(根据您对技术的经验和知识来确定,或者未能通过反复试验交叉验证 - 100m、1km、10km??)
  4. 计算剩余点的两个坐标的加权平均值,通过 HDOP 分数的倒数加权(或它的一些单调函数 - 我快速查看了问题中链接的维基百科页面,并认为您可能不需要这样一个功能,但我需要进一步研究它以确定)

显然有几种方法可以使这个变得更复杂,例如降低异常值的权重或使用M 估计器而不是简单地排除它们,但我不确定这种复杂性在这里是否真的有必要。

Rob Hyndman 最近提出了一个关于在多元数据中检测异常值的问题。答案可能会提供几种可能的方法(否则,您可能希望将查找二维异常值的问题放在单独的问题中)。

您可以逐个组件平均剩余的 GPS 数据组件 - 将所有第一个组件相加并除以点数,这将为您提供平均值的第一个组件。与第二个组件相同。

这种平均可以通过 HDOP 加权。将第一个分量的乘积相加,乘以相应的 HDOP 分数,然后将总和除以 HDOP 分数的总和。与第二个组件相同。

我会冒昧地删除“正常分布”标签......

将 HDOP 称为自变量。稍后将其用于加权。所以你有一组坐标——称之为 (x1,y1); (x2,y2) 等...首先忽略异常值。将 x 坐标的加权平均值计算为 [(x1*h1)+(x2*h2) +....+ (xn*hn)] / [sum(h1,h2,...,hn)]其中 h1,h2,... 是 HDOP 值。对 y 坐标执行相同的操作。这将为每个坐标提供相当准确的平均值。

处理异常值可能有点棘手。你怎么知道它们是否是异常值?严格来说,您需要确定观测值的统计拟合,并在置信区间内确定它们是否真实。看着毒药分布的问题确实浮现在脑海中。但这可能是很多工作,我敢肯定你不想进入这个。也许使用近似值?假设您假设平均坐标值是一个很好的使用方法。然后确定标准偏差的值。我认为标准开发或毒物分布是 1/(均值)。然后使用正态分布和 95% 置信区间进行近似。假设观察值超出区间(mean-*1.645*std dev ; mean + 1.645*std dev)那么它是异常值吗?试一试。