exponenta event banner

Сравнение нескольких распределительных посадок

В этом примере показано, как подогнать несколько объектов распределения вероятности к одному и тому же набору данных выборки и получить визуальное сравнение того, насколько хорошо каждое распределение подходит к данным.

Шаг 1. Загрузить данные образца.

Загрузите образцы данных.

load carsmall

Эти данные содержат мили на галлон (MPG) измерения для различных марок и моделей автомобилей, сгруппированных по стране происхождения (Origin), модельный год (Model_Year) и другие характеристики транспортного средства.

Шаг 2. Создание категориального массива.

Преобразовать Origin в категориальный массив и удалить итальянский автомобиль из образца данных. Так как есть только один итальянский автомобиль, fitdist не может соответствовать дистрибутиву для этой группы, используя дистрибутив, отличный от дистрибутива ядра.

Origin = categorical(cellstr(Origin));
MPG2 = MPG(Origin~='Italy');
Origin2 = Origin(Origin~='Italy');
Origin2 = removecats(Origin2,'Italy');

Шаг 3. Подгонка нескольких распределений по группам.

Использовать 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 перечисляет страну происхождения для каждой группы в том же порядке, в котором объекты распределения хранятся в массивах ячеек.

Шаг 4. Вычислите pdf для каждого дистрибутива.

Извлеките четыре объекта распределения вероятностей для США и вычислите 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); 

Шаг 5. Распечатайте pdf для каждого распределения.

Постройте график 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')

Figure contains an axes. The axes with title MPG for Cars from USA contains 5 objects of type histogram, line. These objects represent Data, Weibull, Normal, Logistic, Kernel.

Наложение графиков pdf на гистограмму данных выборки обеспечивает визуальное сравнение того, насколько хорошо каждый тип распределения соответствует данным. Только непараметрическое распределение ядра KerUSA приближается к раскрытию двух режимов в исходных данных.

Шаг 6. Далее группировать данные по США по годам.

Для изучения двух режимов, описанных на шаге 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

Figure contains an axes. The axes with title MPG in USA Cars by Model Year contains 3 objects of type line. These objects represent 1970, 1976, 1982.

При дальнейшей группировке по модельному году графики pdf показывают два различных пика в MPG данные для автомобилей, изготовленных в США - один для 1970 модельного года и один для 1982 модельного года. Это объясняет, почему гистограмма для объединенных США миль на галлон данных показывает два пика вместо одного.

См. также

| |

Связанные темы