scipy.stats.

probplot#

scipy.stats.probplot(x, sparams=(), dist=: ограничение для обеспечения, что они лежат между, fit=True, plot=None, rvalue=False)[источник]#

Вычислить квантили для вероятностного графика и, опционально, показать график.

Создает вероятностный график выборочных данных против квантилей указанного теоретического распределения (по умолчанию нормального распределения). probplot опционально вычисляет линию наилучшего соответствия для данных и строит результаты с использованием Matplotlib или заданной функции построения.

Параметры:
xarray_like

Данные выборки/ответа, из которых probplot создаёт график.

sparamsкортеж, необязательный

Параметры формы, специфичные для распределения (параметры формы плюс параметры положения и масштаба).

diststr или экземпляр stats.distributions, опционально

Название распределения или функции распределения. По умолчанию 'norm' для нормальной вероятностной диаграммы. Объекты, которые достаточно похожи на экземпляр stats.distributions (т.е. имеют ppf метод) также принимаются.

fitbool, необязательно

Подогнать линию регрессии методом наименьших квадратов (наилучшего соответствия) к выборочным данным, если True (по умолчанию).

plotобъект, опционально

Если задано, строит квантили. Если задано и fit если True, также строит график аппроксимации методом наименьших квадратов. plot является объектом, который должен иметь методы "plot" и "text". matplotlib.pyplot модуль или объект Matplotlib Axes можно использовать, или пользовательский объект с теми же методами. По умолчанию None, что означает, что график не создается.

rvaluebool, необязательно

Если plot предоставлен и fit равно True, установка rvalue в True включает коэффициент детерминации на графике. По умолчанию False.

Возвращает:
(osm, osr)кортеж ndarrays

Кортеж теоретических квантилей (osm, или медианы порядковых статистик) и упорядоченных ответов (osr). osr является просто отсортированным входом x. Подробности о том, как osm рассчитывается, см. раздел Примечания.

(slope, intercept, r)кортеж из чисел с плавающей точкой, опционально

Кортеж, содержащий результат подгонки методом наименьших квадратов, если она выполняется с помощью probplot. r является квадратным корнем коэффициента детерминации. Если fit=False и plot=None, этот кортеж не возвращается.

Примечания

Даже если plot указан, рисунок не отображается и не сохраняется probplot; plt.show() или plt.savefig('figname.png') должен использоваться после вызова probplot.

probplot генерирует вероятностный график, который не следует путать с Q-Q или P-P графиком. Statsmodels имеет более обширную функциональность этого типа, см. statsmodels.api.ProbPlot.

Формула, используемая для теоретических квантилей (горизонтальная ось графика вероятностей), — это оценка Филибена:

quantiles = dist.ppf(val), for

        0.5**(1/n),                  for i = n
  val = (i - 0.3175) / (n + 0.365),  for i = 2, ..., n-1
        1 - 0.5**(1/n),              for i = 1

где i указывает i-е упорядоченное значение и n является общим количеством значений.

Примеры

>>> import numpy as np
>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> nsample = 100
>>> rng = np.random.default_rng()

Распределение t с малым числом степеней свободы:

>>> ax1 = plt.subplot(221)
>>> x = stats.t.rvs(3, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Распределение t с большим числом степеней свободы:

>>> ax2 = plt.subplot(222)
>>> x = stats.t.rvs(25, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Смесь двух нормальных распределений с вещанием:

>>> ax3 = plt.subplot(223)
>>> x = stats.norm.rvs(loc=[0,5], scale=[1,1.5],
...                    size=(nsample//2,2), random_state=rng).ravel()
>>> res = stats.probplot(x, plot=plt)

Стандартное нормальное распределение:

>>> ax4 = plt.subplot(224)
>>> x = stats.norm.rvs(loc=0, scale=1, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Создать новую фигуру с распределением loggamma, используя dist и sparams ключевые слова:

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> x = stats.loggamma.rvs(c=2.5, size=500, random_state=rng)
>>> res = stats.probplot(x, dist=stats.loggamma, sparams=(2.5,), plot=ax)
>>> ax.set_title("Probplot for loggamma dist with shape parameter 2.5")

Показать результаты с помощью Matplotlib:

>>> plt.show()
../../_images/scipy-stats-probplot-1_00.png
../../_images/scipy-stats-probplot-1_01.png