Я использую метод 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
В приведенном выше фрагменте кода, существует три метода,
rvs
для генерации случайных выборок, основанных на данныхcdf
, который является t он интеграл PDF от 0 до макс (данные)pdf
который является ПДФОМ данных
Причины мне нужно это PDF потому, что в настоящее время Я пытаюсь вычислить взвешивает для моих данных на основе по вероятности. Чтобы я мог дать каждой из моих данных, укажите вероятность, которую я могу использовать в качестве моих весов.
Я также хотел бы знать, откуда я должен приступить к вычислению моих весов?
P.S. Простите, что я задал один и тот же вопрос в перекрестном подтверждении, кажется, что ответа нет!
Спасибо за исходный код, но то, что я не понимаю, от этого является то, что у меня есть 1D массив, и там функция 'evaluation' делает это только для 2D-массива! Но я получаю pdf-файл для своих данных! Как это так? Я запутался! – ThePredator
В начале есть 'atleast_2d' вызов. В общем, лучше спросите фактический, отдельный вопрос. –