Я часто использую графики плотности ядра, чтобы проиллюстрировать распределения. Их легко и быстро создать в R, например:
set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))
Что дает мне этот красивый маленький PDF:
Я хочу заштриховать область под PDF от 75 до 95 процентилей. Точки легко вычислить с помощью quantile
функции:
q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)
Но как мне заштриховать область между q75
и q95
?
Ответы:
Что касается
polygon()
функции, см. Ее страницу справки, и я думаю, что у нас здесь тоже были похожие вопросы.Вам нужно найти индекс значений квантилей, чтобы получить фактические
(x,y)
пары.Изменить: вот так:
Вывод (добавлен JDL)
источник
demo(graphics)
вовремя еще до рассвета, так что время от времени попадаются. Та же идея для затенения регрессии NBER и т. Д.Другое решение:
Результат:
источник
Расширенное решение:
Если вы хотите заштриховать оба хвоста (скопировать и вставить код Дирка) и использовать известные значения x:
Результат:
источник
На этот вопрос нужен
lattice
ответ. Вот очень простой, просто адаптируя метод, используемый Дирком и другими:источник
Вот еще один
ggplot2
вариант, основанный на функции, которая аппроксимирует плотность ядра при исходных значениях данных:Использование исходных данных (вместо создания нового фрейма данных со значениями x и y оценки плотности) дает преимущество работы с фасетными графиками, где значения квантилей зависят от переменной, по которой группируются данные:
Используемый код
Создано 13.07.2018 пакетом REPEX (v0.2.0).
источник