Finding where two linear fits intersect in R

后端 未结 4 1663
天命终不由人
天命终不由人 2020-12-03 09:10

I have two linear fits that I\'ve gotten from lm calls in my R script. For instance...

fit1 <- lm(y1 ~ x1)
fit2 <- lm(y2 ~ x2)

I\'d l

4条回答
  •  情深已故
    2020-12-03 09:25

    One way to avoid the geometry is to re-parameterize the equations as:

    y1 = m1 * (x1 - x0) + y0
    y2 = m2 * (x2 - x0) + y0
    

    in terms of their intersection point (x0, y0) and then perform the fit of both at once using nls so that the returned values of x0 and y0 give the result:

    # test data
    set.seed(123)
    x1 <- 1:10
    y1 <- -5 + x1 + rnorm(10)
    x2 <- 1:10
    y2 <- 5 - x1 + rnorm(10)
    g <- rep(1:2, each = 10) # first 10 are from x1,y1 and second 10 are from x2,y2
    
    xx <- c(x1, x2)
    yy <- c(y1, y2)
    nls(yy ~ ifelse(g == 1, m1 * (xx - x0) + y0, m2 * (xx - x0) + y0),
        start = c(m1 = -1, m2 = 1, y0 = 0, x0 = 0))
    

    EDIT: Note that the lines xx<-... and yy<-... are new and the nls line has been specified in terms of those and corrected.

提交回复
热议问题