2012-09-17 14 views
5

Intento superponer una función a través de stat_function() en ggplot pero no puedo entender mi error. este ejemplo produce una parcela buscando:Superposición de una densidad log-normal en ggplot y 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

pero cuando intento de superponer una densidad logarítmica normal esto no funciona como se espera (o mejor dicho, como se esperaba esto no funciona ;):

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

así que aquí está mi pregunta es de esperar sencilla: ¿qué estoy haciendo mal aquí? Supongo que este es un problema realmente simple. Simplemente no veo la respuesta, lo siento.

+0

No entiendo cómo un desnsity puede ser negativo. –

+0

Creo que parte de tu problema es 'log = TRUE' –

+0

@LucianoSelzer, por supuesto, tenías razón, y pensé que funcionaría a través del argumento' log = TRUE' pero como Sven demostró que hay una manera más fácil;) – Seb

Respuesta

7

Uso dlnorm, la función de densidad de la distribución logarítmica normal:

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

Acabo de encontrar tu respuesta. Le agradecería si pudiera echar un vistazo a mi pregunta relacionada (en caso de que no la haya visto): http://stackoverflow.com/q/25598485/2872891. ¡Gracias! –

Cuestiones relacionadas