В этом примере показано, как подогнать несколько объектов распределения вероятности к одному и тому же набору данных выборки и получить визуальное сравнение того, насколько хорошо каждое распределение подходит к данным.
Загрузите образцы данных.
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 содержит пять объектов распределения Вейбулла, по одному для каждой страны, представленной в выборке данных. Аналогично, массив ячеек NormByOrig содержит пять обычных объектов распределения и т.д. Каждый объект содержит свойства, содержащие информацию о данных, распределении и параметрах. Множество Country перечисляет страну происхождения для каждой группы в том же порядке, в котором объекты распределения хранятся в массивах ячеек.
Извлеките четыре объекта распределения вероятностей для США и вычислите pdf для каждого распределения. Как показано на этапе 3, USA находится в положении 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 показывают два различных пика в MPG данные для автомобилей, изготовленных в США - один для 1970 модельного года и один для 1982 модельного года. Это объясняет, почему гистограмма для объединенных США миль на галлон данных показывает два пика вместо одного.