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

Примеры

свернуть все

Соответствуйте нормальному распределению к выборочным данным и исследуйте подгонку при помощи гистограммы и графика квантиля квантиля.

Загрузите терпеливые веса из файла данных patients.mat.

load patients
x = Weight;

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

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

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

Отображение объекта распределения включает оценки параметра для среднего значения (mu) и стандартное отклонение (sigma), и 95% доверительных интервалов для параметров.

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

methods(pd)
Methods for class prob.NormalDistribution:

cdf        iqr        negloglik  proflik    truncate   
gather     mean       paramci    random     var        
icdf       median     pdf        std        

Например, получите 95% доверительных интервалов при помощи paramci функция.

ci95 = paramci(pd)
ci95 = 2×2

  148.7277   23.3299
  159.2723   30.8674

Задайте уровень значения (Alpha) получить доверительные интервалы с различным доверительным уровнем. Вычислите 99% доверительных интервалов.

ci99 = paramci(pd,'Alpha',.01)
ci99 = 2×2

  147.0213   22.4257
  160.9787   32.4182

Оцените и постройте значения PDF распределения.

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

Figure contains an axes object. The axes object contains an object of type line.

Создайте гистограмму с подгонкой нормального распределения при помощи histfit функция. histfit использование fitdist соответствовать распределению к данным.

histfit(x)

Figure contains an axes object. The axes object contains 2 objects of type bar, line.

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

Используйте qqplot создать график квантиля квантиля квантилей выборочных данных x по сравнению с теоретическими значениями квантиля подходящего распределения.

qqplot(x,pd)

Figure contains an axes object. The axes object with title QQ Plot of Sample Data versus Distribution contains 3 objects of type line.

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

Загрузите терпеливые веса из файла данных patients.mat.

load patients
x = 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)

Figure contains an axes object. The axes object contains an object of type line.

Загрузите терпеливые веса и полы из файла данных patients.mat.

load patients
x = Weight;

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

[pdca,gn,gl] = fitdist(x,'Normal','By',Gender)
pdca=1×2 cell array
    {1x1 prob.NormalDistribution}    {1x1 prob.NormalDistribution}

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

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

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

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

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

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

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

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

Вычислите 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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Male, Female.

Загрузите терпеливые веса и полы из файла данных patients.mat.

load patients
x = Weight;

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

[pdca,gn,gl] = fitdist(x,'Kernel','By',Gender,'Kernel','triangle');

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

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

    Kernel = triangle
    Bandwidth = 5.08961
    Support = unbounded

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

    Kernel = triangle
    Bandwidth = 4.25894
    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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Male, Female.

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

свернуть все

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

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

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

Имя распределенияОписаниеОбъект распределения
'Beta'Бета распределениеBetaDistribution
'Binomial'Биномиальное распределениеBinomialDistribution
'BirnbaumSaunders'Распределение Бирнбаума-СондерсаBirnbaumSaundersDistribution
'Burr'Подпилите распределениеBurrDistribution
'Exponential'Экспоненциальное распределениеExponentialDistribution
'Extreme Value' или 'ev'Распределение ЭкстремумаExtremeValueDistribution
'Gamma'Гамма распределениеGammaDistribution
'Generalized Extreme Value' или 'gev'Обобщенное распределение ЭкстремумаGeneralizedExtremeValueDistribution
'Generalized Pareto' или 'gp'Обобщенное распределение ПаретоGeneralizedParetoDistribution
'Half Normal' или 'hn'Полунормальное распределениеHalfNormalDistribution
'InverseGaussian'Обратное Распределение ГауссаInverseGaussianDistribution
'Kernel'Ядерное распределениеKernelDistribution
'Logistic'Логистическое распределениеLogisticDistribution
'Loglogistic'Распределение LoglogisticLoglogisticDistribution
'Lognormal'Логарифмически нормальное распределениеLognormalDistribution
'Nakagami'Распределение NakagamiNakagamiDistribution
'Negative Binomial' или 'nbin'Отрицательное Биномиальное распределениеNegativeBinomialDistribution
'Normal'Нормальное распределениеNormalDistribution
'Poisson'Распределение ПуассонаPoissonDistribution
'Rayleigh'Распределение РелеяRayleighDistribution
'Rician'Распределение RicianRicianDistribution
'Stable'Устойчивое распределениеStableDistribution
'tLocationScale'Распределение Шкалы Местоположения ttLocationScaleDistribution
'Weibull' или 'wbl'Распределение WeibullWeibullDistribution

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

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

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

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

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

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

Аргументы name-value

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

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

Логический флаг для подвергнутых цензуре данных в виде вектора из логических значений, который одного размера с входным вектором 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'.

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

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

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

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

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

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

Количество испытаний за биномиальное распределение в виде положительного целочисленного значения.

Этот аргумент допустим только когда distname 'Binomial' (биномиальное распределение).

Пример: 'Ntrials',10

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

Местоположение (порог) параметр для обобщенного распределения Парето в виде скаляра.

Этот аргумент допустим только когда distname 'Generalized Pareto' (обобщенное распределение Парето).

Значение по умолчанию 0 когда выборочные данные x включает только неотрицательные значения. Необходимо задать theta если x включает отрицательные величины.

Пример: 'theta',1

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

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

Этот аргумент допустим только когда distname 'Half Normal' (полунормальное распределение).

Значение по умолчанию 0 когда выборочные данные x включает только неотрицательные значения. Необходимо задать mu если x включает отрицательные величины.

Пример: 'mu',1

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

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

  • 'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

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

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

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

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

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

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

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

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

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

свернуть все

Вероятностное распределение, возвращенное как объект вероятностного распределения. Распределение задано distname определяет тип класса возвращенного объекта вероятностного распределения. Для списка distname значения и соответствующие объекты вероятностного распределения, смотрите distname.

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

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

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

Алгоритмы

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

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

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

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

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

  • Чтобы соответствовать распределению к лево-подвергнутым цензуре, дважды подвергнутым цензуре, или подвергнутым цензуре интервалом данным, использовать mle. Можно найти оценки наибольшего правдоподобия при помощи mle функция, и создает объект вероятностного распределения при помощи makedist функция. Для примера смотрите, Находят MLEs для Дважды подвергнутых цензуре Данных.

Ссылки

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

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

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

Расширенные возможности

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