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, levy_l, cauchy, norm

Примечания

Распределение для 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 обобщает несколько распределений. По возможности, их следует использовать вместо этого. В частности, когда параметры формы принимают значения в таблице ниже, следует использовать соответствующее эквивалентное распределение.

alpha

beta

Эквивалентно

1/2

-1

levy_l

1/2

1

levy

1

0

cauchy

2

любой

normscale=sqrt(2))

Вычисление 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()
../../_images/scipy-stats-levy_stable-1.png