2016-04-12 16 views
1

görev stat_function kullanılarak normal dağılım eğrisi: eklenmesini 1. beraberlik, x = Veri/y = yoğunluk histogramı - belirli bir veri kümesi için 2. çekme dağılımı eğrisi yapılır - yapılması 3. Bu veri kümesi için mükemmel normal dağılım eğrisini çizin (kırmızı çizgi) - problemi Problemin 2. durum göstergesinde olduğunu varsayalım.ggplot: Mevcut histogram ve dağıtma tabakaları I gerçekleştirmek için gereken

Kod çalışma mümkün olduğu/herhangi hazırlıkları o w: Ben İşte yaklaşık gerekenler

ne elde İşte

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 

, mükemmel norm. dağılım

+1

ben ilk grafikte kırmızı eğri demek yaklaşık 22 ve sd = 1. olsun ile normal yoğunluk olduğunu söyleyebilirim ne için soruyorsun Başka ne ihtiyacın var. – Roland

+0

iyi bir nokta, keskin kenar bana biraz karıştı. Muhtemelen her iki eğriyi z-skoruna ortalama = 0 ile dönüştürmek daha mantıklıdır, daha sonra 2 eğri arasındaki fark daha açık olacaktır. – funykcheff

+0

Veritabanının ikinci kısmı gerekli değildir, '' c (runif (30,50,1))) '' NaN'' bir sütun oluşturur – PatrickT

cevap

1

Normal dağılımda 2 parametre vardır: ortalama ve standart sapması. Burada sadece dnorm için ortalama sağlayın, bu yüzden sd = 1 varsayar.

A sağladığınız kod versiyonudur düzeltilmiş:

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