Class: GeneralizedLinearModel

Add terms to generalized linear model

## Syntax

```mdl1 = addTerms(mdl,terms) ```

## Description

`mdl1 = addTerms(mdl,terms)` returns a generalized linear model the same as `mdl` but with additional terms.

## Input Arguments

 `mdl` Generalized linear model, as constructed by `fitglm` or `stepwiseglm`. `terms` Terms to add to the regression model `mdl`, specified as one of the following: A character vector or string scalar formula in Wilkinson Notation representing one or more terms. The variable names in the formula must be valid MATLAB® identifiers.Terms matrix `T` of size t-by-p, where t is the number of terms and p is the number of predictor variables in `mdl`. The value of `T(i,j)` is the exponent of variable `j` in term `i`.For example, suppose `mdl` has three variables `A`, `B`, and `C` in that order. Each row of `T` represents one term: `[0 0 0]` — Constant term or intercept`[0 1 0]` — `B`; equivalently, `A^0 * B^1 * C^0``[1 0 1]` — `A*C``[2 0 0]` — `A^2``[0 1 2]` — `B*(C^2)`

## Output Arguments

 `mdl1` Generalized linear model, the same as `mdl` but with additional terms given in `terms`. You can set `mdl1` equal to `mdl` to overwrite `mdl`.

## Examples

expand all

Create a model using just one predictor, then add a second.

Generate artificial data for the model, Poisson random numbers with two underlying predictors `X(1)` and `X(2)`.

```rng default % for reproducibility rndvars = randn(100,2); X = [2+rndvars(:,1),rndvars(:,2)]; mu = exp(1 + X*[1;2]); y = poissrnd(mu);```

Create a generalized linear regression model of Poisson data. Use just the first predictor in the model.

```mdl = fitglm(X,y,... 'y ~ x1','distr','poisson')```
```mdl = Generalized linear regression model: log(y) ~ 1 + x1 Distribution = Poisson Estimated Coefficients: Estimate SE tStat pValue ________ _________ ______ ______ (Intercept) 2.7784 0.014043 197.85 0 x1 1.1732 0.0033653 348.6 0 100 observations, 98 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 1.25e+05, p-value = 0 ```

Add the second predictor to the model.

`mdl1 = addTerms(mdl,'x2')`
```mdl1 = Generalized linear regression model: log(y) ~ 1 + x1 + x2 Distribution = Poisson Estimated Coefficients: Estimate SE tStat pValue ________ _________ ______ ______ (Intercept) 1.0405 0.022122 47.034 0 x1 0.9968 0.003362 296.49 0 x2 1.987 0.0063433 313.24 0 100 observations, 97 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 2.95e+05, p-value = 0 ```

expand all

## Algorithms

• `addTerms` treats a categorical predictor as follows:

• A model with a categorical predictor that has L levels (categories) includes L – 1 indicator variables. The model uses the first category as a reference level, so it does not include the indicator variable for the reference level. If the data type of the categorical predictor is `categorical`, then you can check the order of categories by using `categories` and reorder the categories by using `reordercats` to customize the reference level.

• `addTerms` treats the group of L – 1 indicator variables as a single variable. If you want to treat the indicator variables as distinct predictor variables, create indicator variables manually by using `dummyvar`. Then use the indicator variables, except the one corresponding to the reference level of the categorical variable, when you fit a model. For the categorical predictor `X`, if you specify all columns of `dummyvar(X)` and an intercept term as predictors, then the design matrix becomes rank deficient.

• Interaction terms between a continuous predictor and a categorical predictor with L levels consist of the element-wise product of the L – 1 indicator variables with the continuous predictor.

• Interaction terms between two categorical predictors with L and M levels consist of the (L – 1)*(M – 1) indicator variables to include all possible combinations of the two categorical predictor levels.

• You cannot specify higher-order terms for a categorical predictor because the square of an indicator is equal to itself.

## Alternatives

`step` adds or removes terms from a model using a greedy one-step algorithm.

## References

 Wilkinson, G. N., and C. E. Rogers. Symbolic description of factorial models for analysis of variance. J. Royal Statistics Society 22, pp. 392–399, 1973.