exponenta event banner

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'Распределение RicianRicianDistribution
'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