fitdist

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

Описание

пример

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=1×2 cell
    {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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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