Main Content


Inverse prediction


X0 = invpred(X,Y,Y0)
[X0,DXLO,DXUP] = invpred(X,Y,Y0)
[X0,DXLO,DXUP] = invpred(X,Y,Y0,name1,val1,name2,val2,...)


X0 = invpred(X,Y,Y0) accepts vectors X and Y of the same length, fits a simple regression, and returns the estimated value X0 for which the height of the line is equal to Y0. The output, X0, has the same size as Y0, and Y0 can be an array of any size.

[X0,DXLO,DXUP] = invpred(X,Y,Y0) also computes 95% inverse prediction intervals. DXLO and DXUP define intervals with lower bound X0–DXLO and upper bound X0+DXUP. Both DXLO and DXUP have the same size as Y0.

The intervals are not simultaneous and are not necessarily finite. Some intervals may extend from a finite value to -Inf or +Inf, and some may extend over the entire real line.

[X0,DXLO,DXUP] = invpred(X,Y,Y0,name1,val1,name2,val2,...) specifies optional argument name/value pairs chosen from the following list. Argument names are case insensitive and partial matches are allowed.


A value between 0 and 1 specifying a confidence level of 100*(1-alpha)%. Default is alpha=0.05 for 95% confidence.


Either 'observation', the default value to compute the intervals for X0 at which a new observation could equal Y0, or 'curve' to compute intervals for the X0 value at which the curve is equal to Y0.


collapse all

Generate sample data.

x = 4*rand(25,1);
y = 10 + 5*x + randn(size(x));

Make a scatterplot of the data.


Figure contains an axes. The axes contains an object of type scatter.

Predict the x value for a given y value of 20.

x0 = invpred(x,y,20)
x0 = 1.9967
Introduced before R2006a