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 -by - d матрица числовых значений. n - количество точек данных (строк) в x, и d количество размерностей (столбцов).

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

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

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

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

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

 Правило большого пальца Сильвермана для полосы пропускания является

bi=σi{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 является j1-й столбец входного параметра 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-by- 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)=1ni=1nKH(xyi),

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

mvksdensity использует диагональную матрицу пропускной способности и ядро продукта. То есть H1/2 является квадратной диагональной матрицей с элементами вектора (h1, h2,..., hd) на основной диагонали. K(x) берет форму <reservedrangesplaceholder6> продукта   = k (<reservedrangesplaceholder4>) k (<reservedrangesplaceholder2>)  <reservedrangesplaceholder1> (<reservedrangesplaceholder0>), гдеk(·) является одномерной функцией сглаживания ядра. Затем многомерная оценка плотности ядра становится

f^H(x)=1ni=1nKH(xyi)=1nh1h2hdi=1nK(x1yi1h1,x2yi2h2,,xdyidhd)=1nh1h2hdi=1nj=1dk(xjyijhj).

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

F^H(x)=x1x2xdf^H(t)dtddt2dt1=1ni=1nj=1dG(xjyijhj),

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

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

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

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

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

         f^H(x)=1nh1h2hdi=1nj=1d[k(xjyijhj)+k(xjyijhj)+k(xjyij+hj)] для <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>    ,

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

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

         F^H(x)=1ni=1nj=1d[G(xjyijhj)+G(xjyijhj)+G(xjyij+hj)G(Ljyijhj)G(Ljyijhj)G(Ljyij+hj)] для <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>    .

  • Чтобы получить оценку ядра для функции выживания (когда '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] Hill, P.D. «Kernel estimation of a distribution function». Коммуникации в статистике - теория и методы. Том 14, Выпуск 3, 1985, стр. 605-620.

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

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

[5] Скотт, Д. В. Многомерная оценка плотности: теория, практика и визуализация. John Wiley & Sons, 2015.

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

.
Введенный в R2016a