Этот пример показывает, как соответствовать нескольким объектам распределения вероятностей к тому же набору выборочных данных и получить визуальное сравнение того, как хорошо каждое распределение соответствует данным.
Загрузите выборочные данные.
load carsmall
Эти данные содержат мили на галлон (MPG
), измерения для различного делают и модели автомобилей, сгруппированных страной происхождения (Origin
), модельный год (Model_Year
) и другие характеристики автомобиля.
Преобразуйте Origin
в категориальный массив и удалите итальянский автомобиль из выборочных данных. С тех пор существует только один итальянский автомобиль, fitdist
не может соответствовать распределению к тому использованию группы кроме распределения ядра.
Origin = categorical(cellstr(Origin)); MPG2 = MPG(Origin~='Italy'); Origin2 = Origin(Origin~='Italy'); Origin2 = removecats(Origin2,'Italy');
Используйте fitdist
, чтобы соответствовать Weibull, нормальному, логистическому, и дистрибутивы ядра каждой группе страны происхождения в данных MPG
.
[WeiByOrig,Country] = fitdist(MPG2,'weibull','by',Origin2); [NormByOrig,Country] = fitdist(MPG2,'normal','by',Origin2); [LogByOrig,Country] = fitdist(MPG2,'logistic','by',Origin2); [KerByOrig,Country] = fitdist(MPG2,'kernel','by',Origin2);
WeiByOrig
WeiByOrig = 1x5 cell array
Columns 1 through 2
{1x1 prob.WeibullDistribution} {1x1 prob.WeibullDistribution}
Columns 3 through 4
{1x1 prob.WeibullDistribution} {1x1 prob.WeibullDistribution}
Column 5
{1x1 prob.WeibullDistribution}
Country
Country = 5x1 cell array
{'France' }
{'Germany'}
{'Japan' }
{'Sweden' }
{'USA' }
У каждой группы страны теперь есть четыре объекта распределения, сопоставленные с ним. Например, массив ячеек WeiByOrig
содержит пять объектов распределения Weibull, один для каждой страны, представленной в выборочных данных. Аналогично, массив ячеек NormByOrig
содержит пять объектов нормального распределения и так далее. Каждый объект содержит свойства, которые содержат информацию о данных, распределении и параметрах. Массив Country
перечисляет страну происхождения для каждой группы в том же порядке как объекты распределения, хранится в массивах ячеек.
Извлеките четыре объекта распределения вероятностей для США и вычислите PDF для каждого распределения. Как показано на Шаге 3, США находятся в положении 5 в каждом массиве ячеек.
WeiUSA = WeiByOrig{5}; NormUSA = NormByOrig{5}; LogUSA = LogByOrig{5}; KerUSA = KerByOrig{5}; x = 0:1:50; pdf_Wei = pdf(WeiUSA,x); pdf_Norm = pdf(NormUSA,x); pdf_Log = pdf(LogUSA,x); pdf_Ker = pdf(KerUSA,x);
Постройте PDF для каждой подгонки распределения к данным США, наложенным на гистограмму выборочных данных. Нормируйте гистограмму для более легкого отображения.
Создайте гистограмму выборочных данных США.
data = MPG(Origin2=='USA'); figure histogram(data,10,'Normalization','pdf','FaceColor',[1,0.8,0]);
Постройте PDF каждого подходящего распределения.
line(x,pdf_Wei,'LineStyle','-','Color','r') line(x,pdf_Norm,'LineStyle','-.','Color','b') line(x,pdf_Log,'LineStyle','--','Color','g') line(x,pdf_Ker,'LineStyle',':','Color','k') legend('Data','Weibull','Normal','Logistic','Kernel','Location','Best') title('MPG for Cars from USA') xlabel('MPG')
Наложение графиков PDF по гистограмме выборочных данных обеспечивает визуальное сравнение того, как хорошо каждый тип распределения соответствует данным. Только непараметрическое распределение ядра KerUSA
близко подходит к раскрытию этих двух режимов в исходных данных.
Исследовать эти два режима показало на Шаге 5, сгруппируйте данные MPG
и страной происхождения (Origin
) и модельный год (Model_Year
), и используйте fitdist
, чтобы соответствовать дистрибутивам ядра к каждой группе.
[KerByYearOrig,Names] = fitdist(MPG,'Kernel','By',{Origin Model_Year});
Каждой уникальной комбинации источника и модельный год теперь сопоставили объект распределения ядра с ним.
Names
Names = 14x1 cell array
{'France...' }
{'France...' }
{'Germany...'}
{'Germany...'}
{'Germany...'}
{'Italy...' }
{'Japan...' }
{'Japan...' }
{'Japan...' }
{'Sweden...' }
{'Sweden...' }
{'USA...' }
{'USA...' }
{'USA...' }
Постройте эти три распределения вероятностей в течение каждого модельного года США, которые находятся в положениях 12, 13, и 14 в массиве ячеек KerByYearOrig
.
figure hold on for i = 12 : 14 plot(x,pdf(KerByYearOrig{i},x)) end legend('1970','1976','1982') title('MPG in USA Cars by Model Year') xlabel('MPG') hold off
Когда далее сгруппированный модельным годом, графики PDF показывают два отличных peaks в данных MPG
для автомобилей, сделанных в США — один в течение модельного года 1970 и один в течение модельного года 1982. Это объясняет, почему гистограмма для объединенных миль США на данные о галлоне показывает два peaks вместо одного.