Search code examples
rregressionlinear-regressionpiecewise

R segmented regression predict gives error: "subscript out of bounds"


I'm building a segmented regression model using R's Segmented package. I was able to create the model but have trouble using the predict.segmented function. It always throws an error saying "subscript out of bounds"

This is the exact error message:

Error in newdata[[nameZ[i]]] : subscript out of bounds

Traceback just gives this:

1: predict.segmented(seg_model, xtest)

I created a simple case that gives the same error:

require(segmented)

x = c(1:90, 991:1000)
y = c((x[1:10]/2), (x[11:100]*2))

lm_model = lm(y~x)

seg_model = segmented(lm_model, seg.Z=~x, psi=list(x=NA), 
                      control=seg.control(display=FALSE, K=1, random=TRUE))

xtest = c(1:1000)
predict.segmented(seg_model, xtest)

I am starting to think this could be a bug. I'm new to R and not sure how to debug this either. Any help is appreciated!


Solution

  • You are using predict.segemented incorrectly. Like nearly all the predict() functions, your newdata parameter should be a data.frame, not a vector. Also, it needs to have names that match the variables used in your regression. Try

    predict.segmented(seg_model, data.frame(x=xtest))
    

    instead. When using a function for the first time, be sure the read the help page (?predict.segmented) to know what the function expects for each of the parameters.