Desidero aggiungere una linea di densità (in realtà una densità normale) a un istogramma.Aggiunta di una linea di densità a un istogramma con dati di conteggio in ggplot2
Supponiamo di avere i seguenti dati. Posso tracciare l'istogramma per 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)
posso aggiungere una linea di densità utilizzando:
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)))
Ma questo non è quello che in realtà voglio, desidera che questa linea di densità venga adattata ai dati del conteggio.
Ho trovato un post simile (HERE) che offriva una soluzione a questo problema. Ma non ha funzionato nel mio caso. Ho bisogno di un fattore di espansione arbitrario per ottenere ciò che voglio. E questo non è generalizzabile a tutti:
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))
eventuali indizi che posso usare per generalizzare questo
- primo a distribuzione normale,
- quindi a qualsiasi altro formato bin,
- e infine a qualsiasi altra distribuzione sarà molto utile.
Forse cercavi per le due immagini del grafico per essere lo stesso? Sembra che tu abbia caricato lo stesso due volte – arvi1000
Usa 'fitdistr (...)' nel pacchetto 'MASS' per adattare le distribuzioni. – jlhoward