У меня есть некоторые данные, которые, как я предполагаю, исходят из распределения, и я пытаюсь оценить это распределение. Прямо сейчас я использую пакет KernSmooth в R с ядром Gaussian и использую функцию пакета dpik()
для автоматического выбора пропускной способности. (Я предполагаю, что он использует AMISE или сортировку, пожалуйста, дайте мне знать, есть ли лучший процесс автоматического выбора полосы пропускания) Однако меня интересует нахождение значения x, которое соответствует самому высокому пику в распределении. ..Это кажется мне очень простой вещью, и что-то, что я раньше откладывал как тривиальное, но, к моему разочарованию, я натыкаюсь на некоторые препятствия. Функция bkde()
в KernSmooth возвращает набор координат (x,y), которые отображают распределение, оцененное алгоритмом. Я знаю, что мог бы просто выполнить линейный поиск по данным, чтобы найти максимальное значение y, и мог бы просто получить соответствующее значение x, но, поскольку я пишу функцию, которая может часто вызываться в автоматизированном процессе, я чувствую, что это неэффективный. Особенно неэффективно, так как bkde()
возвращает много значений.
Моя другая идея заключалась в том, чтобы попытаться подобрать к ней кривую, взять производную и установить ее равной нулю, но это звучит так, как будто это может быть неэффективно. Может быть, здесь лучше использовать функцию density()
?
Пожалуйста, дайте мне знать, есть ли какой-либо эффективный способ для этого... На самом деле я планирую сделать небольшой вывод о дистрибутивах, которые я нахожу. Например, найти точки отсечки, чтобы отрезать определенный процент хвоста с обеих сторон (т.е. доверительные интервалы) и найти ожидаемое значение. Мой смутный план сейчас состоит в том, чтобы использовать некоторые методы Монте-Карло или попытаться извлечь из дистрибутива, чтобы получить представление о областях с методами начальной загрузки. Мы будем очень признательны за любую помощь в любых методах выполнения любого из этих действий.