2011-11-13 7 views
1

Possible en double:
ggplot2: Overlay histogram with density curveSuperposer une distribution normale sur un histogramme

désolé pour ce qui est probablement une question simple, mais j'ai un peu un problème.

J'ai créé un histogramme basé sur une distribution binomiale avec une moyenne de 0,65 et une densité de 0,015 avec 10000 échantillons. L'histogramme lui-même semble bien. Cependant, j'ai besoin de superposer une distribution normale par dessus (avec la même moyenne et la même déviation standard). Actuellement, j'ai ce qui suit:

qplot (x, données = prob, geom = "histogramme", binwidth = .05) + stat_function (geom = "ligne", fun = dnorm, arg = liste (moyenne = 0.65 , sd = 0,015))

Une distribution apparaît, mais c'est TINY. Cela est probablement dû au fait que le nombre moyen est de près de 2 000, tandis que la distribution normale est beaucoup plus petite. En termes simples, il n'est pas équipé des données comme le ferait automatiquement R. Existe-t-il un moyen de spécifier la ligne de la distribution normale pour s'adapter à l'histogramme, ou existe-t-il un moyen de manipuler l'histogramme pour qu'il corresponde à la distribution normale?

Merci d'avance.

+0

en double de http://stackoverflow.com/ questions/7182556/comment ajouter-gaussian-curve-to-histogram-created-with-qplot; http: // stackoverflow.com/questions/5688082/ggplot2-overlay-histogramme-avec-densité-courbe? –

Répondre

1

"La distribution est minuscule" car vous tracez une fonction de densité sur nombre. Vous devez utiliser la même métrique dans les deux parcelle, par exemple .:

je tente de générer des données pour votre exemple:

x <- rbinom(10000, 10, 0.15) 
prob <- data.frame(x=x/(mean(x)/0.65)) 

Et tracer à la fois comme fonctions de densité:

library(ggplot2) 
ggplot(prob, aes(x=x)) + geom_histogram(aes(y = ..density..), binwidth=.05) + stat_function(geom="line", fun=dnorm, arg=list(mean=0.65, sd=0.015)) 

enter image description here

+0

A travaillé parfaitement. Découvrir comment changer l'histogramme de compte en fonction de densité était l'étape magique que je ne pouvais pas comprendre. Merci! – user1044116

2

@ La réponse de daroczig est correcte à propos de la nécessité d'être cohérent dans les densités de traçage plutôt que compte, mais: Je vais avoir Vous avez du mal à voir comment vous avez réussi à obtenir un échantillon binomial avec ces propriétés. En particulier, la moyenne des binomiale est n*p, la variance est n*p*(1-p), l'écart-type est sqrt(n*p*(1-p)), donc ..

b.m <- 0.65 
b.sd <- 0.015 

Calculer la variance:

b.v <- b.sd^2 ## n*p*(1-p) 

Calculer p:

## (1-p) = b.v/(n*p) = b.v/b.m 
## p = 1-b.v/b.m 
b.p <- 1-b.v/b.m 

Calculer n:

## n = n*p/p = b.m/b.p 
b.n <- b.m/b.p 

Cela donne n=0.6502251, p=0.9996538 - donc je ne vois pas comment vous pouvez obtenir cette distribution binomiale sans n<1, à moins que je foiré l'algèbre ...

Questions connexes