exponenta event banner

mvksdensity

Оценка функции сглаживания ядра для многомерных данных

Описание

пример

f = mvksdensity(x,pts,'Bandwidth',bw) вычисляет оценку плотности вероятности данных выборки в матрице n-by-d x, оценивается в точках в pts использование требуемого значения аргумента пара имя-значение bw для значения полосы пропускания. Оценка основана на функции гауссова ядра продукта.

Для одномерных или двухмерных данных используйте ksdensity вместо этого.

пример

f = mvksdensity(x,pts,'Bandwidth',bw,Name,Value) возвращает любой из предыдущих выходных аргументов, используя дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Например, можно определить тип функции, mvksdensity оценивает, например, плотность вероятности, кумулятивную вероятность или функцию выжившего. Также можно назначить веса входным значениям.

Примеры

свернуть все

Загрузите данные цемента Hald.

load hald

Данные измеряют теплоту отверждения для 13 различных составов цемента. Матрица предиктора ingredients содержит процентную композицию для каждого из четырех компонентов цемента. Матрица ответа heat содержит тепло отверждения (в кал\г) через 180 дней.

Оценка плотности ядра для первых трех наблюдений в ingredients.

xi = ingredients(1:3,:);
f = mvksdensity(ingredients,xi,'Bandwidth',0.8);

Загрузите данные цемента Hald.

load hald

Данные измеряют теплоту отверждения для 13 различных составов цемента. Матрица предиктора ingredients содержит процентную композицию для каждого из четырех компонентов цемента. Матрица ответа heat содержит тепло отверждения (в кал/г) через 180 дней.

Создайте массив точек для оценки плотности. Сначала определите диапазон и интервал для каждой переменной, используя одинаковое количество точек в каждом измерении.

gridx1 = 0:2:22;
gridx2 = 20:5:80;
gridx3 = 0:2:24;
gridx4 = 5:5:65;

Далее используйте ndgrid для создания полной сетки точек с использованием определенного диапазона и интервала.

[x1,x2,x3,x4] = ndgrid(gridx1,gridx2,gridx3,gridx4);

Наконец, выполните преобразование и конкатенацию для создания массива, содержащего точки для оценки плотности. Этот массив содержит по одному столбцу для каждой переменной.

x1 = x1(:,:)';
x2 = x2(:,:)';
x3 = x3(:,:)';
x4 = x4(:,:)';
xi = [x1(:) x2(:) x3(:) x4(:)];

Оцените плотность.

f = mvksdensity(ingredients,xi,...
	'Bandwidth',[4.0579 10.7345 4.4185 11.5466],...
	'Kernel','normpdf');

Просмотр размера xi и f подтвердить, что mvksdensity вычисляет плотность в каждой точке в xi.

size_xi = size(xi)
size_xi = 1×2

       26364           4

size_f = size(f)
size_f = 1×2

       26364           1

Входные аргументы

свернуть все

Образец данных, для которых mvksdensity возвращает оценку плотности вероятности, заданную как матрица n-на-d числовых значений. n - количество точек данных (строк) в x, и d - количество размеров (столбцов).

Типы данных: single | double

Точки, в которых оценивается оценка плотности вероятности f, указанный как матрица с тем же количеством столбцов, что и x. Возвращенная оценка f и pts имеют одинаковое количество строк.

Типы данных: single | double

Значение полосы пропускания окна сглаживания ядра, указанное как скалярное значение или вектор d-элемента. d - количество измерений (столбцов) в данных образца; x. Если bw является скалярным значением, оно применяется ко всем измерениям.

При указании 'BoundaryCorrection' как 'log'(по умолчанию) и 'Support' как либо 'positive' или двухстрочная матрица, mvksdensity преобразует ограниченные данные в неограниченные с помощью преобразования журнала. Значение bw находится в масштабе преобразованных значений.

 Правило Сильвермана для полосы пропускания

bi = starti {4 (d + 2) n} 1 (d + 4), i = 1,2,..., d,

где d - количество размеров, n - количество наблюдений, и σi - стандартное отклонение ith варьируемой величины [4].

Пример: 'Bandwidth',0.8

