Реализация стабильного распределения Леви в Scipy в основном использует метод Нолана, который разбивает пространство параметров (альфа, бета) на несколько сегментов, некоторые из которых требуют хитрых интегралов для оценки.
Сципи оценивает параметры, используя MLE, и это можетбыть очень медленным из-за этих же интегралов.Существует экспериментальная поддержка FFT для оценки стабильных PDF-файлов, надеюсь, эта функция значительно улучшится с этим PR , отмеченным вехой в 1,3.Однако, кажется, что метод fit () все еще довольно медленный, даже при использовании FFT.
Существует более быстрая квантильная оценка (McCulloch), которая используется в качестве первого предположения для параметров распределения (при оценке с использованием fit ()).Это можно вызвать напрямую с помощью _fitstart ().
Тем не менее кажется, что параметризация, используемая для генерации случайных выборок Сципи (из rvs ()), отличается от той, которая используется для генерации pdfs / cdfs.Что-то, на что я надеюсь взглянуть в будущем.
До тех пор (как подсказывает @Ulrich в своем ответе) вы можете либо использовать pylevy, либо использовать _fitstart () для оценки параметров и впоследствии преобразовать параметризацию.
from scipy.stats import levy_stable
import numpy as np
points = 1000000
jennys_constant = 8675309
alpha, beta = 1.8, -0.5
draw = levy_stable.rvs(alpha, beta, size=points, random_state=jennys_constant)
# use scipy's quantile estimator to estimate the parameters and convert to S parameterization
pconv = lambda alpha, beta, mu, sigma: (alpha, beta, mu - sigma * beta * np.tan(np.pi * alpha / 2.0), sigma)
pconv(*levy_stable._fitstart(draw))
>>> (1.7990380668349146, -0.5661063359664303,
-0.012873575589969821, 0.998276003705684)
Надеюсь, чтопомогает.