Искам да добавя линия на плътност (всъщност нормална плътност) към хистограма.
Да предположим, че имам следните данни. Мога да начертая хистограмата по ggplot2
:
set.seed(123)
df <- data.frame(x = rbeta(10000, shape1 = 2, shape2 = 4))
ggplot(df, aes(x = x)) + geom_histogram(colour = "black", fill = "white",
binwidth = 0.01)
Мога да добавя линия на плътност, използвайки:
ggplot(df, aes(x = x)) +
geom_histogram(aes(y = ..density..),colour = "black", fill = "white",
binwidth = 0.01) +
stat_function(fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)))
Но това не е това, което всъщност искам, искам тази линия на плътност да бъде напасната към данните за преброяването.
Намерих подобна публикация (ТУК), който предложи решение на този проблем. Но в моя случай не проработи. Имам нужда от произволен фактор на разширение, за да получа това, което искам. И това изобщо не подлежи на обобщение:
ef <- 100 # Expansion factor
ggplot(df, aes(x = x)) +
geom_histogram(colour = "black", fill = "white", binwidth = 0.01) +
stat_function(fun = function(x, mean, sd, n){
n * dnorm(x = x, mean = mean, sd = sd)},
args = list(mean = mean(df$x), sd = sd(df$x), n = ef))
Всички улики, които мога да използвам, за да обобщя това
- първо към нормално разпределение,
- след това към всеки друг размер на контейнера,
- и накрая за всяко друго разпространение ще бъде много полезно.
fitdistr(...)
в пакетаMASS
, за да паснете на дистрибуциите. - person jlhoward   schedule 27.12.2014