2015-05-12 3 views
1

Я использую метод scipy.stats.gaussian_kde от scipy для генерации случайных выборок из данных.Как метод stats.gaussian_kde вычисляет pdf?

Он отлично работает! Теперь я выяснил, что метод также имеет встроенные функции для вычисления функции плотности вероятности данного набора точек (мои данные).

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, который является t он интеграл PDF от 0 до макс (данные)
  3. pdf который является ПДФОМ данных

Причины мне нужно это PDF потому, что в настоящее время Я пытаюсь вычислить взвешивает для моих данных на основе по вероятности. Чтобы я мог дать каждой из моих данных, укажите вероятность, которую я могу использовать в качестве моих весов.

Я также хотел бы знать, откуда я должен приступить к вычислению моих весов?

P.S. Простите, что я задал один и тот же вопрос в перекрестном подтверждении, кажется, что ответа нет!

ответ

0

интернет-документы имеют ссылку на исходный код, который для gaussian_kde находится здесь: https://github.com/scipy/scipy/blob/v0.15.1/scipy/stats/kde.py#L193

+0

Спасибо за исходный код, но то, что я не понимаю, от этого является то, что у меня есть 1D массив, и там функция 'evaluation' делает это только для 2D-массива! Но я получаю pdf-файл для своих данных! Как это так? Я запутался! – ThePredator

+0

В начале есть 'atleast_2d' вызов. В общем, лучше спросите фактический, отдельный вопрос. –