A ядерного распределения является непараметрическим представлением функции плотности вероятностей (pdf) случайной переменной. Можно использовать ядерное распределение, когда параметрическое распределение не может правильно описать данные, или когда вы хотите избежать допущений о распределении данных. Ядерное распределение определяется функцией сглаживания и значением полосы пропускания, которые управляют плавностью полученной кривой плотности.
Оценка плотности ядра является оценочным PDF случайной переменной. Для любых реальных значений x формула оценки плотности ядра задается как
где 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], создает достаточно гладкую кривую. Установка меньшей полосы пропускания создает очень грубую кривую, но показывает, что в данных может быть два основных peaks. Установка большей полосы пропускания создает кривую, почти идентичную функции ядра, и настолько плавна, что затеняет потенциально важные характеристики данных.
[1] Боуман, А. У. и А. Аззалини. Примененные методы сглаживания для анализа данных. Нью-Йорк: Oxford University Press Inc., 1997.
KernelDistribution
| ksdensity