fitdist

Подходящий объект распределения вероятностей к данным

Синтаксис

pd = fitdist(x,distname)
pd = fitdist(x,distname,Name,Value)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value)

Описание

пример

pd = fitdist(x,distname) создает объект распределения вероятностей путем подбора кривой распределению, заданному distname к данным в вектор-столбце x.

пример

pd = fitdist(x,distname,Name,Value) создает объект распределения вероятностей с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно указать на подвергнутые цензуре данные или задать параметры управления для итеративного алгоритма подбора.

пример

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar) создает объекты распределения вероятностей путем подбора кривой распределению, заданному distname к данным в x на основе группирующей переменной groupvar. Это возвращает массив ячеек подходящих объектов распределения вероятностей, pdca, массива ячеек меток группы, gn и массива ячеек уровней группирующей переменной, gl.

пример

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value) возвращает вышеупомянутые выходные аргументы с помощью дополнительных опций, заданных одним или несколькими аргументами пары "имя-значение". Например, можно указать на подвергнутые цензуре данные или задать параметры управления для итеративного алгоритма подбора.

Примеры

свернуть все

Загрузите выборочные данные. Создайте вектор, содержащий данные о весе пациентов.

load hospital
x = hospital.Weight;

Создайте объект нормального распределения путем подбора кривой ему к данным.

pd = fitdist(x,'Normal')
pd = 
  NormalDistribution

  Normal distribution
       mu =     154   [148.728, 159.272]
    sigma = 26.5714   [23.3299, 30.8674]

Интервалы рядом с оценками параметра составляют 95% доверительных интервалов для параметров распределения.

Постройте PDF распределения.

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y,'LineWidth',2)

Загрузите выборочные данные. Создайте вектор, содержащий данные о весе пациентов.

load hospital
x = hospital.Weight;

Создайте объект распределения ядра путем подбора кривой ему к данным. Используйте функцию ядра Епанечникова.

pd = fitdist(x,'Kernel','Kernel','epanechnikov')
pd = 
  KernelDistribution

    Kernel = epanechnikov
    Bandwidth = 14.3792
    Support = unbounded

Постройте PDF распределения.

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y)

Загрузите выборочные данные. Создайте вектор, содержащий данные о весе пациентов.

load hospital
x = hospital.Weight;

Создайте объекты нормального распределения путем подбора кривой им к данным, сгруппированным терпеливым полом.

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Normal','By',gender)
pdca = 1x2 cell array
    {1x1 prob.NormalDistribution}    {1x1 prob.NormalDistribution}

gn = 2x1 cell array
    {'Female'}
    {'Male'  }

gl = 2x1 cell array
    {'Female'}
    {'Male'  }

Массив ячеек pdca содержит два объекта распределения вероятностей, один для каждой гендерной группы. Массив ячеек gn содержит две метки группы. Массив ячеек gl содержит два уровня группы.

Просмотрите каждое распределение в массиве ячеек pdca, чтобы сравнить среднее значение, mu, и стандартное отклонение, sigma, сгруппированный терпеливым полом.

female = pdca{1}  % Distribution for females
female = 
  NormalDistribution

  Normal distribution
       mu = 130.472   [128.183, 132.76]
    sigma = 8.30339   [6.96947, 10.2736]

male = pdca{2}  % Distribution for males
male = 
  NormalDistribution

  Normal distribution
       mu = 180.532   [177.833, 183.231]
    sigma = 9.19322   [7.63933, 11.5466]

Вычислите PDF каждого распределения.

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

Постройте pdfs для визуального сравнения распределения веса полом.

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

Загрузите выборочные данные. Создайте вектор, содержащий данные о весе пациентов.

load hospital
x = hospital.Weight;

Создайте объекты распределения ядра путем подбора кривой им к данным, сгруппированным терпеливым полом. Используйте треугольную функцию ядра.

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Kernel','By',gender,'Kernel','triangle');

Просмотрите каждое распределение в массиве ячеек pdca, чтобы видеть дистрибутивы ядра для каждого пола.

female = pdca{1}  % Distribution for females
female = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 4.25894
    Support = unbounded

male = pdca{2}  % Distribution for males
male = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 5.08961
    Support = unbounded

Вычислите PDF каждого распределения.

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

Постройте pdfs для визуального сравнения распределения веса полом.

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

Входные параметры

свернуть все

