scipy.stats.levy_stable#
-
scipy.stats.levy_stable =
object> [источник]# Непрерывная случайная величина с устойчивым распределением Леви.
Как экземпляр
rv_continuousкласс,levy_stableобъект наследует от него коллекцию общих методов (см. ниже полный список), и дополняет их деталями, специфичными для этого конкретного распределения.Методы
rvs(alpha, beta, loc=0, scale=1, size=1, random_state=None)
Случайные величины.
pdf(x, alpha, beta, loc=0, scale=1)
Функция плотности вероятности.
logpdf(x, alpha, beta, loc=0, scale=1)
Логарифм функции плотности вероятности.
cdf(x, alpha, beta, loc=0, scale=1)
Интегральная функция распределения.
logcdf(x, alpha, beta, loc=0, scale=1)
Логарифм функции кумулятивного распределения.
sf(x, alpha, beta, loc=0, scale=1)
Функция выживания (также определяется как
1 - cdf, но sf иногда более точный).logsf(x, alpha, beta, loc=0, scale=1)
Логарифм функции выживания.
ppf(q, alpha, beta, loc=0, scale=1)
Процентная точка функции (обратная
cdf— процентили).isf(q, alpha, beta, loc=0, scale=1)
Обратная функция выживания (обратная к
sf).moment(order, alpha, beta, loc=0, scale=1)
Нецентральный момент указанного порядка.
stats(alpha, beta, loc=0, scale=1, moments='mv')
Среднее ('m'), дисперсия ('v'), асимметрия ('s') и/или эксцесс ('k').
entropy(alpha, beta, loc=0, scale=1)
(Дифференциальная) энтропия случайной величины.
fit(data)
Оценки параметров для общих данных. См. scipy.stats.rv_continuous.fit для подробной документации по ключевым аргументам.
expect(func, args=(alpha, beta), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)
Ожидаемое значение функции (одного аргумента) относительно распределения.
median(alpha, beta, loc=0, scale=1)
Медиана распределения.
mean(alpha, beta, loc=0, scale=1)
Среднее распределения.
var(alpha, beta, loc=0, scale=1)
Дисперсия распределения.
std(alpha, beta, loc=0, scale=1)
Стандартное отклонение распределения.
interval(confidence, alpha, beta, loc=0, scale=1)
Доверительный интервал с равными площадями вокруг медианы.
Примечания
Распределение для
levy_stableимеет характеристическую функцию:\[\varphi(t, \alpha, \beta, c, \mu) = e^{it\mu -|ct|^{\alpha}(1-i\beta\operatorname{sign}(t)\Phi(\alpha, t))}\]где поддерживаются две различные параметризации. Первая \(S_1\):
\[\begin{split}\Phi = \begin{cases} \tan \left({\frac {\pi \alpha }{2}}\right)&\alpha \neq 1\\ -{\frac {2}{\pi }}\log |t|&\alpha =1 \end{cases}\end{split}\]Второй \(S_0\):
\[\begin{split}\Phi = \begin{cases} -\tan \left({\frac {\pi \alpha }{2}}\right)(|ct|^{1-\alpha}-1) &\alpha \neq 1\\ -{\frac {2}{\pi }}\log |ct|&\alpha =1 \end{cases}\end{split}\]Функция плотности вероятности для
levy_stableравен:\[f(x) = \frac{1}{2\pi}\int_{-\infty}^\infty \varphi(t)e^{-ixt}\,dt\]где \(-\infty < t < \infty\). Этот интеграл не имеет известной замкнутой формы.
levy_stableобобщает несколько распределений. По возможности, их следует использовать вместо этого. В частности, когда параметры формы принимают значения в таблице ниже, следует использовать соответствующее эквивалентное распределение.Вычисление pdf использует кусочный интегральный подход Нолана с Золотаревым \(M\) параметризации по умолчанию. Также есть возможность использовать прямое численное интегрирование стандартной параметризации характеристической функции или вычислять с помощью БПФ характеристической функции.
Метод по умолчанию может быть изменён установкой переменной класса
levy_stable.pdf_default_methodодному из 'piecewise' для подхода Нолана, 'dni' для прямого численного интегрирования или 'fft-simpson' для подхода на основе FFT. Для обратной совместимости методы 'best' и 'zolotarev' эквивалентны 'piecewise', а метод 'quadrature' эквивалентен 'dni'.Параметризацию можно изменить, установив переменную класса
levy_stable.parameterizationлибо в ‘S0’, либо в ‘S1’. По умолчанию ‘S1’.Для повышения производительности кусочно-заданной и прямой численной интеграции можно указать
levy_stable.quad_eps(по умолчанию 1.2e-14). Это используется как абсолютная и относительная точность квадратуры для прямого численного интегрирования и как относительная точность квадратуры для кусочно-гладкого метода. Также можно указатьlevy_stable.piecewise_x_tol_near_zeta(по умолчанию 0.005) для определения того, насколько x близко к zeta, прежде чем оно будет считаться тем же, что и x [NO]. Точная проверка:abs(x0 - zeta) < piecewise_x_tol_near_zeta*alpha**(1/alpha). Также можно указатьlevy_stable.piecewise_alpha_tol_near_one(по умолчанию 0.005) для того, насколько близко alpha к 1, прежде чем считаться равной 1.Для повышения точности вычисления БПФ можно указать
levy_stable.pdf_fft_grid_spacing(по умолчанию 0.001) иpdf_fft_n_points_two_power(по умолчанию None, что означает вычисление значения, достаточно покрывающего входной диапазон).Дополнительный контроль над вычислением БПФ доступен через настройку
pdf_fft_interpolation_degree(по умолчанию 3) для порядка сплайна иpdf_fft_interpolation_levelдля определения количества точек для использования в формуле Ньютона-Котеса при аппроксимации характеристической функции (считается экспериментальным).Вычисление функции распределения использует кусочный интегральный подход Нолана с \(S_0\) параметризацию по умолчанию. Также есть возможность вычисления через интегрирование интерполированного сплайна pdf, рассчитанного методом БПФ. Настройки, влияющие на расчёт БПФ, такие же, как для расчёта pdf. Метод cdf по умолчанию можно изменить, установив
levy_stable.cdf_default_methodлибо 'piecewise', либо 'fft-simpson'. Для расчетов cdf метод Золотарева превосходит по точности, поэтому FFT по умолчанию отключен.Оценка подгонки использует метод квантильной оценки в [MC]. Оценка параметров методом максимального правдоподобия (MLE) в методе fit использует эту квантильную оценку изначально. Обратите внимание, что MLE не всегда сходится при использовании БПФ для вычислений PDF; это будет случаем, если alpha <= 1, где подход БПФ не даёт хороших приближений.
Любое ненулевое значение для атрибута
levy_stable.pdf_fft_min_points_thresholdустановитlevy_stable.pdf_default_methodна ‘fft-simpson’, если допустимый метод по умолчанию не установлен иначе.Предупреждение
Для вычислений плотности вероятности (pdf) расчет с помощью БПФ считается экспериментальным.
Для вычислений CDF метод FFT считается экспериментальным. Вместо этого используйте метод Золотарева (по умолчанию).
Плотность вероятности выше определена в «стандартизированной» форме. Для сдвига и/или масштабирования распределения используйте
locиscaleпараметры. Обычноlevy_stable.pdf(x, alpha, beta, loc, scale)тождественно эквивалентноlevy_stable.pdf(y, alpha, beta) / scaleсy = (x - loc) / scale, за исключениемS1параметризация, еслиalpha == 1. В этом случаеlevy_stable.pdf(x, alpha, beta, loc, scale)идентично эквивалентноlevy_stable.pdf(y, alpha, beta) / scaleсy = (x - loc - 2 * beta * scale * np.log(scale) / np.pi) / scale. См. [NO2] Определение 1.8 для дополнительной информации. Обратите внимание, что сдвиг местоположения распределения не делает его «нецентральным» распределением.Ссылки
[MC]McCulloch, J., 1986. Simple consistent estimators of stable distribution parameters. Communications in Statistics - Simulation and Computation 15, 11091136.
[WZ]Ван, Ли и Чжан, Цзи-Хун, 2008. Метод быстрого преобразования Фурье на основе правила Симпсона для вычисления плотностей устойчивого распределения.
[NO]Нолан, Дж., 1997. Численный расчёт устойчивых плотностей и функций распределения.
[NO2]Нолан, Дж., 2018. Устойчивые распределения: модели для данных с тяжелыми хвостами.
[HO]Hopcraft, K. I., Jakeman, E., Tanner, R. M. J., 1999. Lévy random walks with fluctuating step number and multiscale behavior.
Примеры
>>> import numpy as np >>> from scipy.stats import levy_stable >>> import matplotlib.pyplot as plt >>> fig, ax = plt.subplots(1, 1)
Получить поддержку:
>>> alpha, beta = 1.8, -0.5 >>> lb, ub = levy_stable.support(alpha, beta)
Вычислить первые четыре момента:
>>> mean, var, skew, kurt = levy_stable.stats(alpha, beta, moments='mvsk')
Отображение функции плотности вероятности (
pdf):>>> x = np.linspace(levy_stable.ppf(0.01, alpha, beta), ... levy_stable.ppf(0.99, alpha, beta), 100) >>> ax.plot(x, levy_stable.pdf(x, alpha, beta), ... 'r-', lw=5, alpha=0.6, label='levy_stable pdf')
Альтернативно, объект распределения может быть вызван (как функция) для фиксации параметров формы, местоположения и масштаба. Это возвращает «замороженный» объект RV с заданными фиксированными параметрами.
Зафиксировать распределение и отобразить зафиксированное
pdf:>>> rv = levy_stable(alpha, beta) >>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
Проверить точность
cdfиppf:>>> vals = levy_stable.ppf([0.001, 0.5, 0.999], alpha, beta) >>> np.allclose([0.001, 0.5, 0.999], levy_stable.cdf(vals, alpha, beta)) True
Генерировать случайные числа:
>>> r = levy_stable.rvs(alpha, beta, size=1000)
И сравните гистограмму:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2) >>> ax.set_xlim([x[0], x[-1]]) >>> ax.legend(loc='best', frameon=False) >>> plt.show()