# What is exactly psi and segZ function in "segment" function in R

I am using "segment" package in R for fitting piecewise linear segments to a sample parabolic curve in R. I am not able to able to interpret the functions "psi" and "segZ" from the R documentation. I have two variables X and Y . If we consider X as dependent and Y as independent variable then,

reg<- lm(Y~X, data = curved_data)

I am creating a parabola from the sample data given below-

x<- c(-37, -36, -35, -34, -33, -32, -30, -28, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -12, -10, -8, -7, -5, -4, -2, -1, 0, 1, 2, 4, 5, 7, 8, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 34, 35, 36, 37)

y=4x^2

That is I am constructing a parabola with the help of the above equation in R.

So in this case y is independent and x is the dependent variable.

I want to have a piece wise linearity fit for this parabolala.

I have tried using two different codes of R i.e.

seg_model<- segmented(reg, seg.Z = ~curved_data$X, psi = c(-35, 4, 30), control = seg.control(display = TRUE)) -35, 4, 30 are the 3 breakpoints that are chosen by me. Are they correctly chosen? How should they be chosen? I get the error Error in segmented(reg, seg.Z = ~curved_data$X, psi = c(-35, 4, 30), : psi' should be a list with more than one covariate inseg.Z'

What does this error means?

Also I have tried using code by writing psi = NA

I have got the below error

Error in segmented(reg, seg.Z = ~curved_data\$X, psi = NA, control = seg.control(display = TRUE)) : psi' should be a list with more than one covariate inseg.Z'

I am not able to understand psi and segZ from the R documentation. Please can I get an elaborate functioning of these two functions? What is the relation between psi and segZ? What should I do to correct this error? Does number of points in vector of psi means number of breakpoints OR what is it?

## 1 Answer

You must attach the data frame curved_data before running the commands. Then, run your command like this:

seg_model <- segmented(reg, seg.Z = ~X, psi = c(-35, 4, 30),
control = seg.control(display = TRUE))