我正在使用电子燃料棒准备汽车燃料水平。
我从GPS设备连续读数,每隔1分钟发送一次数据。我目前将这些数据存储在我的Microsoft SQL数据库中,并且可以生成漂亮的图形。
我想弄清楚检测
的最佳方法是什么阅读时有几个问题。 有时候每个燃油油位读数都会达到峰值,并回到接近前一水平的某个位置。这使得误报成为一种挑战。
有时长时间出现尖峰(有时加油后会看到),然后燃油油位会如您所料线性下降。见下面的第二张图。
我有ODO仪表读数和燃油液位读数(以升为单位)。
鉴于上述问题,我需要一种方法来检测这些噪声样本,这些样本与预期的线性下降随时间的偏差很大。
以下是2辆车的数据样本(如图)。 蓝线是实际数据。 红线是我尝试使用10个样本的平均值来尝试“平滑”大偏差。
现在进行研究和思考: 我找到了4种不同的方法来帮助识别大的偏差。 (我认为)
我应该考虑哪些更好的选择?
任何人都知道可以使用C#或TSQL实现的实现吗?
任何建议或想法都会很棒。
答案 0 :(得分:0)
正确的方法是制定一个模型来表示加油,虹吸和噪音过程的工作原理。该模型将包含一些自由参数(即正常燃料使用,燃料添加量,加油持续时间,燃料去除量,虹吸持续时间和噪声波动幅度,至少)。然后,事件的“检测”意味着找到使对数似然函数LL(参数)= log p(数据|参数)最大化的参数。这是你能做的最好的 - 如果你能做到这一点,你就不需要任何其他方法。其他方法可能有助于作为这种方法的近似 - 这是使用这些方法的理由。
由于模型是不连续的,因此对数似然函数也可能是不连续的。可能需要一些启发式搜索最佳拟合参数。这种启发式方法可能与已发布的方法一致 - 这很好,但不是必需的。
Seber& Wild,“非线性回归”有一个或多个关于具有不连续性的模型的章节。