2012-09-17 9 views
5

stat_function()で関数をスーパーインポーズしようとしましたが、私は間違いを理解できません。この例では、見栄えの良いグラフを生成します。ggplotと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

が、私は期待通り、これは動作しません(あるいは、これは動作しません予想通り、私は言うべき対数正規密度を重ね合わしよう;):私はここで間違って何をやっている:

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

ので、ここで私のうまくいけば、簡単な質問ですね?私はこれが本当に簡単な問題だと思う。私はちょうど答えが見えない - 申し訳ありません。

+0

私はdesnsityが負になることができますどのように得ることはありません。 –

+0

あなたの問題の一部は 'log = TRUE'だと思います –

+0

@LucianoSelzerもちろんあなたは正しいと思いますが、' log = TRUE'引数で動作すると思っていましたが、Svenが簡単な方法を示しているので) – Seb

答えて

7

使用dlnorm、対数正規分布の密度関数:

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

ちょうどあなたの答えに走った。あなたが私の関連する質問を見ることができれば、私は感謝します(あなたがそれを見ていない場合に備えて):http://stackoverflow.com/q/25598485/2872891。ありがとうございました! –

関連する問題