12

Вопрос по r – Участок соответствует линии в пределах определенного диапазона R

Используя R, я хотел бы построить линейную зависимость между двумя переменными, но я бы хотел, чтобы подогнанная линия присутствовала только в пределах диапазона данных.

Например, если у меня есть следующий код, я бы хотел, чтобы линия существовала только из значений x и y 1:10 (с параметрами по умолчанию эта строка выходит за пределы диапазона точек данных).

x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))
  • Error: User Rate Limit Exceeded

    от
5 ответов
  • 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

  • 18

    В дополнение к использованию

    predict сlines или жеsegments Вы также можете использоватьclip функция сabline:

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

  • 3

    Библиотека plotrix имеет

    ablineclip() Функция только для этого:

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

  • 14

    Вместо того, чтобы использовать

    abline(), (а) сохранить подходящую модель, (б) использоватьpredict.lm() найти соответствующие значения y, соответствующие 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)
    

  • 0

    Альтернативой является использование

    segments функция (докВот).

    Скажем, вы оценили линию, и вы получили перехватa и склонb, Таким образом, ваша встроенная функцияy = a + bx.

    Теперь, скажем, вы хотите показать линию для х между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)
    

    Simply replace the values of a, b, x0, x1 with those of your choosing.

    enter image description here

    Для таких, как я, кто пришел к этому вопросу и хочет построить линию для произвольной пары чисел (а не тех, которые соответствуют заданной регрессии), вам нужен следующий код:

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

    Simply replace the values of x0, y0, x1, y1 with those of your choosing.