Search code examples
rplotpredict

Converting a plotted line into a model object


Let's say I have a series of points between which I want to plot straight lines:

x <- c(0, 2, 4, 7, 12)
y <- c(0, 0, 4, 5, 0)
plot(x, y, type = 'l')

line plot going through the points (2,1), (6,2), (7,5), and (12,2)

How would I go about turning this plotted line into a simple model object? For instance, something with which I would be able to use the stats::predict() function to do something like this:

model.object <- ???

predict(model.object, data.frame(x = 3))

Output:

2

Or, at the very least, is there some way R can identify the slopes and intercepts of each of these lines between the points so I could manually create a piecewise function using if-statements?


Solution

  • While it's a bit different than predict, you can use approxfun to do interpolation between points

    f <- approxfun(x, y)
    f(3)
    # [1] 2
    

    Note that it just takes a vector of x values rather than a data.frame to make predictions.