2016-04-12 4 views
1

私は達成する必要があるタスクは、既存のヒストグラムと分布層にstat_functionを使用して正規分布曲線を追加3.このデータセットの完全正規分布曲線を描く(赤線) - 問題問題は2番目のstat_functionにあると仮定します。ggplot: 1.描画X =データ/ Y =濃度ヒストグラム - 指定されたデータセットの 2ドロー分布曲線を行わ - を行う:

コードが実行可能なされたW/O任意の準備:ここでは

data <- data.frame(c(runif(30,1,50)),c(runif(30,50,1))) 
g.data <- data[,1] 

graph <- ggplot(data, aes(g.data)) 
graph <- graph + 
geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') + 
labs(x = 'Data', y ='Density') + 
stat_function(fun = dnorm, args = list(mean = mean(g.data, na.rm = T), 
sd = sd(g.data, na.rm =T)), colour ='black', size =1) + 
theme(legend.position = 'none') + 
stat_function(fun = dnorm, colour = "red", args = list(mean = mean(g.data))) 
graph 

私はおよそ、完璧な規範を必要とするものをここで

何を得ます。分布

+1

私はあなたの最初のグラフの赤い曲線が意味する約22とSD = 1。あなたが得ると、通常の密度であると言うでしょうあなたが求めているもの。他に何が必要なのかは不明です。 – Roland

+0

それは良い点ですが、鋭いエッジは私を少し混乱させました。おそらく両方の曲線を平均= 0のzスコア・ウェイに変換する方が理にかなっています.2つの曲線の差がはるかに明確になります。 – funykcheff

+0

データフレームの第2部分は不要です。 '' c(runif(30,50,1)) '' '、' 'NaN''の列を作成します。 – PatrickT

答えて

1

正規分布には、平均と標準偏差の2つのパラメータがあります。ここでは、dnormへの平均値のみを指定するので、sd = 1と仮定します。

Aは、あなたが提供するコードのバージョンがある修正:

data <- data.frame(c(runif(30,1,50))) 
ggplot(data, aes(data[,1])) + 
    geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') + 
    labs(x = 'Data', y = 'Density') + 
    stat_function(fun = dnorm, 
     args = list(mean = mean(data[,1], na.rm = TRUE), 
        sd = sd(data[,1], na.rm = TRUE)), 
     colour = 'black', size = 1) 

enter image description here

関連する問題