Пусть ( x 1 , x 2 , ..., x n ) — независимые и одинаково распределенные выборки, взятые из некоторого одномерного распределения с неизвестной плотностью ƒ в любой заданной точке x . Нас интересует оценка формы этой функции ƒ . Ее ядерная оценка плотности —
где K — ядро — неотрицательная функция — а h > 0 — параметр сглаживания , называемый полосой пропускания или просто шириной. [3] Ядро с нижним индексом h называется масштабированным ядром и определяется как K h ( x ) = K ( ) . Интуитивно хочется выбрать h настолько малым, насколько позволяют данные; однако всегда существует компромисс между смещением оценщика и его дисперсией. Выбор полосы пропускания более подробно обсуждается ниже.
Обычно используется ряд функций ядра : равномерная, треугольная, двухвесовая, трехвесовая, Епанечникова (параболическая), нормальная и другие. Ядро Епанечникова является оптимальным в смысле среднеквадратической ошибки, [4] хотя потеря эффективности невелика для ядер, перечисленных ранее. [5] Благодаря своим удобным математическим свойствам, часто используется нормальное ядро, что означает K ( x ) = ϕ ( x ) , где ϕ — стандартная нормальная функция плотности. Тогда оценка плотности ядра становится
где — стандартное отклонение выборки .
Построение оценки плотности ядра находит интерпретации в областях за пределами оценки плотности. [6] Например, в термодинамике это эквивалентно количеству тепла, выделяемого при размещении тепловых ядер (фундаментального решения уравнения теплопроводности ) в каждой точке данных x i . Аналогичные методы используются для построения дискретных операторов Лапласа на облаках точек для обучения многообразий (например, карта диффузии ).
Пример
Оценки плотности ядра тесно связаны с гистограммами , но могут быть наделены такими свойствами, как гладкость или непрерывность, используя подходящее ядро. Диаграмма ниже, основанная на этих 6 точках данных, иллюстрирует эту связь:
Для гистограммы, во-первых, горизонтальная ось делится на подинтервалы или ячейки, которые покрывают диапазон данных: в этом случае шесть ячеек шириной 2. Всякий раз, когда точка данных попадает внутрь этого интервала, там помещается ящик высотой 1/12. Если в один и тот же бин попадает более одной точки данных, ящики накладываются друг на друга.
Для оценки плотности ядра нормальные ядра со стандартным отклонением 1,5 (обозначенные красными пунктирными линиями) помещаются на каждую из точек данных x i . Ядра суммируются для получения оценки плотности ядра (сплошная синяя кривая). Гладкость оценки плотности ядра (по сравнению с дискретностью гистограммы) иллюстрирует, как оценки плотности ядра быстрее сходятся к истинной базовой плотности для непрерывных случайных величин. [7]
Выбор пропускной способности
Ширина полосы пропускания ядра является свободным параметром , который оказывает сильное влияние на результирующую оценку. Чтобы проиллюстрировать его эффект, мы берем смоделированную случайную выборку из стандартного нормального распределения (построенную на синих пиках на графике ковров на горизонтальной оси). Серая кривая — это истинная плотность (нормальная плотность со средним значением 0 и дисперсией 1). Для сравнения, красная кривая недостаточно сглажена, поскольку содержит слишком много ложных артефактов данных, возникающих из-за использования ширины полосы пропускания h = 0,05, которая слишком мала. Зеленая кривая чрезмерно сглажена , поскольку использование ширины полосы пропускания h = 2 скрывает большую часть базовой структуры. Черная кривая с шириной полосы пропускания h = 0,337 считается оптимально сглаженной, поскольку ее оценка плотности близка к истинной плотности. Экстремальная ситуация возникает в пределе (без сглаживания), где оценка представляет собой сумму n дельта-функций, центрированных по координатам анализируемых образцов. В другом крайнем пределе оценка сохраняет форму используемого ядра, центрированного на среднем значении выборок (полностью гладкое).
При слабых предположениях относительно ƒ и K ( ƒ — это, как правило, неизвестная, действительная функция плотности), [1] [2]
где o — это маленькая нотация o , а n — размер выборки (как и выше). AMISE — это асимптотическая MISE, т. е. два ведущих члена,
где для функции g ,
и является второй производной и является ядром. Минимум этого AMISE является решением этого дифференциального уравнения
или
Ни формулы AMISE, ни h AMISE не могут быть использованы напрямую, поскольку они включают неизвестную функцию плотности или ее вторую производную . Чтобы преодолеть эту трудность, были разработаны различные автоматические методы, основанные на данных, для выбора полосы пропускания. Было проведено несколько обзорных исследований для сравнения их эффективности, [8] [9] [10] [11] [12] [13] [14] с общим консенсусом, что селекторы подключаемых модулей [6] [15] [16] и селекторы перекрестной проверки [17] [18] [19] являются наиболее полезными для широкого диапазона наборов данных.
Подстановка любой полосы пропускания h , которая имеет тот же асимптотический порядок n −1/5 , что и h AMISE, в AMISE дает AMISE( h ) = O ( n −4/5 ), где O — большая нотация O. Можно показать, что при слабых предположениях не может существовать непараметрической оценки, которая сходится с большей скоростью, чем ядерная оценка. [20] Обратите внимание, что скорость n −4/5 медленнее, чем типичная скорость сходимости n −1 параметрических методов.
Значение считается более надежным, когда оно улучшает соответствие для длиннохвостых и асимметричных распределений или для бимодальных смешанных распределений. Это часто делается эмпирически путем замены стандартного отклонения на параметр ниже:
где IQR — межквартильный размах.
Еще одно изменение, которое улучшит модель, — это уменьшение коэффициента с 1,06 до 0,9. Тогда окончательная формула будет выглядеть так:
где размер выборки.
Это приближение называется приближением нормального распределения , гауссовым приближением или эмпирическим правилом Сильвермана . [ 22] Хотя это эмпирическое правило легко вычислить, его следует использовать с осторожностью, поскольку оно может давать весьма неточные оценки, когда плотность не близка к нормальной. Например, при оценке бимодальной гауссовой модели смеси
На рисунке справа для выборки из 200 точек показаны истинная плотность и две оценки плотности ядра — одна с использованием полосы пропускания, рассчитанной по правилу большого пальца, а другая с использованием полосы пропускания, рассчитанной по решению уравнения. [6] [16] Оценка, рассчитанная по правилу большого пальца, значительно сглажена.
Связь с оценкой плотности характеристической функции
Учитывая выборку ( x 1 , x 2 , ..., x n ), естественно оценить характеристическую функцию φ ( t ) = E[ e itX ] как
Зная характеристическую функцию, можно найти соответствующую функцию плотности вероятности с помощью формулы преобразования Фурье . Одна из трудностей с применением этой формулы обращения заключается в том, что она приводит к расходящемуся интегралу, поскольку оценка ненадежна для больших t . Чтобы обойти эту проблему, оценщик умножается на демпфирующую функцию ψ h ( t ) = ψ ( ht ) , которая равна 1 в начале координат, а затем падает до 0 на бесконечности. «Параметр полосы пропускания» h контролирует, как быстро мы пытаемся демпфировать функцию . В частности, когда h мало, то ψ h ( t ) будет приблизительно равна единице для большого диапазона t , что означает, что остается практически неизменным в наиболее важной области t .
Наиболее распространенным выбором для функции ψ является либо равномерная функция ψ ( t ) = 1 {−1 ≤ t ≤ 1 }, что фактически означает усечение интервала интегрирования в формуле обращения до [−1/ h , 1/ h ] , либо гауссова функция ψ ( t ) = e − π t 2 . После выбора функции ψ можно применить формулу обращения, и оценка плотности будет
где K — преобразование Фурье функции затухания ψ . Таким образом, оценка плотности ядра совпадает с оценкой плотности характеристической функции.
Геометрические и топологические особенности
Мы можем расширить определение (глобального) режима до локального смысла и определить локальные режимы:
А именно, — это набор точек, для которых функция плотности локально максимизирована. Естественная оценка — это плагин из KDE, [23] [24], где и — версии KDE и . При умеренных предположениях — это состоятельная оценка . Обратите внимание, что можно использовать алгоритм сдвига среднего [25] [26] [27] для численного вычисления оценки .
Статистическая реализация
Неполный список программных реализаций ядерных оценщиков плотности включает:
В версии Analytica 4.4 опция сглаживания для результатов PDF использует KDE, а из выражений она доступна через встроенную Pdfфункцию.
В C / C++ FIGTree — это библиотека, которая может использоваться для вычисления оценок плотности ядра с использованием обычных ядер. Доступен интерфейс MATLAB.
В C++ mlpack — это библиотека, которая может вычислять KDE с использованием множества различных ядер. Она позволяет устанавливать допуск ошибок для более быстрых вычислений. Доступны интерфейсы Python и R.
Math.NET Numerics — это библиотека с открытым исходным кодом для численных вычислений на языке C# и F# , которая включает оценку плотности ядра.
В CrimeStat оценка плотности ядра реализована с использованием пяти различных функций ядра – нормальной, равномерной, кварковой, отрицательной экспоненциальной и треугольной. Доступны как одноядерные, так и двухядерные процедуры оценки плотности. Оценка плотности ядра также используется при интерполяции процедуры Head Bang, при оценке двумерной функции плотности Journey-to-crime и при оценке трехмерной байесовской оценки Journey-to-crime.
В ELKI функции плотности ядра можно найти в пакетеde.lmu.ifi.dbs.elki.math.statistics.kernelfunctions
В продуктах ESRI управление отображением плотности ядра осуществляется из набора инструментов Spatial Analyst и использует ядро Quartic (двухвесовое).
В gnuplot оценка плотности ядра реализована с помощью smooth kdensityопции, файл данных может содержать вес и полосу пропускания для каждой точки, или полоса пропускания может быть установлена автоматически [28] в соответствии с «правилом Сильвермана» (см. выше).
В Haskell плотность ядра реализована в пакете статистики.
В IGOR Pro оценка плотности ядра реализована с помощью StatsKDEоперации (добавлено в Igor Pro 7.00). Пропускная способность может быть указана пользователем или оценена с помощью Silverman, Scott или Bowmann и Azzalini . Типы ядра: Epanechnikov, Bi-weight, Tri-weight, Triangular, Gaussian и Rectangular.
В Java пакет машинного обучения Weka предоставляет, среди прочего, weka.estimators.KernelEstimator.
В JavaScript пакет визуализации D3.js предлагает пакет KDE в своем пакете science.stats.
В JMP платформа Graph Builder использует оценку плотности ядра для предоставления контурных диаграмм и областей высокой плотности (HDR) для двумерных плотностей, а также скрипичных диаграмм и HDR для одномерных плотностей. Ползунки позволяют пользователю изменять полосу пропускания. Двумерные и одномерные оценки плотности ядра также предоставляются платформами Fit Y by X и Distribution соответственно.
В Julia оценка плотности ядра реализована в пакете KernelDensity.jl.
В KNIME можно генерировать и строить графики распределений плотности ядра 1D и 2D с использованием узлов из вклада сообщества Vernalis , например, 1D Kernel Density Plot и других. Базовая реализация написана на Java .
В MATLAB оценка плотности ядра реализована через ksdensityфункцию (Statistics Toolbox). Начиная с версии MATLAB 2018a, можно указать как полосу пропускания, так и сглаживатель ядра, включая другие параметры, такие как указание диапазона плотности ядра. [29] В качестве альтернативы, бесплатный программный пакет MATLAB, реализующий метод автоматического выбора полосы пропускания [6], доступен на MATLAB Central File Exchange для
1-мерные данные
2-мерные данные
n-мерные данные Бесплатный набор инструментов MATLAB с реализацией ядерной регрессии, ядерной оценки плотности, ядерной оценки функции риска и многих других доступен на этих страницах (этот набор инструментов является частью книги [30] ).
В системе Mathematica численная оценка плотности ядра реализуется с помощью функции SmoothKernelDistribution[31] , а символьная оценка реализуется с использованием функции KernelMixtureDistribution[32], обе из которых обеспечивают управляемую данными полосу пропускания.
В Minitab Королевское химическое общество создало макрос для оценки плотности ядра на основе Технического резюме 4 Комитета по аналитическим методам. [33]
В библиотеке NAG оценка плотности ядра реализована с помощью g10baпроцедуры (доступной как в версиях библиотеки на языке Fortran [34] , так и в версии библиотеки на языке C [35] ).
В Nuklei методы плотности ядра C++ фокусируются на данных из специальной евклидовой группы .
В Octave оценка плотности ядра реализована с помощью kernel_densityопции (пакет эконометрики).
В Origin двумерный график плотности ядра можно построить из пользовательского интерфейса, а две функции, Ksdensity для одномерного пространства и Ks2density для двумерного пространства, можно использовать из кода LabTalk, Python или C.
В Perl реализацию можно найти в модуле Statistics-KernelEstimation.
В PHP реализацию можно найти в библиотеке MathPHP
В Python существует множество реализаций: модуль pyqt_fit.kde в пакете PyQt-Fit, SciPy ( scipy.stats.gaussian_kde), Statsmodels ( KDEUnivariateи KDEMultivariate) и scikit-learn ( KernelDensity) (см. сравнение [36] ). KDEpy поддерживает взвешенные данные, а его реализация FFT на порядки быстрее, чем у других реализаций. Обычно используемая библиотека pandas [1] предлагает поддержку построения графиков kde с помощью метода plot ( df.plot(kind='kde')[2]). Пакет getdist для взвешенных и коррелированных выборок MCMC поддерживает оптимизированную полосу пропускания, граничную коррекцию и методы более высокого порядка для одномерных и двумерных распределений. Одним из новых используемых пакетов для оценки плотности ядра является seaborn ( import seaborn as sns, sns.kdeplot()). [37] Также существует реализация KDE на GPU. [38]
В R она реализована через densityбазовое распределение, а bw.nrd0функция используется в пакете статистики, эта функция использует оптимизированную формулу из книги Сильвермана. bkdeв библиотеке KernSmooth, ParetoDensityEstimationв библиотеке DataVisualizations (для оценки плотности распределения Парето), kdeв библиотеке ks dkdenи dbckdenв библиотеке evmix (последняя для оценки плотности ядра с поправкой на границу для ограниченной поддержки), npudensв библиотеке np (числовые и категориальные данные ), sm.densityв библиотеке sm. Для реализации функции kde.R, которая не требует установки каких-либо пакетов или библиотек, см. kde.R. Библиотека btb, предназначенная для городского анализа, реализует оценку плотности ядра через kernel_smoothing.
В SASproc kde может использоваться для оценки одномерных и двумерных ядерных плотностей .
В Stata это реализовано через kdensity; [40] например histogram x, kdensity. В качестве альтернативы доступен бесплатный модуль Stata KDENS [41], позволяющий пользователю оценивать одномерные или двумерные функции плотности.
В Swift это реализовано с помощью SwiftStats.KernelDensityEstimationбиблиотеки статистики с открытым исходным кодом SwiftStats.
Смотрите также
На Викискладе есть медиафайлы по теме «Оценка плотности ядра» .
Хердле, Мюллер, Сперлих, Верватц, Непараметрические и полупараметрические методы , Springer-Verlag Berlin Heidelberg 2004, стр. 39–83.
Ссылки
^ ab Rosenblatt, M. (1956). «Замечания о некоторых непараметрических оценках функции плотности». Анналы математической статистики . 27 (3): 832–837. doi : 10.1214/aoms/1177728190 .
^ Епанечников, ВА (1969). «Непараметрическая оценка многомерной плотности вероятности». Теория вероятностей и ее приложения . 14 : 153–158. doi :10.1137/1114019.
^ Wand, MP; Jones, MC (1995). Сглаживание ядра . Лондон: Chapman & Hall/CRC. ISBN978-0-412-55270-0.
^ abcd Ботев, Здравко (2007). Непараметрическая оценка плотности с помощью диффузионного смешивания (технический отчет). Университет Квинсленда.
^ Скотт, Д. (1979). «Об оптимальных и основанных на данных гистограммах». Biometrika . 66 (3): 605–610. doi :10.1093/biomet/66.3.605.
^ Парк, БУ; Маррон, Дж. С. (1990). «Сравнение селекторов пропускной способности, управляемых данными». Журнал Американской статистической ассоциации . 85 (409): 66–72. CiteSeerX 10.1.1.154.7321 . doi :10.1080/01621459.1990.10475307. JSTOR 2289526.
^ Парк, БУ; Турлах, БА (1992). «Практическая производительность нескольких селекторов полосы пропускания, управляемых данными (с обсуждением)». Computational Statistics . 7 : 251–270.
^ Cao, R.; Cuevas, A.; Manteiga, WG (1994). «Сравнительное исследование нескольких методов сглаживания при оценке плотности». Computational Statistics and Data Analysis . 17 (2): 153–176. doi :10.1016/0167-9473(92)00066-Z.
^ Джонс, MC; Маррон, JS; Шитер, SJ (1996). «Краткий обзор выбора полосы пропускания для оценки плотности». Журнал Американской статистической ассоциации . 91 (433): 401–407. doi :10.2307/2291420. JSTOR 2291420.
^ Sheather, SJ (1992). «Производительность шести популярных методов выбора полосы пропускания на некоторых реальных наборах данных (с обсуждением)». Computational Statistics . 7 : 225–250, 271–281.
^ Агарвал, Н.; Алуру, Н. Р. (2010). «Управляемый данными стохастический подход к коллокации для количественной оценки неопределенности в МЭМС» (PDF) . Международный журнал численных методов в инженерии . 83 (5): 575–597. Bibcode : 2010IJNME..83..575A. doi : 10.1002/nme.2844. S2CID 84834908.
^ Сюй, С.; Янь, З.; Сюй, С. (2015). «Оценка распределения вероятности скорости ветра методом плотности ядра на основе диффузии». Исследования электроэнергетических систем . 121 : 28–37. Bibcode : 2015EPSR..121...28X. doi : 10.1016/j.epsr.2014.11.029.
^ Ботев, З.И.; Гротовский, Дж.Ф.; Кроезе, Д.П. (2010). «Оценка плотности ядра с помощью диффузии». Annals of Statistics . 38 (5): 2916–2957. arXiv : 1011.2602 . doi : 10.1214/10-AOS799. S2CID 41350591.
^ ab Sheather, SJ; Jones, MC (1991). «Надежный метод выбора полосы пропускания на основе данных для оценки плотности ядра». Журнал Королевского статистического общества, серия B. 53 ( 3): 683–690. doi :10.1111/j.2517-6161.1991.tb01857.x. JSTOR 2345597.
^ Рудемо, М. (1982). «Эмпирический выбор гистограмм и ядерных оценок плотности». Scandinavian Journal of Statistics . 9 (2): 65–78. JSTOR 4615859.
^ Боуман, AW (1984). «Альтернативный метод перекрестной проверки для сглаживания оценок плотности». Biometrika . 71 (2): 353–360. doi :10.1093/biomet/71.2.353.
^ Холл, П.; Маррон, Дж. С.; Парк, Б. У. (1992). «Сглаженная перекрестная проверка». Теория вероятностей и смежные области . 92 : 1–20. doi : 10.1007/BF01205233 . S2CID 121181481.
^ Вахба, Г. (1975). «Оптимальные свойства сходимости методов переменного узла, ядра и ортогональных рядов для оценки плотности». Annals of Statistics . 3 (1): 15–29. doi : 10.1214/aos/1176342997 .
^ Бух-Ларсен, TINE (2005). «Оценка плотности ядра для распределений с тяжелыми хвостами с использованием преобразования Чамперноуна». Статистика . 39 (6): 503–518. CiteSeerX 10.1.1.457.1544 . doi :10.1080/02331880500439782. S2CID 219697435.
^ ab Silverman, BW (1986). Оценка плотности для статистики и анализа данных . Лондон: Chapman & Hall/CRC. стр. 45. ISBN978-0-412-24620-3.
^ Чен, Йен-Чи; Дженовезе, Кристофер Р.; Вассерман, Ларри (2016). «Комплексный подход к кластеризации мод». Электронный журнал статистики . 10 (1): 210–241. arXiv : 1406.1780 . doi : 10.1214/15-ejs1102 . ISSN 1935-7524.
^ Chazal, Frédéric; Fasy, Brittany Terese; Lecci, Fabrizio; Rinaldo, Alessandro; Wasserman, Larry (2014). "Стохастическая сходимость ландшафтов и силуэтов с сохранением". Труды тридцатого ежегодного симпозиума по вычислительной геометрии . Том 6. Нью-Йорк, Нью-Йорк, США: ACM Press. С. 474–483. doi :10.1145/2582112.2582128. ISBN978-1-4503-2594-3. S2CID 6029340.
^ Фукунага, К.; Хостетлер, Л. (январь 1975 г.). «Оценка градиента функции плотности с приложениями в распознавании образов». Труды IEEE по теории информации . 21 (1): 32–40. doi :10.1109/tit.1975.1055330. ISSN 0018-9448.
^ Yizong Cheng (1995). «Сдвиг среднего, поиск моды и кластеризация». Труды IEEE по анализу шаблонов и машинному интеллекту . 17 (8): 790–799. CiteSeerX 10.1.1.510.1222 . doi :10.1109/34.400568. ISSN 0162-8828.
^ Команичиу, Д.; Меер, П. (май 2002 г.). «Сдвиг среднего: надежный подход к анализу пространства признаков». Труды IEEE по анализу шаблонов и машинному интеллекту . 24 (5): 603–619. doi :10.1109/34.1000236. ISSN 0162-8828. S2CID 691081.
^ Janert, Philipp K (2009). Gnuplot в действии: понимание данных с помощью графиков . Коннектикут, США: Manning Publications. ISBN978-1-933988-39-9.См. раздел 13.2.2 « Оценки плотности ядра » .
^ "Оценка функции сглаживания ядра для одномерных и двумерных данных - MATLAB ksdensity". www.mathworks.com . Получено 2020-11-05 .
^ Горова, И.; Колачек Ю.; Зелинка, Дж. (2012). Ядерное сглаживание в MATLAB: Теория и практика ядерного сглаживания . Сингапур: Мировое научное издательство. ISBN978-981-4405-48-5.
^ "SmoothKernelDistribution—Документация по языку Wolfram". reference.wolfram.com . Получено 2020-11-05 .
^ "KernelMixtureDistribution—Документация по языку Wolfram". reference.wolfram.com . Получено 2020-11-05 .
^ "Программное обеспечение для расчета плотности ядер". www.rsc.org . Получено 2020-11-05 .
^ Группа числовых алгоритмов. «Обычный документ библиотеки NAG: nagf_smooth_kerndens_gauss (g10baf)» (PDF) . Руководство по библиотеке НАГ, Марк 23 . Проверено 16 февраля 2012 г.
^ Группа числовых алгоритмов. «Обычный документ библиотеки NAG: nag_kernel_density_estim (g10bac)» (PDF) . Руководство по библиотеке NAG, Марк 9 . Архивировано из оригинала (PDF) 24 ноября 2011 г. Проверено 16 февраля 2012 г.
^ Вандерплас, Джейк (2013-12-01). "Оценка плотности ядра в Python" . Получено 2014-03-12 .
^ "Kde-gpu: Мы реализовали плотность ядра nadaraya waston и условную оценку вероятности ядра с использованием cuda через cupy. Это намного быстрее, чем версия cpu, но для этого требуется GPU с большим объемом памяти".
^ "Базовая статистика - API на основе RDD - Документация Spark 3.0.1". spark.apache.org . Получено 2020-11-05 .
^ "kdensity — Одномерная ядерная оценка плотности" (PDF) . Руководство Stata 15 .
^ Джан, Бен (2008-05-26), "KDENS: Stata module for univariate kernel density estimate", Statistical Software Components , Boston College Department of Economics , получено 2022-10-15
Внешние ссылки
Введение в оценку плотности ядра. Краткое руководство, в котором обосновывается, что оценка плотности ядра является улучшением по сравнению с гистограммами.
Оптимизация пропускной способности ядра Бесплатный онлайн-инструмент, который генерирует оптимизированную оценку плотности ядра.
Бесплатное онлайн-программное обеспечение (калькулятор) вычисляет оценку плотности ядра для ряда данных в соответствии со следующими ядрами: Гауссово, Епанечникова, прямоугольное, треугольное, двухвесовое, косинусное и оптокосинусное.
Applet оценки плотности ядра Онлайн-интерактивный пример оценки плотности ядра. Требуется .NET 3.0 или более поздняя версия.