मैं github
रेपो में अच्छा अनुभव मिलेगा पड़ा, लेकिन मैं अंत में यह मिल गया। ऐसा करने के लिए आपको यह जानने की जरूरत है कि stat_smooth
कैसे काम करता है। इस विशिष्ट मामले में loess
समारोह समरेखण करने के लिए कहा जाता है (अलग समरेखण कार्यों के रूप में नीचे एक ही प्रक्रिया का उपयोग कर निर्माण किया जा सकता है):
तो, यह अवसर पर loess
का उपयोग कर हम करना होगा:
#data
df <- mtcars[,c("mpg","cyl"), with=FALSE]
#run loess model
cars.lo <- loess(cyl ~ mpg, df)
फिर में भविष्यवाणियों को आंतरिक रूप से कैसे बनाया गया है, यह देखने के लिए मुझे this पढ़ना पड़ा। के रूप में हमारे मामले के लिए इस प्रकार है जाहिरा तौर पर हेडली predictdf
समारोह (जो नाम स्थान को निर्यात नहीं है) का उपयोग करता है:
:
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))
}
}
ऊपर मैं का उपयोग कर भविष्यवाणियों की अपने ही data.frame बनाने में सक्षम था पढ़ने के बाद
#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
पर देखकर हम देख सकते हैं कि आत्मविश्वास अंतराल की ऊपरी सीमा pred$fit + pred$se.fit * qt(0.95/2 + .5, pred$df)
और निचली सीमा pred$fit - pred$se.fit * qt(0.95/2 + .5, pred$df)
के रूप में बनाई गई है।
उन का उपयोग करते हुए हम पर या नीचे उन सीमाओं अंक के लिए एक झंडा बना सकते हैं:
#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
स्तंभ शायद क्या ओ पी की तलाश में है है (यह 1 का मान लेता है अगर यह बाहर है सीमाएं या 0 अन्यथा) लेकिन सिर्फ इसके लिए मैं इसे नीचे साजिश कर रहा हूं।
उपरोक्त +
फ़ंक्शन पर ध्यान दें केवल तार्किक ध्वज को संख्यात्मक रूप में परिवर्तित करने के लिए उपयोग किया जाता है।
अब हम इस रूप में साजिश यदि:
ggplot(df,aes(mpg,cyl)) +
geom_point(aes(colour=factor(outer))) +
geom_smooth()
हम वास्तव में अंदर और विश्वास अंतराल के बाहर अंक देख सकते हैं।
आउटपुट:
पी.एस.जो कोई ऊपरी और निचले सीमाओं में रुचि रखता है के लिए, वे इस तरह बनाए जाते हैं (अटकलें: हालांकि छायांकित क्षेत्रों शायद geom_ribbon साथ बनाया जाता है - या कुछ इसी तरह - जो उन्हें अधिक गोल और सुंदर बना देता है):
#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')
आप अपने कोड और डेटा को शामिल करके शुरू कर सकते हैं। – nrussell
'पहचान (एक्स, वाई ...)' लेकिन आपके डेटा का एक हिस्सा आवश्यक है – Mateusz1981
ध्यान दें कि आत्मविश्वास अंतराल रेखा डेटा के माध्य के लिए एक आत्मविश्वास अंतराल है, न कि डेटा के लिए। और क्योंकि आपके पास इतना डेटा है, मैं उम्मीद करता हूं कि अधिकांश मूल्य अंतराल के बाहर होंगे। – bramtayl