Входные данные, заданные как вектор-столбец. fitdist игнорирует значения NaN в x. Кроме того, любые значения NaN в векторе цензурирования или векторе частоты заставляют fitdist игнорировать соответствующие значения в x.

Типы данных: double

Имя распределения, заданное как один из следующих векторов символов или скаляров строки. Распределение, заданное distname, определяет тип возвращенного объекта распределения вероятностей.

Имя распределенияОписаниеОбъект распределения
'Beta'Бета распределениеBetaDistribution
'Binomial'Биномиальное распределениеBinomialDistribution
'BirnbaumSaunders'Распределение Бирнбаума-СондерсаBirnbaumSaundersDistribution
'Burr'Подпилите распределениеBurrDistribution
'Exponential'Экспоненциальное распределениеExponentialDistribution
'ExtremeValue'Распределение ЭкстремумаExtremeValueDistribution
'Gamma'Гамма распределениеGammaDistribution
'GeneralizedExtremeValue'Обобщенное распределение ЭкстремумаGeneralizedExtremeValueDistribution
'GeneralizedPareto'Обобщенное распределение ПаретоGeneralizedParetoDistribution
'HalfNormal'Полунормальное распределениеHalfNormalDistribution
'InverseGaussian'Обратное Распределение ГауссаInverseGaussianDistribution
'Kernel'Распределение ядраKernelDistribution
'Logistic'Логистическое распределениеLogisticDistribution
'Loglogistic'Распределение LoglogisticLoglogisticDistribution
'Lognormal'Логарифмически нормальное распределениеLognormalDistribution
'Nakagami'Распределение NakagamiNakagamiDistribution
'NegativeBinomial'Отрицательное Биномиальное распределениеNegativeBinomialDistribution
'Normal'Нормальное распределениеNormalDistribution
'Poisson'Распределение ПуассонаPoissonDistribution
'Rayleigh'Распределение РелеяRayleighDistribution
'Rician'Распределение RicianRicianDistribution
'Stable'Стабильное распределениеStableDistribution
'tLocationScale'Распределение Шкалы Местоположения ttLocationScaleDistribution
'Weibull'Распределение WeibullWeibullDistribution

Группирующая переменная, заданная как категориальный массив, логический или числовой вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Каждое уникальное значение в группирующей переменной задает группу.

Например, если Gender является массивом ячеек из символьных векторов со значениями 'Male' и 'Female', можно использовать Gender в качестве группирующей переменной, чтобы соответствовать распределению к данным полом.

Больше чем одна группирующая переменная может использоваться путем определения массива ячеек группирующих переменных. Наблюдения помещаются в ту же группу, если у них есть общие ценности всех заданных группирующих переменных.

Например, если Smoker является логическим вектором со значениями 0 для некурящих и 1 для курильщиков, то, задавая массив ячеек {Gender,Smoker} делит наблюдения на четыре группы: Штекерный Курильщик, Штекерный Некурящий, Курильщица и Женщина - некурящая.

Пример: {Gender,Smoker}

Типы данных: categorical | logical | single | double | char | string | cell

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: fitdist(x,'Kernel','Kernel','triangle') соответствует объекту распределения ядра к данным в x с помощью треугольной функции ядра.

Логический флаг для подвергнутых цензуре данных, заданных как пара, разделенная запятой, состоящая из 'Censoring' и вектор логических значений, который одного размера как входной вектор x. Значением является 1, когда соответствующий элемент в x является подвергнутым цензуре правом наблюдением и 0, когда соответствующий элемент является точным наблюдением. Значением по умолчанию является вектор 0 s, указывая, что все наблюдения точны.

fitdist игнорирует любые значения NaN в этом векторе цензурирования. Кроме того, любые значения NaN в x или векторе частоты заставляют fitdist игнорировать соответствующие значения в векторе цензурирования.

Этот аргумент допустим, только если distname является 'BirnbaumSaunders', 'Burr', 'Exponential', 'ExtremeValue', 'Gamma', 'InverseGaussian', 'Kernel', 'Logistic', 'Loglogistic', 'Lognormal', 'Nakagami', 'Normal', 'Rician', 'tLocationScale' или 'Weibull'.

Типы данных: логический

Частота наблюдения, заданная как пара, разделенная запятой, состоящая из 'Frequency' и вектор неотрицательных целочисленных значений, который одного размера как входной вектор x. Каждый элемент вектора частоты задает частоты для соответствующих элементов в x. Значением по умолчанию является вектор 1 s, указывая, что каждое значение в x только появляется однажды.

