Chcę dodać linię gęstości (normalny) do gęstości faktycznie histogramu.Dodawanie linii gęstości do histogram z danych liczy się w ggplot2
Załóżmy, że mam następujące dane. mogę wykreślić histogram przez 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)
mogę dodać linię gęstości przy użyciu:
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)))
Ale to nie jest to, co faktycznie chcę, ja aby ta linia gęstości była dopasowana do danych liczbowych.
znalazłem podobny post (HERE), który zaproponował rozwiązanie tego problemu. Ale nie zadziałało w moim przypadku. Potrzebuję arbitralnego współczynnika ekspansji, aby uzyskać to, czego chcę. I nie jest to uogólnić na wszystkich:
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))
Wszelkie wskazówki, które można używać do uogólnienia tego
- pierwszy do rozkładu normalnego,
- następnie do każdej innej wielkości bin,
- i na końcu do każdej innej dystrybucji będzie bardzo pomocne.
Czy chodziło Ci o dwa obrazy wykres być takie same? Przesłany wygląda ten sam jeden dwukrotnie – arvi1000
Użyj 'fitdistr (...)' 'w pakiecie MASS' celu dopasowania rozkładów. – jlhoward