Ich möchte zu einem Histogramm eine Dichtezeile (eine normale Dichte tatsächlich) hinzufügen.Hinzufügen einer Dichtezeile zu einem Histogramm mit Zähldaten in ggplot2
Angenommen, ich habe die folgenden Daten. Ich kann das Histogramm Plot von 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)
ich mit einer Dichte Zeile hinzufügen:
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)))
Aber das ist nicht das, was ich wirklich will, ich möchte, dass diese Dichtezeile an die Zähldaten angepasst wird.
Ich fand einen ähnlichen Beitrag (HERE), der eine Lösung für dieses Problem bot. Aber in meinem Fall hat es nicht funktioniert. Ich brauche einen willkürlichen Expansionsfaktor, um zu bekommen, was ich will. Und das ist gar nicht verallgemeinerbar:
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))
Irgendwelche Hinweise, die ich verwenden kann dieses
- ersten Normalverteilung zu verallgemeinern,
- dann auf andere Binabmessung,
- und schließlich zu jeder anderen Verteilung wird sehr hilfreich sein.
Meinten Sie für die beiden Schaubilder die gleiche sein? Sieht so aus, als hättest du das selbe zweimal hochgeladen – arvi1000
Verwende 'fitdistr (...)' im 'MASS'-Paket, um die Distributionen anzupassen. – jlhoward