【问题标题】:Getting rid of spikes in sample data消除样本数据中的尖峰
【发布时间】:2012-09-14 01:24:17
【问题描述】:

我怎样才能摆脱离散数据集中的火花数据,但以“平滑”的方式?

举个例子

有两个火花,在 20000,但下一个在 600 也被认为是火花。

我已经设法将非常高的值归零,通过

a = 2
b = 5
beta_dist = RealDistribution('beta', [a, b])
f(x) = x / 19968
normalized_insertions = [f(i) for i in insertions]

insertions_pairs = [(i, beta_dist.distribution_function(i)) for i in normalized_insertions]
plot_b = beta_dist.plot()

show(list_plot(insertions_pairs)+plot_b)

不知道如何处理较低的。最大值应该达到 100,也许 beta 分布的参数需要更多的调整?

目前,它看起来像这样:

如果可能,请使用鼠尾草作为您解释的参考。

【问题讨论】:

  • 您可以使用中值过滤器,可能是 3 或 5 个点。
  • 您是否正在寻找一种执行数据平滑的方法?如果是这样,那么按照 Paul R 的建议应用中值滤波器就可以了。此外,您究竟想用这些数据衡量什么,为什么选择使用 beta 分布?
  • @PaulR 如果您是这样发布的,我很乐意接受您的回答。
  • @Flavius:没问题 - 评论现在转换为答案。

标签: math signal-processing discrete-mathematics sage


【解决方案1】:

您可以使用median filter,可能是 3 或 5 分。这将删除上面数据中的孤立异常值。

【讨论】:

    【解决方案2】:

    你也许应该看看卡尔曼滤波器。这将确定您的数据的偏差并平滑高斯均值。因此,20k 的数字几乎没有任何影响,而 600 的影响更大,它们仍然会被数据的一致性所取代。如果你喜欢数学:
    http://www.cs.berkeley.edu/~pabbeel/cs287-fa11/slides/Smoother_KalmanSmoother--DRAFT.pdf
    否则可能:
    http://interactive-matter.eu/blog/2009/12/18/filtering-sensor-data-with-a-kalman-filter/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多