2012-04-05 4 views
12

R을 사용하여 두 변수 사이의 선형 관계를 플로팅하고 싶습니다. 그러나 맞는 선을 데이터 범위 내에서만 표시하고 싶습니다.특정 범위 내에서 그려진 선을 그려 봅니다. R

예를 들어, 다음 코드가있는 경우 x 및 y 값이 1:10 인 행만 기본 행으로 사용하고 싶습니다 (기본 매개 변수는이 행이 데이터 요소의 범위를 초과하여 확장 됨). 대신 abline()를 사용

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

답변

13

, (a) 피팅 모델을 저장하고, (b) 상기 장착 X = 1에 대응하는 y 값과, X = 10, 그리고 (c)에 lines()를 사용을 찾을 predict.lm()를 사용 두 점 사이에 선을 추가하십시오.

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

예측을 사용하여이를 수행 할 수 있습니다. (? 참조 예측) lines 또는 함께 predict을 사용하는 것 외에도

당신은 X의 특정 값을 예측할 수

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

segments 당신은 또한 abline으로 clip 기능을 사용할 수 있습니다 :

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

+1, 왜냐하면 임의의 줄에서 작동하기 때문에, 또한 abline()과 함께 해킹을 사용하지 않고 predict()를 사용합니다. 이러한 방식으로, 플롯의 마진으로 연장되는 아브라인을 트리밍 할 수 있지만, 예를 들어, 일측에만 적용 할 수있다. 오른쪽이 아니라 왼쪽이됩니다. – pfifas

2

플롯 릭스 l

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

대안이 segments 기능 (문서 here)를 사용하는 것입니다 : ibrary는이에 대한 ablineclip() 기능을 가지고 있습니다.

선을 계산했을 때, 도수가 a이고 기울기가 b 인 경우를 가정 해 보겠습니다. 따라서 맞는 함수는 y = a + bx입니다.

이제 x의 행을 x0x1 사이로 표시하려고한다고 가정 해 보겠습니다.

# 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의 값을 대체합니다.