У меня есть набор данных с большим количеством нулей, который выглядит следующим образом:
set.seed(1)
x <- c(rlnorm(100),rep(0,50))
hist(x,probability=TRUE,breaks = 25)
Я хотел бы нарисовать линию для его плотности, но density()
функция использует движущееся окно, которое вычисляет отрицательные значения х.
lines(density(x), col = 'grey')
Есть density(... from, to)
аргументы, но они, похоже, только усекают вычисления, а не изменяют окно, так что плотность в 0 согласуется с данными, как видно на следующем графике:
lines(density(x, from = 0), col = 'black')
(если бы интерполяция была изменена, я ожидал бы, что черная линия будет иметь более высокую плотность в 0, чем серая линия)
Есть ли альтернативы этой функции, которые обеспечили бы лучший расчет плотности в нуле?
источник
Я согласен с Робом Хиндманом, что вам нужно разбираться с нулями отдельно. Существует несколько методов оценки плотности ядра переменной с ограниченной поддержкой, в том числе «отражение», «перенормировка» и «линейная комбинация». Похоже, что они не были реализованы в
density
функции R , но доступны в пакете Бенна Яннаkdens
для Stata .источник
Другой вариант, когда у вас есть данные с логической нижней границей (например, 0, но могут быть и другие значения), когда вы знаете, что данные не опустятся ниже, а обычная оценка плотности ядра помещает значения ниже этой границы (или если у вас есть верхняя граница или оба) - использовать оценки logspline. Пакет logspline для R реализует их, и у функций есть аргументы для определения границ, поэтому оценка переходит к границе, но не выходит за пределы и все еще масштабируется до 1.
Существуют также методы (
oldlogspline
функция), которые будут учитывать цензуру интервалов, поэтому, если эти 0 не являются точными 0, а округлены, так что вы знаете, что они представляют значения от 0 до некоторого другого числа (например, предела обнаружения), тогда вы может дать эту информацию функции подгонки.Если дополнительные 0 являются истинными 0 (не округлены), тогда оценка шипа или точечной массы является лучшим подходом, но также может быть объединена с оценкой логплайна.
источник
Вы можете попробовать уменьшить пропускную способность (синяя линия для
adjust=0.5
),но, вероятно, KDE - не самый лучший метод для работы с такими данными.
источник