2011-11-10 16 views
5

से विचलन प्लॉटिंग (मैं एक = 0 और बी = 1) के साथ एक रिग्रेशन लाइन प्लॉट करना चाहता हूं और नाम के साथ डेटा बिंदु की पहचान के साथ व्यक्तिगत बिंदु विचलन जोड़ना चाहता हूं।रिग्रेशन लाइन

set.seed(123) 
namelab <- paste ("ET", 1:10, sep = "") 
xvar <- 1:10 
yvar <- rnorm(10, 5, 5) 
myd <- data.frame(namelab, xvar, yvar) 
plot(xvar, yvar) 
abline (a= 0, b = 1, col = "red", lty = 2) 

बस मेरे इरादे के मैन्युअल स्केच, मैंने बस उदाहरण के लिए एक बिंदु को लेबल किया। खींची गई रेखा को पतला होना चाहिए। enter image description here

+2

संभावित डुप्लिकेट: http://stackoverflow.com/questions/2639430/graphing-perpendicular-offsets-in-a-least-squares-regression-plot-in-r –

+2

लेकिन क्या तुम सच में प्लॉट करने के लिए करना चाहते हैं * लंबवत * ऑफ़सेट हालांकि? रिग्रेशन आमतौर पर * लंबवत * ऑफ़सेट को कम करता है। –

+0

@ जॉन कॉल्बी गुड कैच – Andrie

उत्तर

13
dev.new(width=4, height=4) 
plot(xvar, yvar, asp=1) 

a = 0 
b = 1 

abline (a, b, col = "red", lty = 2) 

myd$xint = with(myd, (b*yvar + xvar - b*a)/(b^2 + 1)) 
myd$yint = with(myd, (b*yvar + b*xvar + a)/(b^2 + 1)) 

with(myd, segments(xvar, yvar, xint, yint)) 
with(myd, text(xvar, yvar, labels=namelab, pos=3, cex=0.5)) 

enter image description here

+1

इसके लिए धन्यवाद। मैं लंबवत के लिए एक बिंदु पर एक बिंदु देख रहा हूं और इसे पा सकता हूं। और आप यह भी दिखाते हैं कि एसक्यू के लिए चित्रों को अच्छी तरह से कैसे कम किया जाए। Doubleplusgood। –

4

... और अगर आप खड़ी चाहते हैं सीधा ऑफसेट करने का विरोध किया था, यहाँ एक बिल्कुल स्पष्ट विकल्प है:

set.seed(123) 
namelab <- paste ("ET", 1:10, sep = "") 
xvar <- 1:10 
yvar <- rnorm(10, 5, 5) 

plot(xvar, yvar) 
abline (a= 0, b = 1, col = "red", lty = 2) 
segments(xvar,yvar,xvar,xvar) 
text(xvar,yvar,namelab,pos=3) 

enter image description here

इसके लिए ए और बी के किसी भी मूल्य के लिए काम करने के लिए, आप इसका उपयोग करेंगे:

segments(xvar,yvar,xvar,((xvar*b)+a)) 
संबंधित मुद्दे