Типы данных: single | double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Kernel','triangle','Function,'cdf' указывает, что mvksdensity оценивает cdf данных выборки, используя функцию ядра треугольника.

Метод коррекции границы, указанный как разделенная запятыми пара, состоящая из 'BoundaryCorrection' и либо 'log' или 'reflection'.

СтоимостьОписание
'log'

mvksdensity преобразует ограниченные данные в неограниченные с помощью одного из следующих преобразований. Затем он преобразуется обратно в исходную ограниченную шкалу после оценки плотности.

  • При указании 'Support','positive', то mvksdensity применяется log(xj) для каждого размера, где xj - jтретий столбец входного аргумента x.

  • При указании 'Support' в виде двухстрочной матрицы, состоящей из нижнего и верхнего пределов для каждого измерения, mvksdensity применяется log((xj-Lj )/( Uj-xj)) для каждого размера, где Lj и Uj - нижний и верхний пределы j-е измерение, соответственно.

Значение bw находится в масштабе преобразованных значений.

'reflection'

mvksdensity увеличивает ограниченные данные путем добавления отраженных данных вблизи границ, затем возвращает оценки, соответствующие исходной поддержке. Дополнительные сведения см. в разделе Метод отражения.

mvksdensity применяет коррекцию границ только при указании 'Support' как значение, отличное от 'unbounded'.

Пример: 'BoundaryCorrection','reflection'

Функция для оценки, указанная как разделенная запятыми пара, состоящая из 'Function' и одно из следующих.

СтоимостьОписание
'pdf'Функция плотности вероятности
'cdf'Кумулятивная функция распределения
'survivor'Функция выжившего

Пример: 'Function','cdf'

Тип более гладкого ядра, указанный как разделенная запятыми пара, состоящая из 'Kernel' и одно из следующих.

СтоимостьОписание
'normal' Нормальное (гауссово) ядро
'box'Ядро коробки
'triangle'Треугольное ядро
'epanechnikov'Ядро Епанечникова

Можно также указать функцию ядра, которая является пользовательской или встроенной функцией. Укажите функцию как дескриптор функции (например, @myfunction или @normpdf) или в виде вектора символа или скаляра строки (например, 'myfunction' или 'normpdf'). Программа вызывает указанную функцию с одним аргументом, который является массивом расстояний между значениями данных и местоположениями, где вычисляется плотность, нормируемая полосой пропускания в этом измерении. Функция должна возвращать массив того же размера, содержащий соответствующие значения функции ядра.

mvksdensity применяет одно и то же ядро к каждому измерению.

Пример: 'Kernel','box'

Поддержка плотности, определяемой как разделенная запятыми пара, состоящая из 'support' и одно из следующих.

СтоимостьОписание
'unbounded'Позволить плотности простираться по всей реальной линии
'positive'Ограничить плотность положительными значениями
Матрица 2 на dЗадайте конечную нижнюю и верхнюю границы для опоры плотности. Первая строка содержит нижние пределы, а вторая строка содержит верхние пределы. Каждый столбец содержит пределы для одного измерения x.

'Support' также может быть комбинацией положительных, неограниченных и ограниченных переменных, указанных как [0 -Inf L; Inf Inf U].

Пример: 'Support','positive'

Типы данных: single | double | char | string

Веса для данных выборки, указанные как разделенная запятыми пара, состоящая из 'Weights' и вектор длины size(x,1), где x - образец данных.

Пример: 'Weights',xw

Типы данных: single | double

Выходные аргументы

свернуть все

Расчетные значения функции, возвращаемые в виде вектора. f и pts имеют одинаковое количество строк.

Подробнее

свернуть все

Многомерное распространение ядра

Многомерное распределение ядра - непараметрическое представление функции плотности вероятности (pdf) случайного вектора. Распределение ядра можно использовать в тех случаях, когда параметрическое распределение не может правильно описать данные или когда необходимо избежать предположений о распределении данных. Многомерное распределение ядра определяется функцией сглаживания и матрицей полосы пропускания, которые управляют сглаживанием результирующей кривой плотности.