fitdist игнорирует любые значения NaN в этом векторе частоты. Кроме того, любые значения NaN в x или векторе цензурирования заставляют fitdist игнорировать соответствующие значения в векторе частоты.

Типы данных: single | double

Управляйте параметрами для итеративного алгоритма подбора, заданного как пара, разделенная запятой, состоящая из 'Options' и структуры, вы создаете использование statset.

Типы данных: struct

Количество испытаний за биномиальное распределение, заданное как пара, разделенная запятой, состоящая из 'NTrials' и положительного целочисленного значения. Необходимо задать distname как 'Binomial', чтобы использовать эту опцию.

Типы данных: single | double

Пороговый параметр для обобщенного распределения Парето, заданного как пара, разделенная запятой, состоящая из 'Theta' и скалярного значения. Необходимо задать distname как 'GeneralizedPareto', чтобы использовать эту опцию.

Типы данных: single | double

Параметр положения для полунормального распределения, заданного как пара, разделенная запятой, состоящая из 'mu' и скалярного значения. Необходимо задать distname как 'HalfNormal', чтобы использовать эту опцию.

Типы данных: single | double

Ядро более сглаженный тип, заданный как пара, разделенная запятой, состоящая из 'Kernel' и одно из следующего:

  • 'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

Необходимо задать distname как 'Kernel', чтобы использовать эту опцию.

Поддержка плотности ядра, заданная как пара, разделенная запятой, состоящая из 'Support' и 'unbounded', 'positive' или двухэлементного вектора.

'unbounded'Плотность может расширить по целой действительной строке.
'positive'Плотность ограничивается положительными значениями.

Также можно задать двухэлементный вектор, дающий конечные нижние и верхние пределы для поддержки плотности.

Необходимо задать distname как 'Kernel', чтобы использовать эту опцию.

Типы данных: single | double | char | string

Пропускная способность окна сглаживания ядра, заданного как пара, разделенная запятой, состоящая из 'Width' и скалярного значения. Значение по умолчанию, используемое fitdist, оптимально для оценки нормальной плотности, но вы можете хотеть выбрать меньшее значение, чтобы показать функции, такие как несколько режимов. Необходимо задать distname как 'Kernel', чтобы использовать эту опцию.

Типы данных: single | double

Выходные аргументы

свернуть все

Распределение вероятностей, возвращенное как объект распределения вероятностей. Распределение, заданное distname, определяет тип класса возвращенного объекта распределения вероятностей.

Объекты распределения вероятностей типа заданы distname, возвращенным как массив ячеек.

Метки группы, возвращенные как массив ячеек из символьных векторов.

Уровни группирующей переменной, возвращенные как массив ячеек из символьных векторов, содержащий один столбец для каждой группирующей переменной.

Алгоритмы

Функция fitdist соответствует большинству дистрибутивов с помощью оценки наибольшего правдоподобия. Двумя исключениями являются нормальные и логарифмически нормальные дистрибутивы с не прошедшими цензуру данными.

  • Для не прошедшего цензуру нормального распределения ориентировочная стоимость параметра сигмы является квадратным корнем из объективной оценки отклонения.

  • Для не прошедшего цензуру логарифмически нормального распределения ориентировочная стоимость параметра сигмы является квадратным корнем из объективной оценки отклонения журнала данных.

Альтернативная функциональность

Приложение

Приложение Distribution Fitter открывает графический интерфейс пользователя для вас, чтобы импортировать данные из рабочей области и в интерактивном режиме соответствовать распределению вероятностей к тем данным. Можно затем сохранить распределение в рабочую область как объект распределения вероятностей. Откройте приложение Distribution Fitter с помощью distributionFitter или нажмите Distribution Fitter на вкладке Apps.

Ссылки

[1] Джонсон, N. L. С. Коц и Н. Бэлэкришнэн. Непрерывные одномерные распределения. Издание 1, Хобокен, NJ: Wiley-межнаука, 1993.

[2] Джонсон, N. L. С. Коц и Н. Бэлэкришнэн. Непрерывные одномерные распределения. Издание 2, Хобокен, NJ: Wiley-межнаука, 1994.

[3] Лучник, A. W. и А. Аццалини. Прикладные методы сглаживания для анализа данных. Нью-Йорк: Издательство Оксфордского университета, 1997.

Представленный в R2009a