ben github
repo konusunda daha derin almak zorunda ama sonunda aldık. Bunu yapmak için stat_smooth
'un nasıl çalıştığını bilmeniz gerekir. biz yapacağını bu vesileyle loess
kullanarak Yani
: Bu özel durumda loess
fonksiyon yumuşatmayı yapmak denir (farklı yumuşatma fonksiyonları aynı şekilde aşağıda süreci kullanılarak inşa edilebilir)
#data
df <- mtcars[,c("mpg","cyl"), with=FALSE]
#run loess model
cars.lo <- loess(cyl ~ mpg, df)
O zaman tahminlerin stat_smooth
içinde dahili olarak nasıl yapıldığını görmek için this'u okumam gerekiyordu.
:
predictdf.loess <- function(model, xseq, se, level) {
pred <- stats::predict(model, newdata = data.frame(x = xseq), se = se)
if (se) {
y = pred$fit
ci <- pred$se.fit * stats::qt(level/2 + .5, pred$df)
ymin = y - ci
ymax = y + ci
data.frame(x = xseq, y, ymin, ymax, se = pred$se.fit)
} else {
data.frame(x = xseq, y = as.vector(pred))
}
}
kullanıyorum tahminlerin kendi data.frame oluşturmak başardı yukarıdaki okuduktan sonra: bizim durumumuzda için aşağıdaki gibi Görünüşe Hadley (ad ihraç değildir) predictdf
fonksiyonunu kullanır
#get the predictions i.e. the fit and se.fit vectors
pred <- predict(cars.lo, se=TRUE)
#create a data.frame from those
df2 <- data.frame(mpg=df$mpg, fit=pred$fit, se.fit=pred$se.fit * qt(0.95/2 + .5, pred$df))
predictdf.loess
baktığımızda güven aralığının üst sınır pred$fit + pred$se.fit * qt(0.95/2 + .5, pred$df)
olarak oluşturulan ve alt sınır pred$fit - pred$se.fit * qt(0.95/2 + .5, pred$df)
olarak görebiliyoruz.
biz bu sınırların üzerinde veya altında puan için bir bayrak oluşturabilirsiniz olanlar kullanma: o dışındaysa
#make the flag
outerpoints <- +(df$cyl > df2$fit + df2$se.fit | df$cyl < df2$fit - df2$se.fit)
#add flag to original data frame
df$outer <- outerpoints
df$outer
kolon muhtemelen OP aradığı şeydir (bu 1 değerini alır sınırlar ya da 0 aksi halde) ama sadece uğruna bunun altını çiziyorum.
Yukarıdaki işlev, +
işlevinin mantıksal bayrağı bir sayısal değere dönüştürmek için kullanıldığına dikkat edin.
Şimdi bu kadar çizmek eğer:
ggplot(df,aes(mpg,cyl)) +
geom_point(aes(colour=factor(outer))) +
geom_smooth()
Biz aslında içinde ve güven aralığı dışında noktalarını görebilirsiniz.
Çıktı:

Not;Üst ve alt sınırları ilgilenen herkes için, onlar böyle oluşturulur (spekülasyon: gölgeli alanlar muhtemelen geom_ribbon ile oluşturulan rağmen - veya benzer bir şey - onları oldukça fazla yuvarlak ve yapar):
#upper boundary
ggplot(df,aes(mpg,cyl)) +
geom_point(aes(colour=factor(outer))) +
geom_smooth() +
geom_line(data=df2, aes(mpg , fit + se.fit , group=1), colour='red')
#lower boundary
ggplot(df,aes(mpg,cyl)) +
geom_point(aes(colour=factor(outer))) +
geom_smooth() +
geom_line(data=df2, aes(mpg , fit - se.fit , group=1), colour='red')
Kodunuza ve verileri dahil ederek başlayabilirsiniz. – nrussell
'define (x, y ...)' ancak verilerinizin bir kısmı gereklidir – Mateusz1981
Güven aralığı çizgileri, verilerin kendisi için değil, verilerin ortalaması için bir güven aralığıdır. Ve çok fazla veriye sahip olduğunuzdan, değerlerin çoğunun aralığın dışında olmasını beklerdim. – bramtayl