2012-04-05 8 views
12

आर का उपयोग करके, मैं दो चर के बीच एक रैखिक संबंध प्लॉट करना चाहता हूं, लेकिन मैं चाहता हूं कि फिट लाइन केवल डेटा की सीमा के भीतर मौजूद हो।कुछ सीमा के भीतर प्लॉट फिट लाइन आर

उदाहरण के लिए, यदि मेरे पास निम्न कोड है, तो मैं लाइन को केवल 1:10 के x और y मानों से अस्तित्व में रखना चाहता हूं (डिफ़ॉल्ट पैरामीटर के साथ यह पंक्ति डेटा बिंदुओं की सीमा से परे फैली हुई है)।

x <- 1:10 
y <- 1:10 
plot(x,y) 
abline(lm(y~x)) 

उत्तर

13
इसके बजाय abline() का उपयोग करने का

, (क) सज्जित मॉडल बचाने के लिए, (ख) predict.lm() का उपयोग फिट y- मानों x = 1 के लिए इसी और एक्स = 10, और उसके बाद (ग) के लिए lines() का उपयोग खोजने के लिए दो बिंदुओं के बीच एक पंक्ति जोड़ें:

f <- lm(y~x) 
X <- c(1, 10) 
Y <- predict(f, newdata=data.frame(x=X)) 

plot(x,y) 
lines(x=X, y=Y) 
8

आप पूर्वानुमान का उपयोग करके ऐसा कर सकते हैं। (? देख भविष्यवाणी)

आप एक्स के विशिष्ट मूल्यों पर भविष्यवाणी कर सकते हैं

x<-1:10 
y<-1:10 
plot(x,y) 
new <- data.frame(x = seq(1, 5, 0.5)) 
lines(new$x, predict(lm(y~x), new)) 

enter image description here

17

lines या साथ predict उपयोग करने के अलावा segments आप भी abline साथ clip फ़ंक्शन का उपयोग कर सकते हैं:

x <- 1:10 
y <- 1:10 
plot(x,y) 
clip(1,10, -100, 100) 
abline(lm(y~x)) 
+3

+1, क्योंकि यह किसी भी लाइन के साथ काम करता है, साथ ही साथ(), हैक का उपयोग किए बिना हैक का उपयोग किए बिना()। इस तरह कोई भी कर सकता है, उदाहरण के लिए, एक प्लॉट के मार्जिन तक विस्तारित अपलाइन भी ट्रिम कर सकता है, लेकिन केवल एक तरफ, उदाहरण के लिए दाईं ओर, बाईं ओर नहीं। – pfifas

2

प्लॉट्रिक्स एल

x <- 1:10 
y <- 1:10 
plot(x,y) 
ablineclip(lm(y~x),x1=1,x2=5) 
0

एक वैकल्पिक segments समारोह (doc here) का उपयोग करने के लिए है: ibrary सिर्फ इस लिए ablineclip() समारोह है।

कहें कि आपने लाइन का अनुमान लगाया है, और आपको a और b की ढलान मिली है। इस प्रकार, आपका फिट फ़ंक्शन y = a + bx है।

अब, कहें कि आप x0 और x1 के बीच x के लिए रेखा दिखाना चाहते हैं।

# inputs 

a <- 0.5 
b <- 2 

x0 <- 1 
x1 <- 5 

# graph 

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l') 
segments(x0, a+b*x0, x1, a+b*x1) 

बस अपने चुनने के लोगों के साथa, b, x0, x1के मूल्यों को बदल दें: फिर, निम्नलिखित कोड अपनी लाइन भूखंडों।

enter image description here


मेरे जैसे जो लोग इस सवाल संख्या की एक मनमाना जोड़ी के लिए एक लाइन साजिश के लिए इच्छुक के लिए आया था के लिए (और उन है कि किसी दिए गए प्रतिगमन फिट नहीं), निम्नलिखित कोड है कि तुम क्या जरूरत है :

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l') 
segments(x0, yo, x1, y1) 

बस अपने चुनने के लोगों के साथx0, y0, x1, y1के मूल्यों की जगह।

संबंधित मुद्दे