addTerms

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 mdl regression model. Specify as either a:

  • Text string representing one or more terms to add. For details, see Wilkinson Notation.

  • Row or rows in the terms matrix (see modelspec in fitglm). For example, if there are three variables A, B, and C:

    [0 0 0] represents a constant term or intercept
    [0 1 0] represents B; equivalently, A^0 * B^1 * C^0
    [1 0 1] represents A*C
    [2 0 0] represents A^2
    [0 1 2] represents 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.

Definitions

Wilkinson Notation

Wilkinson notation describes the factors present in models. The notation relates to factors present in models, not to the multipliers (coefficients) of those factors.

Wilkinson NotationFactors in Standard Notation
1Constant (intercept) term
A^k, where k is a positive integerA, A2, ..., Ak
A + BA, B
A*BA, B, A*B
A:BA*B only
-BDo not include B
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C - A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

Statistics Toolbox™ notation always includes a constant term unless you explicitly remove the term using -1.

For details, see Wilkinson and Rogers [1].

Examples

expand all

Add a term to a generalized linear regression model

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

References

[1] 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.

Alternatives

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

Was this topic helpful?