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)

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

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

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)

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

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

load hospital
x = hospital.Weight;

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

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

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

gl = 2x1 cell
    {'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

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

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

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

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

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

свернуть все

Входные данные, заданные как вектор-столбец. 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'Логистическое распределениеLoglogisticDistribution
'Lognormal'Логнормальное распределениеLognormalDistribution
'Nakagami'Распределение НакагамиNakagamiDistribution
'NegativeBinomial'Отрицательное биномиальное распределениеNegativeBinomialDistribution
'Normal'Нормальное распределениеNormalDistribution
'Poisson'Распределение ПуассонаPoissonDistribution
'Rayleigh'Распределение РелеяRayleighDistribution
'Rician'Распределение РайсаRicianDistribution
'Stable'Стабильное распределениеStableDistribution
'tLocationScale't распределения шкалы местоположенияtLocationScaleDistribution
'Weibull'Распределение ВейбулаWeibullDistribution

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

Для примера, если 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'.

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

Частота наблюдения, заданная как разделенная разделенными запятой парами, состоящая из '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 значения и соответствующие объекты распределения вероятностей, см. distname.

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

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

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

Алгоритмы

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

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

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

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

Приложение

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

Ссылки

[1] Джонсон, Н. Л., С. Коц и Н. Балакришнан. Непрерывные одномерные распределения. Том 1, Хобокен, Нью-Джерси: Wiley-Interscience, 1993.

[2] Джонсон, Н. Л., С. Коц и Н. Балакришнан. Непрерывные одномерные распределения. Том 2, Хобокен, Нью-Джерси: Wiley-Interscience, 1994.

[3] Боуман, А. У. и А. Аззалини. Примененные методы сглаживания для анализа данных. Нью-Йорк: Oxford University Press, 1997.

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

.
Введенный в R2009a