Многомерный оценщик плотности ядра - это оценочный pdf случайного вектора. Пусть x = (x1, x2,..., xd) '- d-мерный случайный вектор с функцией плотности f и пусть yi = (yi1, yi2,..., yid)' - случайная выборка, взятая из f для i = 1, 2,..., n, где n - число случайных выборок. Для любых действительных векторов x многомерный оценщик плотности ядра задается как

f ^ H (x) =1n∑i=1nKH (x − yi),

где KH (x) = | H | 1/2K (H 1/2x), K (·) - функция сглаживания ядра, а H - матрица d-by-d полосы пропускания.

mvksdensity использует матрицу диагональной полосы пропускания и ядро продукта. То есть H1/2 - квадратная диагональная матрица с элементами вектора (h1, h2,..., hd) на главной диагонали. K (x) принимает форму продукта K (x ) = k (x1) k (x2) ⋯k (xd), где k (·) - одномерная функция сглаживания ядра. Затем многомерный модуль оценки плотности ядра становится

f ^ H (x) =1n∑i=1nKH (x yi) =1nh1h2⋯hd∑i=1nK (x1−yi1h1,x2−yi2h2,⋯,xd−yidhd) =1nh1h2⋯hd∑i=1n∏j=1dk (xj − yijhj).

Оценщик ядра для кумулятивной функции распределения (cdf) для любых действительных векторов x задается как

F ^ H (x) =∫−∞x1∫−∞x2⋯∫−∞xdf^H (t) dtd⋯dt2dt1=1n∑i=1n∏j=1dG (xj yijhj),

где G (xj) =∫−∞xjk (tj) dtj.

Метод отражения

Метод отражения - это метод коррекции границ, который точно находит оценки плотности ядра, когда случайная величина имеет ограниченную поддержку. При указании 'BoundaryCorrection','reflection', mvksdensity использует метод отражения.

Если дополнительно указать 'Support' в виде двухстрочной матрицы, состоящей из нижнего и верхнего пределов для каждого измерения, mvksdensity находит оценщик ядра следующим образом.

  • Если 'Function' является 'pdf', то оценщиком плотности ядра является

         f ^ H (x) =1nh1h2⋯hd∑i=1n∏j=1d[k (xj yij hj) + k (xj yijhj) + k (xj  − yij  + hj)] для Lj ≤ xj ≤ Uj,

    где yij = 2Lj yij, yij + = 2Uj − yij, и yij -j-й элемент iДанные выборки, соответствующие x(i,j) входного аргумента x. Lj и Uj - нижний и верхний пределы j-е измерение, соответственно.

  • Если 'Function' является 'cdf', то оценщиком ядра для cdf является

         F ^ H (x) =1n∑i=1n∏j=1d[G (xj yij hj) + G (xj yijhj) + G (xj yij + hj) G (Lj yijhj)  − G (Lj − yijhj) −     G (Lj − yij + hj)] для Lj ≤ xj ≤ Uj.

  • Получение оценки ядра для функции выжившего (когда 'Function' является 'survivor'), mvksdensity использует как f ^ H (x), так и F ^ H (x).

Если дополнительно указать 'Support' как 'positive' или матрица, включающая [0 inf], то mvksdensity находит оценщик плотности ядра путем замены [Lj Uj] с [0 inf] в вышеприведенных уравнениях.

Ссылки

[1] Боуман, А. У. и А. Аззалини. Применяемые методы сглаживания для анализа данных. Нью-Йорк: Oxford University Press Inc., 1997.

[2] Хилл, П. Д. «Оценка ядра функции распределения». Коммуникации в статистике - теория и методы. Том 14, выпуск 3, 1985, стр. 605-620.

[3] Джонс, М. С. «Простая коррекция границ для оценки плотности ядра». Статистика и вычисления. Том 3, выпуск 3, 1993, стр. 135-146.

[4] Сильверман, В. В. Оценка плотности для статистики и анализа данных. Chapman & Hall/CRC, 1986.

[5] Скотт, Д. В. Многомерная оценка плотности: теория, практика и визуализация. Джон Уайли и сыновья, 2015.

Расширенные возможности

.
Представлен в R2016a