如何估计噪声层背后的高斯分布?
所以我有这个1-D数据的直方图,其中包含一些以秒为单位的转换时间.数据包含大量噪声,但噪声背后是一些描述正确时间值的峰值/高斯数. (见图片)
从在两个位置之间行走的人的过渡时间检索数据,其具有从正常步行速度分布(平均1.4m / s)获得的不同速度.有时,两个位置之间可能存在多条路径,可能会产生多个高斯. 我想提取出现在噪音之上的基础高斯.但是,由于数据可能来自不同的场景,但是任意数字(比如说大约0-3)的正确路径/“高斯”,我不能真正使用GMM(高斯混合模型),因为这需要我知道高斯分量的数量? 我假设/知道正确的转换时间分布是高斯分布,而噪声来自其他分布(卡方?).我对这个话题很陌生,所以我可能完全错了. 由于我事先知道两点之间的地面真实距离,因此我知道手段的位置. 这张图片有两个正确的高斯,有250s和640s的平均值. (变化越大,方差越大) 该图像有一个正确的高斯,平均值为428s. 题: 解决方法
我会使用
Kernel Density Estimation来解决这个问题.我允许您直接从数据中估计概率密度,而不会对基础分布做太多假设.通过更改内核带宽,您可以控制应用的平滑程度,我认为可以通过目视检查手动调整,直到您得到满足您期望的内容.使用scikit-learn在python中实现KDE的一个例子可以在
here找到.
例: 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) 估算过滤后的分布后,您可以使用类似this的方法对其进行分析并识别峰值. 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) 免责声明:这是一个或多或少的高级答案,因为您的问题也很高.我假设你知道你在做什么代码,只是在寻找想法.但是,如果您需要任何具体的帮助,请向我们展示一些代码以及您迄今为止所尝试的内容,以便我们可以更加具体. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |