Сравните несколько подгонок распределения

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

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

Шаг 4. Вычислите PDF для каждого распределения.

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

Шаг 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')

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

Шаг 6. Дальнейшая группа данные США к году.

Исследовать эти два режима показало на Шаге 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 вместо одного.

Смотрите также

| |

Похожие темы