2017-07-19 7 views
1

Ich habe ein Diagramm in R, das ich versuche, in ggplot2 zu replizieren. Ich habe den folgenden Code:Wie man eine Gammaverteilung in ggplot2 plottet

theta = seq(0,1,length=500) 
post <- dgamma(theta,0.5, 1) 
plot(theta, post, type = "l", xlab = expression(theta), ylab="density", lty=1, lwd=3) 

enter image description here

Ich habe versucht, diesen Plan in ggplot2 zu replizieren und das ist die nächste, die ich bekommen konnte.

df=data_frame(post,theta) 
ggplot(data=df,aes(x=theta))+ 
    stat_function(fun=dgamma, args=list(shape=1, scale=.5)) 

enter image description here

Antwort

4

Sie haben Ihre Parameter nicht richtig zusammenpassen. Die Unterschrift von dgamma ist

dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE) 

so, wenn Sie

dgamma(theta, 0.5, 1) 

nennen, die

dgamma(theta, shape=0.5, rate=1) 

ist, das bedeutet, dass Sie die ggplot als

ggplot(data=df,aes(x=theta))+ 
    stat_function(fun=dgamma, args=list(shape=0.5, rate=1)) 

y übersetzen würde Sie können auch die y-Grenzen anpassen, wenn Sie mit scale_y_continuous(limits=c(0,12)) oder etwas Ähnliches mögen.

+0

Danke für die Hilfe! – Alex

Verwandte Themen