2012-09-17 11 views
5

Cerco di sovrapporre una funzione tramite stat_function() in ggplot ma non riesco a capire il mio errore. Questo esempio produce un bel terreno alla ricerca:Sovrapposizione di una densità normale del registro in ggplot e stat_function()

data <- data.frame(x=rt(10000, df=7)) 

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
    stat_function(fun =dnorm, size=1, color='gray', args=list()) + 
    opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

ma quando provo a sovrapporre una densità di log-normale questo non funziona come previsto (o dovrei dire come ci si aspetta questo non funziona ;):

data <- data.frame(x=rf(10000, df1=7, df2=120)) 

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
stat_function(fun =dnorm, size=1, color='gray', args=list(log=TRUE)) + 
opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

quindi, ecco la mia spera semplice domanda: che cosa sto facendo male qui? Immagino che questo sia un problema davvero semplice, ma non vedo la risposta - scusa.

+0

Non capisco come un desnsity può essere negativo. –

+0

Penso che parte del tuo problema sia 'log = TRUE' –

+0

@LucianoSelzer ovviamente avevi ragione - e pensavo che avrebbe funzionato tramite l'argomento' log = TRUE' ma come Sven ha dimostrato che c'è un modo più semplice;) – Seb

risposta

7

Usa dlnorm, la funzione di densità della distribuzione log-normale:

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
    stat_function(fun = dlnorm, size=1, color='gray') + 
    opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

+0

Hai appena trovato la tua risposta. Ti sarei grato se tu potessi dare un'occhiata alla mia domanda correlata (nel caso non l'avessi visto): http://stackoverflow.com/q/25598485/2872891. Grazie! –

Problemi correlati