Участок, построенный в определенном диапазоне R
Используя R, я хотел бы построить линейную зависимость между двумя переменными, но я хотел бы, чтобы встроенная строка присутствовала только в пределах диапазона данных.
Например, если у меня есть следующий код, я бы хотел, чтобы строка существовала только из значений x и y 1:10 (с параметрами по умолчанию эта строка выходит за пределы диапазона точек данных).
x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))
Ответы
Ответ 1
Вместо использования abline()
, (a) сохраните установленную модель, (b) используйте predict.lm()
, чтобы найти улокальные значения, соответствующие x = 1 и x = 10, а затем (c) использовать 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)
Ответ 2
В дополнение к использованию predict
с lines
или segments
вы также можете использовать функцию clip
с abline
:
x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))
Ответ 3
Вы можете сделать это, используя прогноз.
Вы можете предсказать при определенных значениях 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]()
Ответ 4
В библиотеке графика есть функция ablineclip()
только для этого:
x <- 1:10
y <- 1:10
plot(x,y)
ablineclip(lm(y~x),x1=1,x2=5)
Ответ 5
Альтернативой является использование функции segments
(doc здесь).
Скажите, что вы оценили линию, и вы получили перехват a
и наклон b
. Таким образом, ваша установленная функция y = a + bx
.
Теперь, скажем, вы хотите показать строку для x между x0
и x1
. Затем следующий код отображает вашу строку:
# 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
теми, которые выбрали.
![введите описание изображения здесь]()
Для таких, как я, которые пришли к этому вопросу, желая построить линию для произвольной пары чисел (а не тех, которые соответствуют заданной регрессии), следующий код вам нужен:
plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l')
segments(x0, yo, x1, y1)
Просто замените значения x0, y0, x1, y1
теми, которые выбрали.