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

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

Шаг 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 = 1x5 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 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 вместо одного.

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

| |

Похожие темы