如何估计噪声层后面的高斯分布?

亚那

因此,我具有一维数据的直方图,其中包含一些以秒为单位的转换时间。数据中包含很多噪声,但是在噪声之后是一些峰值/高斯,它们描述了正确的时间值。(查看图片)

数据是从人在两个位置之间以正常步行速度分布(平均1.4m / s)获得的不同速度行走的过渡时间中检索的。有时,两个位置之间可能有多条路径,这些路径可能会产生多个高斯。

我要提取显示在噪声上方的基本高斯。但是,由于数据可能来自不同的场景,但是具有正确数量的路径/“高斯”(任意数,例如0-3),所以我不能真正使用GMM(高斯混合模型),因为这需要我知道高斯分量的数量?

我假设/知道正确的过渡时间分布是高斯分布的,而噪声来自其他分布(卡方?)。我对这个话题很陌生,所以我可能完全错了。

因为我事先知道两点之间的地面真相距离,所以我知道了该方法应该位于何处。

该图像有两个正确的高斯,均值分别为250s640s(时间越长,方差越大)

在此处输入图片说明

This image has one correct gaussian with the mean on 428s. 在此处输入图片说明

Question: Is there some good approach to retrieve the gaussians or at least significantly reduce the noise given something like the above data? I don't expect to catch the gaussians that are drown in noise.

Pasa

I would approach this using Kernel Density Estimation. I allows you to estimate the probability density directly from data, without too many assumptions about the underlying distribution. By changing the kernel bandwidth you can control how much smoothing you apply, which I assume could be tuned manually by visual inspection until you get something that meets your expectations. An example of KDE implementation in python using scikit-learn can be found here.

Example:

import numpy as np
from sklearn.neighbors import KernelDensity

# x is your original data
x = ...
# Adjust bandwidth to get the smoothness to your liking
bandwidth = ...

kde = KernelDensity(kernel='gaussian', bandwidth=bandwidth).fit(x)
support = np.linspace(min(x), max(x), 1000)
density = kde.score_samples(support)

一旦过滤分布估计,你可以分析和使用类似识别峰

from scipy.signal import find_peaks

# You can tweak with the other arguments of the 'find_peaks' function
# in order to fine-tune the extracted peaks according to your PDF
peaks = find_peaks(density)

免责声明:这是一个或多或少的高级答案,因为您的问题也很高级。我假设您知道自己在执行代码方面的工作,并且只是在寻找想法。但是,如果您需要任何具体的帮助,请向我们展示一些代码以及到目前为止您已经尝试过的内容,以便我们更加具体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章