I am trying to understand monotone and isotonic regression. I believe they will produce curve which are monotonely increasing or decreasing. In most of what I read on the net, the change is shown in a stepwise manner. However, following 2 sets of outputs from 2 packages confuse me. Following is the plot made in R using MonoPoly package:

monpol(y~x, w2, plot.it=T)

Monotone polynomial model
monpol(formula = y ~ x, data = w2, plot.it = T)

    beta0      beta1      beta2      beta3  
12.955525  -1.168275   0.023711  -0.001409  

enter image description here

What exactly do these lines represent? The green line does not appear to be a good fit. The central straight blue line appears to be that of linear regression. It seems to be quite different from plot of isoreg() function which is also meant for monotone functions on same data:

 > ir = isoreg(w2$y~w2$x)
> plot(ir, plot.type='row')

enter image description here

What information does this plot or monopol function output add which cannot be obtained by usual linear regression? Or what are the situations where monotonic regression should be used? I will appreciate a summary of principles and utility of isotonic/monotone regression in simple words.

  • 2
    $\begingroup$ Other than straight lines with non-zero slope, polynomials are not guaranteed monotone by easy rules. That's a problem if you want to combine (a) monotone fits (b) the flexibility of polynomials. At least I guess that's the story. $\endgroup$
    – Nick Cox
    Jun 16, 2015 at 11:14
  • 2
    $\begingroup$ Though there are some statistical questions here, it still reads rather like "Tell me what this R code does". Adding some context about what you're trying to do, & what you've been able to glean from reading manuals & references, & examining the source code would hugely improve the question. $\endgroup$ Jun 16, 2015 at 11:54
  • 1
    $\begingroup$ I have edited the question to focus on output differences with isoreg function since both are meant for monotone regressions. $\endgroup$
    – rnso
    Jun 16, 2015 at 12:19
  • 1
    $\begingroup$ @rnso: Fine, but you haven't really addressed the issues I pointed out. Don't assume that everyone's going to be familiar with every R function you use; or that your underlying statistical questions can only be answered by those that are. $\endgroup$ Jun 16, 2015 at 12:29

1 Answer 1


What exactly do these lines represent?

From the help file of MonoPoly, plot.it will "plot the data and initial fit, then plot current fit every plot.it iterations".

The plot shows each step it takes in the algorithm to fit the best monotone polynomial. The green line is the final fitted polynomial.

What information does ... monopol function output add which cannot be obtained by usual linear regression?

Your data have a strong downward trend so the constraint of monotonicity doesn't seem to be active. In your case, it is likely the constrained and unconstrained solutions coincide. However, there are cases where errors in data cause a non-monotonic fit but a priori information exists to the contrary. In these situations packages like MonoPoly can be very useful.

As for isoreg(), it is trying to achieve the same thing as the MonoPoly package but it is not concerned with smooth fitted lines.

Example (albeit a simplistic one): Fitting a regression on heights of children over time and due to measurement or other data error the polynomial you fit results in a section that is non-monotonically (it should be increasing). This is not acceptable since you know (a priori) that children should not shrink, hence you resolve to fit a monotonically increasing polynomial.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.