如何在stats.gaussian_kde方法calcute的PDF?(How does the s

2019-10-23 02:32发布

我现在用的是scipy.stats.gaussian_kde从方法scipy产生从数据随机样本。

它工作正常! 什么我现在已经发现的是,该方法还具有内置的函数来计算给定的设定点(我的数据)的概率密度函数。

I would like to know how it calculates the pdf provided a set of points.

下面是小例子:

import numpy as np
import scipy.stats
from scipy import stats

def getDistribution1(data):
    kernel = stats.gaussian_kde(data,bw_method=0.06)
    class rv(stats.rv_continuous):
        def _rvs(self, *x, **y):
            return kernel.resample(int(self._size)) #random variates
        def _cdf(self, x):
            return kernel.integrate_box_1d(0,max(x)) #Integrate pdf between two bounds (-inf to x here!)
        def _pdf(self, x):
            return kernel.evaluate(x)  #Evaluate the estimated pdf on a provided set of points
    return rv(name='kdedist')

test_data = np.random.random(100) # random test data 
distribution_data = getDistribution1(test_data)
pdf_data = distribution_data.pdf(test_data) # the pdf of the data

在上面的代码段中,存在三种方法,

  1. rvs基于数据来生成随机样品
  2. cdf这是PDF的积分从0至最大(数据)
  3. pdf是数据的概率密度函数

我需要这个PDF的原因是因为我现在想来计算基于概率我的数据权重所以,我可以给我的每一个数据的点的概率,我可以再为我的权重使用。

我也想从这里知道我应该怎么着手计算我的权重?

PS请原谅我问交叉验证了同样的问题,似乎没有反应!

Answer 1:

在线文档有一个链接的源代码,这对于gaussian_kde是在这里: https://github.com/scipy/scipy/blob/v0.15.1/scipy/stats/kde.py#L193



文章来源: How does the stats.gaussian_kde method calcute the pdf?