В этом примере показано, как аппроксимировать несколько объектов распределения вероятностей к одному и тому же набору выборочных данных и получить визуальное сравнение того, насколько хорошо каждое распределение соответствует данным.
Загрузите выборочные данные.
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, по одному для каждой страны, представленной в выборочных данных. Аналогично, массив ячеек Norm ByOrig
содержит пять нормальных объектов распределения и так далее. Каждый объект содержит свойства, которые содержат информацию о данных, распределении и параметрах. Область массива 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 модельный год. Это объясняет, почему гистограмма для объединенных миль США на галлон данных показывает два пика вместо одного.