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 содержит тепло укрепления (в cal\g) после 180 дней.

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

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

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

load hald

Данные измеряют тепло укрепления для 13 различных цементных составов. Матрица предиктора ingredients содержит состав процента для каждого из четырех цементных компонентов. Матрица ответа heat содержит тепло укрепления (в cal/g) после 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' или матрица 2D строки, mvksdensity преобразует ограниченные данные, чтобы быть неограниченным при помощи логарифмического преобразования. Значение bw находится по шкале преобразованных значений.

 Эмпирическое правило Сильвермана для пропускной способности

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

где d является количеством размерностей, n является количеством наблюдений, и σi стандартное отклонение i th варьируемая величина [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столбец th входного параметра x.

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

Значение 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)=1ni=1nKH(xyi),

где KH(x)=|H|1/2K(H1/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)=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' как матрица 2D строки, состоящая из нижних и верхних пределов для каждой размерности, затем mvksdensity находит средство оценки ядра можно следующим образом.

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

         f^H(x)=1nh1h2hdi=1nj=1d[k(xjyijhj)+k(xjyijhj)+k(xjyij+hj)] для Lj ≤ xj ≤ Uj,

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

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

         F^H(x)=1ni=1nj=1d[G(xjyijhj)+G(xjyijhj)+G(xjyij+hj)G(Ljyijhj)G(Ljyijhj)G(Ljyij+hj)] для Lj ≤ xj ≤ Uj.

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

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

Ссылки

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

[2] Выступ, P. D. “Оценка ядра функции распределения”. Коммуникации в Статистике – Теория и Методы. Издание 14, Выпуск 3, 1985, стр 605-620.

[3] Джонс, Член конгресса “Простая граничная коррекция для оценки плотности ядра”. Статистика и Вычисление. Издание 3, Выпуск 3, 1993, стр 135-146.

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

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

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

Введенный в R2016a