плотность () Документация
trapz () Документация
Насколько я понимаю, площадь под кривой плотности равна 1 по определению, в противном случае это на самом деле не плотность.
Я писал код для создания GMM (модели гауссовой смеси) с некоторыми ограничениями и хотел сравнить вывод с моделью плотности. Я работаю с данными с большим количеством компонентов, некоторые из которых имеют очень узкие стандартные отклонения. Функция плотности () по умолчанию выглядела так, как будто она несколько сглаживала плотность моих эмпирических данных, поэтому я решил уменьшить пропускную способность. Плотность () включает параметр 'настроить', который, согласно документации, является коэффициентом пропускной способности ядер в плотности (). Я опустил значение до 0,1, а затем продолжил строить свой код моделирования. Когда пришло время протестировать модель, казалось, что она не может подняться до пика в данных. После долгого времени поиска ошибок в моем коде (не было очевидных после нескольких часов проверки и исправления) и переписывания алгоритма и получения того же результата, я протестировал область под кривой модели, которую я сгенерировал. Это было 1, но визуально намного ниже кривой, сгенерированной density(x = x, adjust = 0.1)
. Поэтому я решил проверить площадь под кривой плотности (). 6,28 для моих данных. Я был довольно удивлен этим - я сразу же отклонил идею, что AUC функции плотности () был чем-то отличным от 1.
Этот эффект повторяется с простой смесью на моем компьютере. Во-первых, пример, показывающий, что AUC для плотности образца составляет ~ 1 с параметром регулировки в 1.
require(stats)
require(pracma)
set.seed(1)
gaussianMix <- c(rnorm(n = 5000,
mean = -50,
sd = 50),
rnorm(n = 100000,
mean = 0,
sd = 10),
rnorm(n = 10000,
mean = 50,
sd = 100)
)
mixtureDensity <- density(x = gaussianMix,
adjust = 1)
plot(mixtureDensity)
area <- trapz(mixtureDensity$x,
mixtureDensity$y)
area
1.001025
Теперь с помощью и отрегулируйте параметр 0,1
require(stats)
require(pracma)
set.seed(1)
gaussianMix <- c(rnorm(n = 5000,
mean = -50,
sd = 50),
rnorm(n = 100000,
mean = 0,
sd = 10),
rnorm(n = 10000,
mean = 50,
sd = 100)
)
mixtureDensity <- density(x = gaussianMix,
adjust = 0.1)
plot(mixtureDensity)
area <- trapz(mixtureDensity$x,
mixtureDensity$y)
area
5.655676
Я что-то упускаю из виду? Почему коэффициент регулировки полосы пропускания приводит к тому, что AUC намного больше 1? Это достаточно легко объяснить, разделив вывод параметра density () $ y на вычисленную площадь под кривой, но было очень неприятно понять, что я смотрю на кривую «плотности» с AUC более 5.