Сравнение нескольких моделей распределения

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

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

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 графиков показать два различных peaks в MPG данные по автомобилям производства США - по одному за 1970 модельный год и по одному за 1982 модельный год. Это объясняет, почему гистограмма для объединенных миль США на галлон данных показывает два пика вместо одного.

См. также

| |

Похожие темы