3

コンテキスト: いくつかのデータがあり、以下を実行したい:

  1. それらのヒストグラムをプロットする
  2. カーネル密度を追加する
  3. 「理論密度」を追加
  4. 2. と 3. を区別する凡例を追加します。

検討:

X <- rnorm(1000,0,1)
Y <- (X^2-1)/2
ggplot(as.data.frame(Y), aes(x=Y)) + 
    geom_histogram(aes(y=..density..),      
                   binwidth=.2,
                   colour="black", fill="white") +
    geom_density(alpha=.2, fill="#FF6666") 

ここに画像の説明を入力

これで 1. と 2. は達成できますが、どうすれば 3. と 4. を達成できますか? プロットしたい関数を書きました:

myfunc <- function(x) {
    2*exp(-x-0.5)/(sqrt(2*x+1)*sqrt(2*pi))
}

その他のコメント/批評は大歓迎です(私は学んでいます)

4

1 に答える 1

4

あなたのカスタム関数はそのドメインでうまく動作しないので、説明のために別の単純なものに置き換えました.

#Dummy data set for the legend
dat <- data.frame(x = rep(NA_integer_,2),
                  y = rep(NA_integer_,2),
                  grp = c('Theoretical','Estimated'))
ggplot(as.data.frame(Y), aes(x=Y)) + 
    geom_histogram(aes(y=..density..),      
                   binwidth=.2,
                   colour="black", fill="white") +
    geom_density(alpha=.2, fill="#FF6666",color = '#FF6666') + 
    stat_function(fun = function(x) exp(-x),colour = "blue") + 
    geom_point(data = dat,aes(x = x,y = y,color = grp)) + 
    scale_color_manual(name = "",values = c('#FF6666','blue'))

ここに画像の説明を入力

私は多少色をいじりましたが、必要に応じて微調整できます。凡例を行うためのよりクリーンな方法があるかもしれませんが、「NA とグループ化変数を含むデータ フレーム」は、この種のことに対する私の標準的な方法の一種です。

于 2012-10-18T13:58:01.907 に答える