Неправильная функция плотности ggplot (нормальный процент от Stata) - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь повторить исторический нормальный процент. Проблема в том, что график плотности (или нормальное распределение) полностью отключен:

library(scales)
library(ggplot2)
a <- data.frame(rnorm(100,0,1))
colnames(a) <- c("test")
ggplot(a,aes(test)) +
geom_histogram(aes(y=(..count..)/sum(..count..))) +  
scale_y_continuous(labels=scales::percent) +
stat_function(fun='dnorm')

Photo

Линия должна быть намного ближе к графику, но вместо этого она масштабируется примерно в 10 раз.

1 Ответ

0 голосов
/ 28 августа 2018

Не знаком с этой командой от Stata, но вы этого хотите? Плотность с высотой стержня масштабируется так, чтобы общая площадь объединялась в 1, как нормальная кривая, которую вы показали. Причина, по которой ваша попытка не сработала, заключается в том, что вы не учли ширину корзины; каждая ячейка добавляет площадь ширины, умноженную на количество. Вы можете сделать это вручную, если вы установите ширину корзины, или вы можете просто использовать вычисленную переменную ..density...

library(ggplot2)
set.seed(12345)
a <- data.frame(test = rnorm(100, 0, 1))
ggplot(a, aes(x = test)) +
  geom_histogram(aes(y = ..count.. / (sum(..count..) * 0.2)), binwidth = 0.2) +
  scale_y_continuous(labels = scales::percent) +
  stat_function(fun = "dnorm")

ggplot(a, aes(x = test)) +
  geom_histogram(aes(y = ..density..), binwidth = 0.2) + 
  scale_y_continuous(labels = scales::percent) +
  stat_function(fun = "dnorm")

Создано в 2018-08-27 пакетом Представ (v0.2.0).

...