数据流的密度估计

Density Estimation of a stream of Data

有哪些统计方法可以估计数据随时间到达的概率密度?

我需要估计多变量数据集的 pdf;但是,随着时间的推移,新数据会到达,并且随着数据到达,密度估计必须更新。

到目前为止,我一直在使用的是内核估计,方法是存储数据缓冲区并在每次更新新数据时计算新的内核密度估计;但是,我无法再跟上需要存储的数据量。因此,我需要一种方法来跟踪总体 pdf/density 估计而不是单个数据。任何建议都会很有帮助。我在 Python 工作,但由于这是冗长的任何算法建议也会有所帮助。

Scipy's implementation of KDE 包括按每个数据而不是每个点递增 KDE 的功能。它嵌套在 "if more points than data" 循环中,但您可以根据需要重新调整它的用途。

if m >= self.n:
    # there are more points than data, so loop over data
    for i in range(self.n):
        diff = self.dataset[:, i, newaxis] - points
        tdiff = dot(self.inv_cov, diff)
        energy = sum(diff*tdiff,axis=0) / 2.0
        result = result + exp(-energy)

在这种情况下,您可以将 kde 的结果存储为 result,每次获得新点时,您只需计算新的高斯分布并将其添加到结果中即可。可以根据需要删除数据,您只存储 KDE。