Documentation

# `stats`::`linReg`

Linear regression (least squares fit)

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.

## Syntax

```stats::linReg(`[x1, x2, …]`, `[y1, y2, …]`, <`[w1, w2, …]`>, <CovarianceMatrix>)
stats::linReg(`[[x1, y1, <w1>], [x2, y2, <w2>], …]`, <CovarianceMatrix>)
stats::linReg(`s`, <`cx, cy, <cw>`>, <CovarianceMatrix>)
stats::linReg(`s`, <`[cx, cy, <cw>]`>, <CovarianceMatrix>)
```

## Description

```stats::linReg([x1, x2, …], [y1, y2, …], [w1, w2, …])``` computes the least squares estimators a, b of a linear relation yi = a + bxi between the data pairs (xi, yi) by minimizing .

A linear relation yi = a + bxi + ei between the data pairs (xi, yi) is assumed.

The column indices `cx`, `cy` are optional if the data are given by a `stats::sample` object containing only two non-string columns. Cf. Example 2.

Multivariate linear regression and non-linear regression is provided by `stats::reg`.

External statistical data stored in an ASCII file can be imported into a MuPAD® session via `import::readdata`. In particular, see Example 1 of the corresponding help page.

## Examples

### Example 1

We calculate the least square estimators of four pairs of values given in two lists. Note that there is a linear relation y = 1 + 2 x between the entries of the lists. The minimized quadratic deviation is 0 indicating a perfect fit:

`stats::linReg([0, 1, 2, 3], [1, 3, 5, 7])`
` `

Alternatively, data may be specified by a list of pairs:

`stats::linReg([[1, 1.0], [2, 1.2], [3, 1.3], [4, 1.5]])`
` `

We assume that the variable y in the previous example is Poissonian, i.e. that the measurements (yi) = (1.0, 1.2, 1.3, 1.5) have errors given by the standard deviation . We provide corresponding weights and estimate confidence intervals for the least squares estimators by using the option `CovarianceMatrix`:

```stats::linReg([[1, 1.0, 1/1.0], [2, 1.2, 1/1.2], [3, 1.3, 1/1.3], [4, 1.5, 1/1.5]], CovarianceMatrix)```
` `

The square roots of the diagonal elements of the covariance matrix provide standard deviations for the estimated parameters:

`sqrt(%[1,1]), sqrt(%[2,2])`
` `

Thus, we obtain the estimates , .

### Example 2

We create a sample consisting of one string column and two non-string columns:

`stats::sample([["1", 0, 0], ["2", 10, 15], ["3", 20, 30]])`
```"1" 0 0 "2" 10 15 "3" 20 30 ```

The least square estimators are calculated using the data columns 2 and 3. In this example there are only two non-string columns, so the column indices do not have to be specified:

`stats::linReg(%)`
` `

### Example 3

We create a sample consisting of three data columns:

`stats::sample([[1, 0, 0], [2, 10, 15], [3, 20, 30]])`
```1 0 0 2 10 15 3 20 30 ```

We compute the least square estimators for the data pairs given by the first and the second column:

`stats::linReg(%, 1, 2)`
` `

### Example 4

We create a sample of three columns containing symbolic data:

`stats::sample([[x, y, 0], [2, 4, 15], [3, 20, 30]])`
```x y 0 2 4 15 3 20 30 ```

We compute the symbolic least square estimators for the data pairs given by the first and the second column. Here we specify these columns by a list of column indices:

`map(stats::linReg(%, [1, 2], CovarianceMatrix), normal)`
` `

### Example 5

We create data (xi, yi) with a randomized relation yi = a + bxi:

```DIGITS := 5: r := stats::normalRandom(0, 5): X := [i \$ i = 0..100]: Y := [12 + 17*x + r() \$ x in X]:```

By construction, the variances σ(yi)2 for the data yi in the list Y is 5. We use the weights for all data:

```W := [1/5 \$ i = 0..100]: [ab, chisquared, C]:= stats::linReg(X, Y, W, CovarianceMatrix)```
` `

The standard deviations of the estimators a, b are the square roots of the diagonal elements of C:

`sqrt(float(C[1,1])), sqrt(float(C[2,2]))`
` `

Thus, the estimate for a is , the estimate for b is .

`delete r, X, Y, W, ab, chisquared, C:`

## Parameters

 `x1, x2, …` Statistical data: arithmetical expressions `y1, y2, …` Statistical data: arithmetical expressions `w1, w2, …` Weights: arithmetical expressions. If no weights are provided, w1 = w2 = … = 1 is used. `s` A sample of domain type `stats::sample`. `cx`, `cy`, `cw` Integers representing column indices of the sample `s`. Column `cx` provides the data x1, x2, …, column `cy` provides the data y1, y2, …. Column `cw`, if present, provides the weights w1, w2, …. If no index for the weights is provided, w1 = w2 = … = 1 is used.

## Options

 `CovarianceMatrix` Changes the return value from `[[a, b], chisquared]` to ```[[a, b], chisquared, C]```, where C is the covariance matrix Of the estimators a, b. With this option, information on confidence intervals for the least squares estimators are provided. In particular, the return value includes the covariance matrix Of type `Dom::Matrix()`. Assuming that the data (yi) are randomly perturbed with stochastic variations , the quadratic error to be minimized is With . The covariance matrix of the least squares estimators is given by , , .

## Return Values

Without the option `CovarianceMatrix`, a list ```[[a, b], chisquared]``` is returned. The arithmetical expressions a and b are estimators of the the offset and the slope of the linear relation. The arithmetical expression `chisquared` is the quadratic deviation ,

where a, b are the optimized estimators.

With the option `CovarianceMatrix`, a list ```[[a, b], chisquared, C]``` is returned. The matrix `C` is the covariance matrix of the optimized estimators a and b.

`FAIL` is returned if the estimators a and b do not exist.

## References

P.R. Bevington and D.K. Robinson, “Data Reduction and Error Analysis for The Physical Sciences”, McGraw-Hill, New York, 1992.