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)
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
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
yy<-... are new and the
nls line has been specified in terms of those and corrected.