Ядро, сглаживающее функциональную оценку для одномерных и двумерных данных
[f,xi]
= ksdensity(x)
[f,xi]
= ksdensity(x,pts)
[f,xi]
= ksdensity(___,Name,Value)
[f,xi,bw]
= ksdensity(___)
ksdensity(___)
ksdensity(ax,___)
[
возвращает оценку плотности вероятности, f
,xi
]
= ksdensity(x
)f
, для выборочных данных в векторе или матрице 2D столбца x
. Оценка основана на нормальной функции ядра и оценена в равномерно распределенных точках, xi
, том покрытии область значений данных в x
. ksdensity
оценивает плотность в 100 точках для одномерных данных или 900 точках для двумерных данных.
ksdensity
работает лучше всего с постоянно распределяемыми выборками.
[
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение" в дополнение к любому из входных параметров в предыдущих синтаксисах. Например, можно задать функциональный типf
,xi
]
= ksdensity(___,Name,Value
), который ksdensity
оценивает, такие как плотность вероятности, интегральная вероятность, функция оставшегося в живых, и так далее. Или можно задать пропускную способность окна сглаживания.
Сгенерируйте набор выборочных данных от смеси двух нормальных распределений.
rng('default') % For reproducibility x = [randn(30,1); 5+randn(30,1)];
Постройте предполагаемую плотность.
[f,xi] = ksdensity(x); figure plot(xi,f);
Оценка плотности показывает bimodality выборки.
Сгенерируйте неотрицательный набор выборочных данных от полунормального распределения.
rng('default') % For reproducibility pd = makedist('HalfNormal','mu',0,'sigma',1); x = random(pd,100,1);
Оцените pdfs с двумя различными граничными методами исправления, регистрируйте преобразование и отражение, при помощи аргумента пары "имя-значение" 'BoundaryCorrection'
.
pts = linspace(0,5,1000); % points to evaluate the estimator [f1,xi1] = ksdensity(x,pts,'Support','positive'); [f2,xi2] = ksdensity(x,pts,'Support','positive','BoundaryCorrection','reflection');
Постройте оцененный pdfs двух.
plot(xi1,f1,xi2,f2) lgd = legend('log','reflection'); title(lgd, 'Boundary Correction Method') xl = xlim; xlim([xl(1)-0.25 xl(2)])
ksdensity
использует граничный метод исправления, когда вы задаете или положительный или ограниченный носитель. Граничный метод исправления по умолчанию является логарифмическим преобразованием. Когда ksdensity
преобразовывает поддержку назад, это вводит термин 1/x
в средстве оценки плотности ядра. Поэтому оценка имеет пик около x = 0
. С другой стороны, отражательный метод не вызывает нежелательный peaks около контура.
Загрузите выборочные данные.
load hospital
Вычислите и постройте предполагаемый cdf, оцененный в заданном множестве значений.
pts = (min(hospital.Weight):2:max(hospital.Weight)); figure() ecdf(hospital.Weight) hold on [f,xi,bw] = ksdensity(hospital.Weight,pts,'Support','positive',... 'Function','cdf'); plot(xi,f,'-g','LineWidth',2) legend('empirical cdf','kernel-bw:default','Location','northwest') xlabel('Patient weights') ylabel('Estimated cdf')
ksdensity
, кажется, сглаживает кумулятивную функцию распределения, оценивают слишком много. Оценка с меньшей пропускной способностью может произвести более близкую оценку для эмпирической кумулятивной функции распределения.
Возвратите пропускную способность окна сглаживания.
bw
bw = 0.1070
Постройте оценку кумулятивной функции распределения с помощью меньшей пропускной способности.
[f,xi] = ksdensity(hospital.Weight,pts,'Support','positive',... 'Function','cdf','Bandwidth',0.05); plot(xi,f,'--r','LineWidth',2) legend('empirical cdf','kernel-bw:default','kernel-bw:0.05',... 'Location','northwest') hold off
Оценка ksdensity
с меньшей пропускной способностью совпадает с эмпирической кумулятивной функцией распределения лучше.
Загрузите выборочные данные.
load hospital
Постройте предполагаемый cdf, оцененный в 50 равномерно распределенных точках.
figure() ksdensity(hospital.Weight,'Support','positive','Function','cdf',... 'NumPoints',50) xlabel('Patient weights') ylabel('Estimated cdf')
Сгенерируйте выборочные данные от экспоненциального распределения со средним значением 3.
rng('default') % For reproducibility x = random('exp',3,100,1);
Создайте логический вектор, который указывает на цензурирование. Здесь, наблюдения со временем жизни дольше, чем 10 подвергаются цензуре.
T = 10; cens = (x>T);
Вычислите и постройте предполагаемую функцию плотности.
figure ksdensity(x,'Support','positive','Censoring',cens);
Вычислите и постройте функцию оставшегося в живых.
figure ksdensity(x,'Support','positive','Censoring',cens,... 'Function','survivor');
Вычислите и постройте совокупную функцию опасности.
figure ksdensity(x,'Support','positive','Censoring',cens,... 'Function','cumhazard');
Сгенерируйте смесь двух нормальных распределений и постройте предполагаемую обратную кумулятивную функцию распределения при заданном наборе значений вероятности.
rng('default') % For reproducibility x = [randn(30,1); 5+randn(30,1)]; pi = linspace(.01,.99,99); figure ksdensity(x,pi,'Function','icdf');
Сгенерируйте смесь двух нормальных распределений.
rng('default') % For reproducibility x = [randn(30,1); 5+randn(30,1)];
Возвратите пропускную способность окна сглаживания для оценки плотности вероятности.
[f,xi,bw] = ksdensity(x); bw
bw = 1.5141
Пропускная способность по умолчанию оптимальна для нормальной плотности.
Постройте предполагаемую плотность.
figure plot(xi,f); xlabel('xi') ylabel('f') hold on
Постройте плотность с помощью увеличенного значения пропускной способности.
[f,xi] = ksdensity(x,'Bandwidth',1.8); plot(xi,f,'--r','LineWidth',1.5)
Более высокая пропускная способность далее сглаживает оценку плотности, которая может замаскировать некоторые характеристики распределения.
Теперь, постройте плотность с помощью уменьшенного значения пропускной способности.
[f,xi] = ksdensity(x,'Bandwidth',0.8); plot(xi,f,'-.k','LineWidth',1.5) legend('bw = default','bw = 1.8','bw = 0.8') hold off
Меньшая пропускная способность сглаживает оценку плотности меньше, которая преувеличивает некоторые характеристики выборки.
Создайте 2D вектор-столбец точек, в которых можно оценить плотность.
gridx1 = -0.25:.05:1.25; gridx2 = 0:.1:15; [x1,x2] = meshgrid(gridx1, gridx2); x1 = x1(:); x2 = x2(:); xi = [x1 x2];
Сгенерируйте 30 2 матрица, содержащая случайные числа от смеси двумерных нормальных распределений.
rng('default') % For reproducibility x = [0+.5*rand(20,1) 5+2.5*rand(20,1); .75+.25*rand(10,1) 8.75+1.25*rand(10,1)];
Постройте предполагаемую плотность выборочных данных.
figure ksdensity(x,xi);
x
Выборочные данныеВыборочные данные, для которых ksdensity
возвращает значения f
, заданные как матрица 2D столбца или вектор-столбец. Используйте вектор-столбец для одномерных данных и матрицу 2D столбца для двумерных данных.
Пример: [f,xi] = ksdensity(x)
Типы данных: single | double
pts
— Точки, в которых можно оценить f
Точки, в которых можно оценить f
, заданный как матрица 2D столбца или вектор. Для одномерных данных pts
может быть строкой или вектор-столбцом. Продолжительность возвращенного вывода f
равна числу точек в pts
.
Пример: pts = (0:1:25); ksdensity(x,pts);
Типы данных: single | double
ax
— Указатель осейОси обрабатывают для фигуры графики ksdensity
к, заданный как указатель.
Например, если h
является указателем для фигуры, то ksdensity
может построить той фигуре можно следующим образом.
Пример: ksdensity(h,x)
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Censoring',cens,'Kernel','triangle','NumPoints',20,'Function','cdf'
указывает, что ksdensity
оценивает cdf путем оценки в 20 равномерно распределенных точках, который покрывает область значений данных, с помощью треугольной функции сглаживания ядра и составления подвергнутой цензуре информации о данных в векторном cens
.пропускная способность
Пропускная способность окна сглаживания ядраПропускная способность сглаживающего ядро окна, которое является функцией числа точек в x
, заданном как пара, разделенная запятой, состоящая из 'Bandwidth'
и скалярного значения. Если выборочные данные являются двумерными, Bandwidth
может также быть двухэлементным вектором. Значение по умолчанию оптимально для оценки нормальной плотности [1], но вы можете хотеть выбрать большее или меньшее значение, чтобы сглаживать более или менее.
Если вы задаете 'BoundaryCorrection'
как 'log'
(значение по умолчанию) и 'Support'
или как 'positive'
или как векторный [L U]
, ksdensity
преобразовывает ограниченные данные, чтобы быть неограниченным при помощи логарифмического преобразования. Значение 'Bandwidth'
находится в шкале преобразованных значений.
Пример: 'Bandwidth',0.8
Типы данных: single | double
'BoundaryCorrection'
— Граничный метод исправленияГраничный метод исправления, заданный как пара, разделенная запятой, состоящая из 'BoundaryCorrection'
и 'log'
или 'reflection'
.
Значение | Описание |
---|---|
'log' |
Значение |
'reflection' |
|
ksdensity
применяет граничное исправление только, когда вы задаете 'Support'
как значение кроме 'unbounded'
.
Пример: 'BoundaryCorrection','reflection'
'Censoring'
— Логический векторЛогический вектор, указывающий, какие записи подвергаются цензуре, задал как пара, разделенная запятой, состоящая из 'Censoring'
и вектор двоичных значений. Значение 0 указывает, что нет никакого цензурирования, 1 указывает, что наблюдение подвергается цензуре. Значение по умолчанию нет никакого цензурирования. Эта пара "имя-значение" только допустима для одномерных данных.
Пример: 'Censoring',censdata
Типы данных: логический
функция
Функционируйте, чтобы оценить'pdf'
(значение по умолчанию) | 'cdf'
| 'icdf'
| 'survivor'
| 'cumhazard'
Функция, чтобы оценить, заданный как пара, разделенная запятой, состоящая из 'Function'
и одно из следующих.
Значение | Описание |
---|---|
'pdf' | Функция плотности вероятности. |
'cdf' | Кумулятивная функция распределения. |
'icdf' |
Обратная кумулятивная функция распределения. Это значение допустимо только для одномерных данных. |
'survivor' | Функция оставшегося в живых. |
'cumhazard' |
Совокупная функция опасности. Это значение допустимо только для одномерных данных. |
Пример: 'Function'
, 'icdf'
'Kernel'
— Тип более сглаженного ядра'normal'
(значение по умолчанию) | 'box'
| 'triangle'
| 'epanechnikov'
| указатель на функцию | вектор символов | представляет скаляр в виде строкиТип ядра, более сглаженного, заданного как пара, разделенная запятой, состоящая из 'Kernel'
и одно из следующих.
'normal'
(значение по умолчанию)
'box'
'triangle'
'epanechnikov'
Функция ядра, которая является пользовательским или встроенной функцией. Задайте функцию как указатель на функцию (например, @myfunction
или @normpdf
) или как вектор символов или представьте скаляр в виде строки (например, 'myfunction'
или 'normpdf'
). Программное обеспечение вызывает заданную функцию с одним аргументом, который является массивом расстояний между значениями данных и местоположениями, где плотность оценена. Функция должна возвратить массив, одного размера содержащий соответствующие значения функции ядра.
Когда 'Function'
является 'pdf'
, функция ядра возвращает значения плотности. В противном случае это возвращает значения интегральной вероятности.
Определение пользовательского ядра, когда 'Function'
является 'icdf'
, возвращает ошибку.
Для двумерных данных ksdensity
применяет то же ядро к каждой размерности.
Пример: 'Kernel','box'
'NumPoints'
— Количество равномерно распределенных точекКоличество равномерно распределенных точек в xi
, заданном как пара, разделенная запятой, состоящая из 'NumPoints'
и скалярного значения. Эта пара "имя-значение" только допустима для одномерных данных.
Например, для ядра сглаживают оценку заданной функции в 80 равномерно распределенных точках в области значений выборочных данных, входа:
Пример: 'NumPoints',80
Типы данных: single | double
Поддержка
Поддержка плотности'unbounded'
(значение по умолчанию) | 'positive'
| двухэлементный вектор, [L U]
| two-two матрица, [L1 L2; U1 U2]
Поддержка плотности, заданной как пара, разделенная запятой, состоящая из 'support'
и одно из следующих.
Значение | Описание |
---|---|
'unbounded' | Значение по умолчанию. Позвольте плотности расширять по целой действительной строке. |
'positive' | Ограничьте плотность положительными значениями. |
Двухэлементный вектор, [L U] | Дайте конечные нижние и верхние границы для поддержки плотности. Эта опция только допустима для одномерных выборочных данных. |
Матрица Two-two, [L1 L2; U1 U2] | Дайте конечные нижние и верхние границы для поддержки плотности. Первая строка содержит нижние пределы, и вторая строка содержит верхние пределы. Эта опция только допустима для данных о двумерной выборке. |
Для двумерных данных 'Support'
может быть комбинацией положительных, неограниченных, или ограниченных переменных, заданных как [0 -Inf; Inf Inf]
или [0 L; Inf U]
.
Пример: 'Support','positive'
Пример: 'Support',[0 10]
Типы данных: single
| double
| char
| string
'PlotFcn'
— Функция раньше создавала график плотности ядра'surf'
(значение по умолчанию) | 'contour'
| 'plot3'
| 'surfc'
Функция раньше создавала график плотности ядра, заданный как пара, разделенная запятой, состоящая из 'PlotFcn'
и одно из следующих.
Значение | Описание |
---|---|
'surf' | 3-D теневая объемная поверхностная диаграмма, созданное использование surf |
'contour' | Контурный график, созданное использование contour |
'plot3' | 3-D линейный график, созданное использование plot3 |
'surfc' | Контурный график в соответствии с 3-D теневой объемной поверхностной диаграммой, созданное использование surfc |
Эта пара "имя-значение" только допустима для данных о двумерной выборке.
Пример: 'PlotFcn','contour'
'Weights'
— Веса для выборочных данныхВеса для выборочных данных, заданных как пара, разделенная запятой, состоящая из 'Weights'
и вектор длины size(x,1)
, где x
является выборочными данными.
Пример: 'Weights',xw
Типы данных: single | double
\Xi
Точки оценкиОценка указывает, в котором ksdensity
вычисляет f
, возвращенный как вектор или матрица 2D столбца. Для одномерных данных значением по умолчанию являются 100 равномерно распределенных точек, которые покрывают область значений данных в x
. Для двумерных данных значением по умолчанию являются 900 равномерно распределенных точек, созданных с помощью meshgrid
от 30 равномерно распределенных точек в каждой размерности.
bw
— Пропускная способность сглаживания окнаПропускная способность сглаживания окна, возвращенного как скалярное значение.
Если вы задаете 'BoundaryCorrection'
как 'log'
(значение по умолчанию) и 'Support'
или как 'positive'
или как векторный [L U]
, ksdensity
преобразовывает ограниченные данные, чтобы быть неограниченным при помощи логарифмического преобразования. Значение bw
находится в шкале преобразованных значений.
Распределение ядра является непараметрическим представлением функции плотности вероятности (PDF) случайной переменной. Можно использовать распределение ядра, когда параметрическое распределение не может правильно описать данные, или когда это необходимо постараться не делать предположения о распределении данных. Распределение ядра задано функцией сглаживания и значением пропускной способности, которые управляют гладкостью получившейся кривой плотности.
Средством оценки плотности ядра является предполагаемый PDF случайной переменной. Для любых действительных значений x формулой средства оценки плотности ядра дают
откуда x1, x2, …, xn является случайными выборками неизвестного распределения, n является объемом выборки, функция сглаживания ядра, и h является пропускной способностью.
Средством оценки ядра для кумулятивной функции распределения (cdf), для любых действительных значений x, дают
где .
Для получения дополнительной информации смотрите Распределение Ядра.
Отражательный метод является граничным методом исправления, который точно находит средства оценки плотности ядра, когда случайная переменная имеет ограниченный носитель. Если вы задаете 'BoundaryCorrection','reflection'
, ksdensity
использует отражательный метод. Этот метод увеличивает ограниченные данные путем добавления отраженных данных около контуров и оценивает PDF. Затем ksdensity
возвращает предполагаемый PDF, соответствующий исходной поддержке с соответствующей нормализацией, так, чтобы интеграл предполагаемого PDF по исходной поддержке был равен одной.
Если вы дополнительно задаете 'Support',[L U]
, то ksdensity
находит средство оценки ядра можно следующим образом.
Если 'Function'
является 'pdf'
, то средство оценки плотности ядра
для L ≤ x ≤ U,
где , , и xi является i
th выборочные данные.
Если 'Function'
является 'cdf'
, то средство оценки ядра для cdf
для L ≤ x ≤ U.
Чтобы получить средство оценки ядра для инверсии cdf, функции оставшегося в живых или совокупной функции опасности (когда 'Function'
является 'icdf'
, 'survivor'
или 'cumhazrd'
), ksdensity
использует обоих и .
Если вы дополнительно задаете 'Support'
как 'positive'
или [0 inf]
, то ksdensity
находит средство оценки ядра, заменяя [L U]
на [0 inf]
в вышеупомянутых уравнениях.
[1] Лучник, A. W. и А. Аццалини. Прикладные методы сглаживания для анализа данных. Нью-Йорк: Oxford University Press Inc., 1997.
[2] Выступ, P. D. “Оценка ядра функции распределения”. Коммуникации в Статистике - Теория и Методы. Vol 14, Проблема. 3, 1985, стр 605-620.
[3] Джонс, Член конгресса “Простое граничное исправление для оценки плотности ядра”. Статистика и Вычисление. Издание 3, Выпуск 3, 1993, стр 135-146.
[4] Сильверман, B. W. Оценка плотности для статистики и анализ данных. Chapman & Hall/CRC, 1986.
Эта функция поддерживает длинные массивы для данных, которые не помещаются в память, с некоторыми ограничениями.
Некоторые опции, которые требуют дополнительных передач или сортировки входных данных, не поддержаны:
'BoundaryCorrection'
'Censoring'
'Support'
(поддержка всегда неограниченна).
Стандартное отклонение использования (вместо среднего абсолютного отклонения), чтобы вычислить пропускную способность.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Указания и ограничения по применению:
Графический вывод не поддержан.
Имена в аргументах пары "имя-значение" должны быть константами времени компиляции.
Значения в следующих аргументах пары "имя-значение" должны также быть константами времени компиляции: 'BoundaryCorrection'
, 'Function'
и 'Kernel'
. Например, чтобы использовать аргумент пары "имя-значение" 'Function','cdf'
в сгенерированном коде, включайте {coder.Constant('Function'),coder.Constant('cdf')}
в значение -args
codegen
.
Значение аргумента пары "имя-значение" 'Kernel'
не может быть пользовательским указателем на функцию. Чтобы задать пользовательскую функцию ядра, используйте вектор символов или представьте скаляр в виде строки.
Для значения аргумента пары "имя-значение" 'Support'
тип данных времени компиляции должен совпадать с типом данных во время выполнения.
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.