Распределение ядра - непараметрическое представление функции плотности вероятности (pdf) случайной величины. Распределение ядра можно использовать в тех случаях, когда параметрическое распределение не может правильно описать данные или когда необходимо избежать предположений о распределении данных. Распределение ядра определяется функцией сглаживания и значением полосы пропускания, которые управляют сглаживанием результирующей кривой плотности.
Оценщиком плотности ядра является оценочный pdf случайной величины. Для любых действительных значений x формула оценки плотности ядра задается
xih),
где x1, x2,..., xn - случайные выборки из неизвестного распределения, n - размер выборки, (·) - функция сглаживания ядра, h - полоса пропускания.
Функция сглаживания ядра определяет форму кривой, используемой для создания pdf. Подобно гистограмме, распределение ядра строит функцию для представления распределения вероятности с использованием данных выборки. Но в отличие от гистограммы, которая помещает значения в дискретные ячейки, распределение ядра суммирует функции сглаживания компонентов для каждого значения данных, чтобы получить гладкую непрерывную кривую вероятности. На следующих графиках показано визуальное сравнение гистограммы и распределения ядра, сгенерированного на основе одних и тех же данных выборки.
Гистограмма представляет распределение вероятности путем установления ячеек и размещения каждого значения данных в соответствующем ячейке.
SixMPG = [13;15;23;29;32;34]; figure histogram(SixMPG)

Из-за такого подхода к подсчету ячеек гистограмма создает дискретную функцию плотности вероятности. Это может быть непригодным для определенных приложений, таких как генерация случайных чисел из подобранного распределения.
Альтернативно, распределение ядра строит pdf, создавая индивидуальную кривую плотности вероятности для каждого значения данных, затем суммируя гладкие кривые. Этот подход создает одну плавную непрерывную функцию плотности вероятности для набора данных.
figure pdSix = fitdist(SixMPG,'Kernel','BandWidth',4); x = 0:.1:45; ySix = pdf(pdSix,x); plot(x,ySix,'k-','LineWidth',2) % Plot each individual pdf and scale its appearance on the plot hold on for i=1:6 pd = makedist('Normal','mu',SixMPG(i),'sigma',4); y = pdf(pd,x); y = y/6; plot(x,y,'b:') end hold off

Меньшие пунктирные кривые - это распределения вероятностей для каждого значения в данных выборки, масштабированные в соответствии с графиком. Большая сплошная кривая является общим распределением ядра SixMPG данные. Функция сглаживания ядра относится к форме тех меньших кривых компонентов, которые имеют нормальное распределение в этом примере.
Для функции сглаживания ядра можно выбрать один из нескольких вариантов. На этом графике показаны формы доступных функций сглаживания.
% Set plot specifications hname = {'normal' 'epanechnikov' 'box' 'triangle'}; colors = {'r' 'b' 'g' 'm'}; lines = {'-','-.','--',':'}; % Generate a sample of each kernel smoothing function and plot data = [0]; figure for j=1:4 pd = fitdist(data,'kernel','Kernel',hname{j}); x = -3:.1:3; y = pdf(pd,x); plot(x,y,'Color',colors{j},'LineStyle',lines{j}) hold on end legend(hname) hold off

Чтобы понять влияние различных функций сглаживания ядра на форму результирующей оценки pdf, сравните графики данных о пробеге (MPG) от carbig.mat используя каждую доступную функцию ядра.
load carbig % Set plot specifications hname = {'normal' 'epanechnikov' 'box' 'triangle'}; colors = {'r' 'b' 'g' 'm'}; lines = {'-','-.','--',':'}; % Generate kernel distribution objects and plot figure for j=1:4 pd = fitdist(MPG,'kernel','Kernel',hname{j}); x = -10:1:60; y = pdf(pd,x); plot(x,y,'Color',colors{j},'LineStyle',lines{j}) hold on end legend(hname) hold off

Каждая кривая плотности использует одни и те же входные данные, но применяет другую функцию сглаживания ядра для создания pdf. Оценки плотности примерно сопоставимы, но форма каждой кривой незначительно изменяется. Например, ядро коробки создает менее гладкую кривую плотности, чем остальные.
Выбор значения полосы пропускания управляет гладкостью результирующей кривой плотности вероятности. На этом графике показана оценка плотности для MPG данные, используя обычную функцию сглаживания ядра с тремя различными полосами пропускания.
% Create kernel distribution objects load carbig pd1 = fitdist(MPG,'kernel'); pd2 = fitdist(MPG,'kernel','BandWidth',1); pd3 = fitdist(MPG,'kernel','BandWidth',5); % Compute each pdf x = -10:1:60; y1 = pdf(pd1,x); y2 = pdf(pd2,x); y3 = pdf(pd3,x); % Plot each pdf plot(x,y1,'Color','r','LineStyle','-') hold on plot(x,y2,'Color','k','LineStyle',':') plot(x,y3,'Color','b','LineStyle','--') legend({'BandWidth = Default','BandWidth = 1','BandWidth = 5'}) hold off

Полоса пропускания по умолчанию, теоретически оптимальная для оценки плотностей для нормального распределения [1], создает достаточно гладкую кривую. Указание меньшей полосы пропускания создает очень грубую кривую, но показывает, что в данных могут быть два основных пика. Определение большей полосы пропускания создает кривую, почти идентичную функции ядра, и является настолько гладкой, что скрывает потенциально важные характеристики данных.
[1] Боуман, А. У. и А. Аззалини. Применяемые методы сглаживания для анализа данных. Нью-Йорк: Oxford University Press Inc., 1997.
KernelDistribution | ksdensity