आर

2010-09-17 15 views
7

में वास्तविक से मॉडलिंग बिंदुओं से ड्रॉप लाइनें कल मैं worked up an example of साधारण लीस्ट स्क्वायर (ओएलएस) बनाम प्रिंसिपल कंपोनेंट्स एनालिसिस (पीसीए) के बीच अंतर। उस उदाहरण के लिए मैं ओएलएस और पीसीए द्वारा कम से कम त्रुटियों को दिखाना चाहता था, इसलिए मैंने वास्तविक, अनुमानित रेखा की योजना बनाई और फिर मैन्युअल रूप से (जीआईएमपी के साथ) ने कुछ त्रुटि शर्तों को चित्रित करने के लिए ड्रॉप लाइन में खींचा। मैं आर में त्रुटि लाइनों के निर्माण को कैसे कोड कर सकता हूं?आर

set.seed(2) 
x <- 1:100 

y <- 20 + 3 * x 
e <- rnorm(100, 0, 60) 
y <- 20 + 3 * x + e 

plot(x,y) 
yx.lm <- lm(y ~ x) 
lines(x, predict(yx.lm), col="red") 

तो मैं मैन्युअल रूप से निम्न उत्पादन करने के लिए पीले रंग की लाइनों कहा:: यहाँ कोड मैं अपने उदाहरण के लिए इस्तेमाल किया है

alt text

उत्तर

8

?segments

मैं एक उदाहरण प्रदान करते हैं, लेकिन मैं आज बहुत व्यस्त हूं और अंक चुनने के लिए जटिल नहीं है। ;-)

ठीक है, तो मैं नहीं व्यस्त है कि ...

n=58; segments(x[n],y[n],x[n],predict(yx.lm)[n]) 
n=65; segments(x[n],y[n],x[n],predict(yx.lm)[n]) 
+0

मैंने कभी 'segments' आदेश इस्तेमाल नहीं किया था! मुझे यह इंगित करने के लिए धन्यवाद। –

+0

आपका स्वागत है; और सूचनात्मक ब्लॉग पोस्ट के लिए धन्यवाद। वेक्टरिंग के लिए –

6

यहोशू उल्लेख किया है, segments() यहां जाने का रास्ता है। और जैसा कि यह पूरी तरह से vectorised है, हम एक ही बार में सभी त्रुटियों में जोड़ सकते हैं, अपने उदाहरण

set.seed(2) 
x <- 1:100 

y <- 20 + 3 * x 
e <- rnorm(100, 0, 60) 
y <- 20 + 3 * x + e 

plot(x,y) 
yx.lm <- lm(y ~ x) 
lines(x, predict(yx.lm), col="red") 
## Add segments 
segments(x, y, x, fitted(yx.lm), col = "blue") 

से पर निम्नलिखित आप केवल त्रुटियों के एक जोड़े को उजागर करना चाहते हैं, तो उदाहरण यहोशू दिया संशोधित करने के लिए:

n <- c(58,65) 
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3) 

HTH

जी

+0

-1 (मेरे लिए)। स्पष्टीकरण के लिए धन्यवाद! –