3

Rでヒストグラムをプロットし、それをさまざまな分布の密度で重ねようとしていました。通常のヒストグラムではうまく機能しましたが、ggplot2 パッケージでは機能しません。

a <- dataset$age

通常のヒストグラムのコードは次のとおりです。

Histogram_for_age <- hist(a, prob=T, xlim=c(0,80), ylim=c(0,0.055), main="Histogram for age with density lines", xlab="age") 

mean <- mean(a)
sd <- sd(a)

そして今、密度の線/曲線:

lines(density(dataset$age), col="blue", lwd=2, lty=1)
curve(dnorm(x, mean = mean, sd = sd), add = T, col="red", lwd=2, lty=2)
curve(dgamma(x, shape =mean^2/sd^2, scale = sd^2/mean), add = T, col="goldenrod", lwd=2, lty=3) 

そして伝説:

legend("topright", 
    c("actual distribution of age","gaussian distribution", "gamma distribution"),  
   lty=c(1,2,3),  
   lwd=c(2,2,2),col=c("blue","red","goldenrod"), cex=0.65) 

これは私がこれまでにggplot2で試したことです:

ggplot(dataset, aes(x=age)) + 
geom_histogram(aes(y=..density..),
             colour="black", fill="white") +
geom_density(alpha=.2, fill="lightblue") + stat_function(fun = dgamma, shape=shape)

lines() および curve() 引数と同等の ggplot2 引数は何ですか?

4

1 に答える 1

6

次のようstat_densityに代わりに使用します。geom_density

ggplot(dataset, aes(x=age)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="white") +
  stat_density(colour="blue", geom="line", position="identity") +
  stat_function(fun=dnorm, args=list(mean=mean(dataset_with_victims$TV_Alter), sd=sd(dataset_with_victims$TV_Alter))) + 
  stat_function(fun=dgamma, args=list(shape=mean(dataset_with_victims$TV_Alter)^2/sd(dataset_with_victims$TV_Alter)^2, scale=sd(dataset_with_victims$TV_Alter)^2/mean(dataset_with_victims$TV_Alter)))
于 2014-04-28T08:00:36.747 に答える