密度値のヒストグラムを作成し、密度関数の曲線(密度推定値ではなく)でオーバーレイしようとしています。
シンプルで標準的な通常の例を使用して、いくつかのデータを次に示します。
_x <- rnorm(1000)
_
できます:
_q <- qplot( x, geom="histogram")
q + stat_function( fun = dnorm )
_
しかし、これは密度ではなく頻度でヒストグラムのスケールを提供します。 _..density..
_を使用すると、ヒストグラムで適切なスケールを取得できます。
_q <- qplot( x,..density.., geom="histogram")
q
_
しかし今、これはエラーを与えます:
_q + stat_function( fun = dnorm )
_
表示されていないものはありますか?
別の質問は、curve()
のような関数の曲線をプロットする方法がありますが、レイヤーとしてではありませんか?
どうぞ!
# create some data to work with
x = rnorm(1000);
# overlay histogram, empirical density and normal density
p0 = qplot(x, geom = 'blank') +
geom_line(aes(y = ..density.., colour = 'Empirical'), stat = 'density') +
stat_function(fun = dnorm, aes(colour = 'Normal')) +
geom_histogram(aes(y = ..density..), alpha = 0.4) +
scale_colour_manual(name = 'Density', values = c('red', 'blue')) +
theme(legend.position = c(0.85, 0.85))
print(p0)
Ramnathの答えに対するより基本的な代替案で、観測された平均と標準偏差を渡し、ggplot
の代わりにqplot
を使用します。
df <- data.frame(x = rnorm(1000, 2, 2))
# overlay histogram and normal density
ggplot(df, aes(x)) +
geom_histogram(aes(y = stat(density))) +
stat_function(
fun = dnorm,
args = list(mean = mean(df$x), sd = sd(df$x)),
lwd = 2,
col = 'red'
)
_ggplot2
_からgeom_density()
を使用するのはどうですか?そのようです:
_df <- data.frame(x = rnorm(1000, 2, 2))
ggplot(df, aes(x)) + geom_histogram(aes(y=..density..)) + geom_density(col = "red")
_