R ve ggplot2 kullanarak bir dağıtım CDF'si çizmek istiyorum. Ancak, Y eksenini düz bir çizgi elde etmek için dönüştürdikten sonra CDF fonksiyonunu çizerken zorluklar buluyorum. Bu tür bir çizim, Gumbel kağıt çizimlerinde sıkça kullanılır, ancak örnek olarak normal dağılımı kullanacağım.ggplot ölçek dönüşümü, noktalar ve işlevler üzerinde farklı davranır
Verileri oluşturup, verilerle birlikte kümülatif yoğunluk işlevini çiziyorum. İyi uyuyorlar. Ancak, Y ekseni dönüşümü uyguladığımda artık uymuyorlar.
sim <- rnorm(100) #Simulate some data
sim <- sort(sim) #Sort it
cdf <- seq(0,1,length.out=length(sim)) #Compute data CDF
df <- data.frame(x=sim, y=cdf) #Build data.frame
library(scales)
library(ggplot2)
#Now plot!
gg <- ggplot(df, aes(x=x, y=y)) +
geom_point() +
stat_function(fun = pnorm, colour="red")
gg
Ve çıkış hatları üzerinde bir şey olmalı: İyi!
Şimdi Y eksenini, kullanılan dağıtıma göre dönüştürmeyi deniyorum.
noktalarının doğru (onlar düz bir çizgi üzerinde yalan) dönüşür, ancak işlevi değildir:
#Apply transformation
gg + scale_y_continuous(trans=probability_trans("norm"))
neden oluyor:
ggplot(data.frame(x=sim), aes(x=x)) +
stat_ecdf(geom = "point") +
stat_function(fun="pnorm", colour="red") +
scale_y_continuous(trans=probability_trans("norm"))
sonuç normaldir:
Ancak, her şey ggplot ile CDF hesaplama, böyle yaparsan iyi iş gibi görünüyor? Neden CDF'yi hesaplamıyor, ölçek dönüşümleri ile manuel olarak çalışıyor?
Teşekkür ederiz. Geom_ecdf() işlevinin "inherit.aes" olmadan bile çalışmasına ilişkin bir hipoteziniz var mı? – AF7
'stat_ecdf' hiçbir estetik kalıtım yapısına sahip değildir, tek seçenek bu katmanı geçersiz kılarak katman estetiğini geçersiz kılmaktır. 'stat_function' öte yandan _superimposes_ komplo katmanında bir fonksiyon ve' inherit.aes = TRUE' (varsayılan), komploun üst katmanından estetik eşleştirmeler seçer. Asıl problemi bana veren şey, “stat_function” içinde _superimpose_ idi.stat_function' estetik eşleşmelerinin tüm alt tabaka değişimlerinden etkilenen almadan size inşa fiili arsa (üst katman) eşleşmelerini izlenmeleri için tasarlandı 'geliyor bana. – Divi