Оценка функции сглаживания ядра для многомерных данных
вычисляет оценку плотности вероятности данных выборки в матрице n-by-d f = mvksdensity(x,pts,'Bandwidth',bw)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
x - Образцы данныхОбразец данных, для которых mvksdensity возвращает оценку плотности вероятности, заданную как матрица n-на-d числовых значений. n - количество точек данных (строк) в x, и d - количество размеров (столбцов).
Типы данных: single | double
bw - Значение полосы пропускания окна сглаживания ядраЗначение полосы пропускания окна сглаживания ядра, указанное как скалярное значение или вектор d-элемента. d - количество измерений (столбцов) в данных образца; x. Если bw является скалярным значением, оно применяется ко всем измерениям.
При указании 'BoundaryCorrection' как 'log'(по умолчанию) и 'Support' как либо 'positive' или двухстрочная матрица, mvksdensity преобразует ограниченные данные в неограниченные с помощью преобразования журнала. Значение bw находится в масштабе преобразованных значений.
Правило Сильвермана для полосы пропускания
= 1,2,..., d,
где d - количество размеров, n - количество наблюдений, и - стандартное отклонение ith варьируемой величины [4].
Пример: 'Bandwidth',0.8
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Kernel','triangle','Function,'cdf' указывает, что mvksdensity оценивает cdf данных выборки, используя функцию ядра треугольника.'BoundaryCorrection' - Метод коррекции границМетод коррекции границы, указанный как разделенная запятыми пара, состоящая из 'BoundaryCorrection' и либо 'log' или 'reflection'.
| Стоимость | Описание |
|---|---|
'log' |
Значение |
'reflection' |
|
mvksdensity применяет коррекцию границ только при указании 'Support' как значение, отличное от 'unbounded'.
Пример: 'BoundaryCorrection','reflection'
'Function' - Функция для оценки'pdf' (по умолчанию) | 'cdf' | 'survivor'Функция для оценки, указанная как разделенная запятыми пара, состоящая из 'Function' и одно из следующих.
| Стоимость | Описание |
|---|---|
'pdf' | Функция плотности вероятности |
'cdf' | Кумулятивная функция распределения |
'survivor' | Функция выжившего |
Пример: 'Function','cdf'
'Kernel' - Тип ядра более гладкий'normal' (по умолчанию) | 'box' | 'triangle' | 'epanechnikov' | дескриптор функции | вектор символов | скаляр строкиТип более гладкого ядра, указанный как разделенная запятыми пара, состоящая из 'Kernel' и одно из следующих.
| Стоимость | Описание |
|---|---|
'normal' | Нормальное (гауссово) ядро |
'box' | Ядро коробки |
'triangle' | Треугольное ядро |
'epanechnikov' | Ядро Епанечникова |
Можно также указать функцию ядра, которая является пользовательской или встроенной функцией. Укажите функцию как дескриптор функции (например, @myfunction или @normpdf) или в виде вектора символа или скаляра строки (например, 'myfunction' или 'normpdf'). Программа вызывает указанную функцию с одним аргументом, который является массивом расстояний между значениями данных и местоположениями, где вычисляется плотность, нормируемая полосой пропускания в этом измерении. Функция должна возвращать массив того же размера, содержащий соответствующие значения функции ядра.
mvksdensity применяет одно и то же ядро к каждому измерению.
Пример: 'Kernel','box'
'Support' - Поддержка плотности'unbounded' (по умолчанию) | 'positive' | матрица 2 на dПоддержка плотности, определяемой как разделенная запятыми пара, состоящая из 'support' и одно из следующих.
| Стоимость | Описание |
|---|---|
'unbounded' | Позволить плотности простираться по всей реальной линии |
'positive' | Ограничить плотность положительными значениями |
| Матрица 2 на d | Задайте конечную нижнюю и верхнюю границы для опоры плотности. Первая строка содержит нижние пределы, а вторая строка содержит верхние пределы. Каждый столбец содержит пределы для одного измерения x. |
'Support' также может быть комбинацией положительных, неограниченных и ограниченных переменных, указанных как [0 -Inf L; Inf Inf U].
Пример: 'Support','positive'
Типы данных: single | double | char | string
'Weights' - Веса для выборочных данныхВеса для данных выборки, указанные как разделенная запятыми пара, состоящая из 'Weights' и вектор длины size(x,1), где x - образец данных.
Пример: 'Weights',xw
Типы данных: single | double
f - Оценочные значения функцийРасчетные значения функции, возвращаемые в виде вектора. f и pts имеют одинаковое количество строк.
Многомерное распределение ядра - непараметрическое представление функции плотности вероятности (pdf) случайного вектора. Распределение ядра можно использовать в тех случаях, когда параметрическое распределение не может правильно описать данные или когда необходимо избежать предположений о распределении данных. Многомерное распределение ядра определяется функцией сглаживания и матрицей полосы пропускания, которые управляют сглаживанием результирующей кривой плотности.
Многомерный оценщик плотности ядра - это оценочный pdf случайного вектора. Пусть x = (x1, x2,..., xd) '- d-мерный случайный вектор с функцией плотности f и пусть yi = (yi1, yi2,..., yid)' - случайная выборка, взятая из f для i = 1, 2,..., n, где n - число случайных выборок. Для любых действительных векторов x многомерный оценщик плотности ядра задается как
− yi),
где (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 (·) - одномерная функция сглаживания ядра. Затем многомерный модуль оценки плотности ядра становится
(xj − yijhj).
Оценщик ядра для кумулятивной функции распределения (cdf) для любых действительных векторов x задается как
yijhj),
где dtj.
Метод отражения - это метод коррекции границ, который точно находит оценки плотности ядра, когда случайная величина имеет ограниченную поддержку. При указании 'BoundaryCorrection','reflection', mvksdensity использует метод отражения.
Если дополнительно указать 'Support' в виде двухстрочной матрицы, состоящей из нижнего и верхнего пределов для каждого измерения, mvksdensity находит оценщик ядра следующим образом.
Если 'Function' является 'pdf', то оценщиком плотности ядра является
+ k (xj − yij + hj)] для Lj ≤ xj ≤ Uj,
где − 2Uj − yij, и yij -j-й элемент iДанные выборки, соответствующие x(i,j) входного аргумента x. Lj и Uj - нижний и верхний пределы j-е измерение, соответственно.
Если 'Function' является 'cdf', то оценщиком ядра для cdf является
− G (Lj − yijhj) − G (Lj − yij + hj)] для Lj ≤ xj ≤ Uj.
Получение оценки ядра для функции выжившего (когда 'Function' является 'survivor'), mvksdensity использует как (x), так 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.
Примечания и ограничения по использованию:
Имена в аргументах пары имя-значение, включая 'Bandwidth', должны быть константами времени компиляции.
Значения в следующих аргументах пары имя-значение также должны быть константами времени компиляции: 'BoundaryCorrection', 'Function', и 'Kernel'. Например, для использования 'Function','cdf' аргумент пары имя-значение в сгенерированном коде, включить {coder.Constant('Function'),coder.Constant('cdf')} в -args значение codegen.
Значение 'Kernel' аргумент пары имя-значение не может быть пользовательским дескриптором функции. Чтобы задать пользовательскую функцию ядра, используйте вектор символов или скаляр строки.
Для значения 'Support' аргумент пары имя-значение, тип данных compile-time должен соответствовать типу данных среды выполнения.
Дополнительные сведения о создании кода см. в разделах Введение в создание кода и Общий рабочий процесс создания кода.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.