ggplot密度函数不正确(Stata的正常百分比)

时间:2018-08-28 03:33:31

标签: r ggplot2 plot stata

我正在尝试复制历史正常百分比。问题在于密度图(或正态分布)完全不可用:

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 :(得分:3)

不熟悉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")

reprex package(v0.2.0)于2018-08-27创建。