Ядро, сглаживающее функциональную оценку для многомерных данных
f = mvksdensity(x,pts,'Bandwidth',bw)
f = mvksdensity(x,pts,'Bandwidth',bw,Name,Value)
вычисляет оценку плотности вероятности выборочных данных в 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
содержит тепло укрепления (в 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
x
Выборочные данныеВыборочные данные, для которых mvksdensity
возвращает оценку плотности вероятности, заданную как n-by-d матрица числовых значений. n является количеством точек данных (строки) в x
, и d является количеством размерностей (столбцы).
Типы данных: single | double
bw
— Значение для пропускной способности окна сглаживания ядраЗначение для пропускной способности сглаживающего ядро окна, заданного как скалярное значение или d - вектор элемента. d является количеством размерностей (столбцы) в выборочных данных x
. Если bw
является скалярным значением, он применяется ко всем размерностям.
Если вы задаете 'BoundaryCorrection'
как 'log'
(значение по умолчанию) и 'Support'
или как 'positive'
или как матрица 2D строки, mvksdensity
преобразовывает ограниченные данные, чтобы быть неограниченным при помощи логарифмического преобразования. Значение bw
находится в шкале преобразованных значений.
Эмпирическое правило Сильвермана для пропускной способности
где d является количеством размерностей, n является количеством наблюдений, и стандартное отклонение i th варьируемая величина [4].
Пример: 'Bandwidth',0.8
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Kernel','triangle','Function,'cdf'
указывает, что mvksdensity
оценивает cdf выборочных данных с помощью треугольной функции ядра.'BoundaryCorrection'
— Граничный метод исправленияГраничный метод исправления, заданный как пара, разделенная запятой, состоящая из 'BoundaryCorrection'
и или 'log'
или 'reflection'
.
Значение | Описание |
---|---|
'log' |
Значение |
'reflection' |
|
mvksdensity
применяет граничное исправление только, когда вы задаете 'Support'
как значение кроме 'unbounded'
.
Пример: 'BoundaryCorrection','reflection'
функция
Функционируйте, чтобы оценить'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'
Поддержка
Поддержка плотности'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 многомерным средством оценки плотности ядра дают
где , функция сглаживания ядра, и H является d-by-d матрица пропускной способности.
mvksdensity
использует диагональную матрицу пропускной способности и ядро продукта. Таким образом, H1/2 является квадратной диагональной матрицей с элементами вектора (h1, h2, …, hd) на основной диагонали. K(x) принимает форму продукта K(x) = k (x1) k (x2) ⋯k (xd), где одномерная функция сглаживания ядра. Затем многомерное средство оценки плотности ядра становится
Средством оценки ядра для кумулятивной функции распределения (cdf), для любых векторов действительных чисел x, дают
где .
Отражательный метод является граничным методом исправления, который точно находит средства оценки плотности ядра, когда случайная переменная имеет ограниченный носитель. Если вы задаете 'BoundaryCorrection','reflection'
, mvksdensity
использует отражательный метод.
Если вы дополнительно задаете 'Support'
как матрицу 2D строки, состоящую из нижних и верхних пределов для каждой размерности, то mvksdensity
находит средство оценки ядра можно следующим образом.
Если 'Function'
является 'pdf'
, то средство оценки плотности ядра
для Lj ≤ xj ≤ Uj,
где , , и yij является j
th элемент i
th выборочные данные, соответствующие x(i,j)
входного параметра x
. Lj и Uj являются нижними и верхними пределами j
th размерность, соответственно.
Если 'Function'
является 'cdf'
, то средство оценки ядра для cdf
для Lj ≤ xj ≤ Uj.
Чтобы получить средство оценки ядра для функции оставшегося в живых (когда 'Function'
является 'survivor'
), mvksdensity
использует обоих и .
Если вы дополнительно задаете '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.
Указания и ограничения по применению:
Имена в аргументах пары "имя-значение", включая 'Bandwidth'
, должны быть константами времени компиляции.
Значения в следующих аргументах пары "имя-значение" должны также быть константами времени компиляции: 'BoundaryCorrection'
, 'Function'
и 'Kernel'
. Например, чтобы использовать аргумент пары "имя-значение" 'Function','cdf'
в сгенерированном коде, включайте {coder.Constant('Function'),coder.Constant('cdf')}
в значение -args
codegen
.
Значение аргумента пары "имя-значение" 'Kernel'
не может быть пользовательским указателем на функцию. Чтобы задать пользовательскую функцию ядра, используйте вектор символов или представьте скаляр в виде строки.
Для значения аргумента пары "имя-значение" 'Support'
тип данных времени компиляции должен совпадать с типом данных во время выполнения.
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.