in python/prophet/utilities.py [0:0]
def regressor_coefficients(m):
"""Summarise the coefficients of the extra regressors used in the model.
For additive regressors, the coefficient represents the incremental impact
on `y` of a unit increase in the regressor. For multiplicative regressors,
the incremental impact is equal to `trend(t)` multiplied by the coefficient.
Coefficients are measured on the original scale of the training data.
Parameters
----------
m: Prophet model object, after fitting.
Returns
-------
pd.DataFrame containing:
- `regressor`: Name of the regressor
- `regressor_mode`: Whether the regressor has an additive or multiplicative
effect on `y`.
- `center`: The mean of the regressor if it was standardized. Otherwise 0.
- `coef_lower`: Lower bound for the coefficient, estimated from the MCMC samples.
Only different to `coef` if `mcmc_samples > 0`.
- `coef`: Expected value of the coefficient.
- `coef_upper`: Upper bound for the coefficient, estimated from MCMC samples.
Only to different to `coef` if `mcmc_samples > 0`.
"""
assert len(m.extra_regressors) > 0, 'No extra regressors found.'
coefs = []
for regressor, params in m.extra_regressors.items():
beta = m.params['beta'][:, regressor_index(m, regressor)]
if params['mode'] == 'additive':
coef = beta * m.y_scale / params['std']
else:
coef = beta / params['std']
percentiles = [
(1 - m.interval_width) / 2,
1 - (1 - m.interval_width) / 2,
]
coef_bounds = np.quantile(coef, q=percentiles)
record = {
'regressor': regressor,
'regressor_mode': params['mode'],
'center': params['mu'],
'coef_lower': coef_bounds[0],
'coef': np.mean(coef),
'coef_upper': coef_bounds[1],
}
coefs.append(record)
return pd.DataFrame(coefs)