В этом примере показано, как соответствовать нескольким объектам вероятностного распределения к тому же набору выборочных данных и получить визуальное сравнение того, как хорошо каждое распределение соответствует данным.
Загрузите выборочные данные.
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=1×5 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
{'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
{'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 вместо одного.