Подгонка распределения Парето с (Python) Scipy - PullRequest
8 голосов
/ 14 июля 2010

У меня есть набор данных, который, как я знаю, имеет распределение по Парето. Может кто-нибудь указать мне, как разместить этот набор данных в Scipy? Я запустил приведенный ниже код, но не знаю, что мне возвращается (a, b, c). Кроме того, после получения a, b, c, как рассчитать дисперсию, используя их?

import scipy.stats as ss 
import scipy as sp

a,b,c=ss.pareto.fit(data)

Ответы [ 2 ]

4 голосов
/ 15 июля 2010

Вот быстро написанная версия, взяв несколько подсказок со страницы «Справка», которую дал Руперт.В настоящее время эта работа ведется в scipy и statsmodels и требует MLE с некоторыми фиксированными или замороженными параметрами, который доступен только в версиях магистрали.Стандартных ошибок в оценках параметров или другой статистике результатов пока нет.

'''estimating pareto with 3 parameters (shape, loc, scale) with nested
minimization, MLE inside minimizing Kolmogorov-Smirnov statistic

running some examples looks good
Author: josef-pktd
'''

import numpy as np
from scipy import stats, optimize
#the following adds my frozen fit method to the distributions
#scipy trunk also has a fit method with some parameters fixed.
import scikits.statsmodels.sandbox.stats.distributions_patch

true = (0.5, 10, 1.)   # try different values
shape, loc, scale = true
rvs = stats.pareto.rvs(shape, loc=loc, scale=scale, size=1000)

rvsmin = rvs.min() #for starting value to fmin


def pareto_ks(loc, rvs):
    est = stats.pareto.fit_fr(rvs, 1., frozen=[np.nan, loc, np.nan])
    args = (est[0], loc, est[1])
    return stats.kstest(rvs,'pareto',args)[0]

locest = optimize.fmin(pareto_ks, rvsmin*0.7, (rvs,))
est = stats.pareto.fit_fr(rvs, 1., frozen=[np.nan, locest, np.nan])
args = (est[0], locest[0], est[1])
print 'estimate'
print args
print 'kstest'
print stats.kstest(rvs,'pareto',args)
print 'estimation error', args - np.array(true)
4 голосов
/ 14 июля 2010

Будьте очень осторожны, подбирая законы о власти !! Многие законы о власти, о которых сообщают, фактически плохо соответствуют закону о власти.См. Clauset и др. для всех деталей (также на arxiv , если у вас нет доступа к журналу).У них есть сопутствующий веб-сайт к статье, который теперь ссылается на реализацию Python.Не знаю, использует ли он Scipy, потому что я использовал их реализацию R, когда в последний раз использовал его.

...