MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.
MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.
Regression is the process of fitting models to data. Linear
regression assumes that the relationship between the dependent variable yi and
the independent variable xi is
linear: yi = a + b xi.
a is the offset and
the slope of the linear relationship.
For linear regression of a data sample with one independent
variable, MuPAD® provides the
stats::linReg function. This function
uses the least-squares approach for computing the linear regression.
b by minimizing
the quadratic error:
The function also can perform weighted least-squares linear regression that minimizes
with the positive weight wi. By default, the weights are equal to 1.
Besides the slope
a and the offset
a fitted linear model,
returns the value of the quadratic deviation χ2.
For example, fit the linear model to the following data:
x := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: y := [11, 13, 15, 17, 19, 21, 23, 25, 27, 29]: stats::linReg(x, y)
The linear model yi =
9 + 2 xi fits
this data perfectly. The quadratic error for this model is zero. To
visualize the data and the resulting model, plot the data by using
The plot shows the regression line yi =
9 + 2 xi computed
When you work with experimental data samples, the data almost
never completely fits any linear model. The value of the quadratic
error indicates how far the actual data deviate from the fitted model.
For example, modify the data from the previous example by adding small
random floating-point values to the entries of the list
Then, perform linear regression for the entries of the lists
plot the data:
y1 := y + [10*frandom() $ i = 1..10]: stats::linReg(x, y1); plot(plot::Scatterplot(x, y1))
The fact that
a linear model to fit your data does not guarantee that the linear
model is a good fit. For example, you can find a linear model to fit
the following uniformly distributed random data points:
x := [frandom() $ i = 1..100]: y := [frandom() $ i = 1..100]: stats::linReg(x, y); plot(plot::Scatterplot(x, y))
The large value of the quadratic error indicates that the linear model is a poor fit for these data.
delete x, y, y1