I tried searching for this question on stats stack exchange and found http://stats.stackexchange.com/questions/68202/implementing-linear-regression-with-standardization but the answer was a little difficult to follow. I'm reading "Bayesian Analysis with Python" by Osvaldo Martin (great read btw) and in his hierarchical linear models section he often mean-centers the data and the reverses it. **Can somebody please explain this process to me and how to rearrange the values to visualize the reversal after mean-centering?** The line that is confusing me is `alpha = pm.Deterministic("alpha", alpha_tmp - pm.math.dot(beta, X_mean))` why does subtracting the dot product of the betas and the mean from the alphas reverse the mean centering? I feel like I'm missing something very simple. The author implements it in `Python 3.5` using a module that is up and coming called `pymc3`. Here is the code excerpt below: `alpha_tmp` is the `alpha` when `X` is mean centered. The formula that is being used is: $$\mu = \alpha + \beta*x_1 + \beta*x_2$$ import pymc3 as pm import numpy as np # Multiple Linear Regression # pg. 132 np.random.seed(314) N = 100 alpha_real = 2.5 beta_real = [0.9, 1.5] eps_real = np.random.normal(loc=0, scale=0.5, size=N) X = np.array([np.random.normal(i,j, N) for i,j in zip([10,2],[1,1.5])]) X_mean = X.mean(axis=1, keepdims=True) X_centered = X - X_mean y = alpha_real + np.dot(beta_real, X) + eps_real with pm.Model() as model_mlr: alpha_tmp = pm.Normal("alpha_tmp", mu=0, sd=10) beta = pm.Normal("beta", mu=0, sd=1, shape=2) epsilon = pm.HalfCauchy("epsilon", 5) mu = alpha_tmp + pm.math.dot(beta, X_centered) alpha = pm.Deterministic("alpha", alpha_tmp - pm.math.dot(beta, X_mean)) y_pred = pm.Normal("y_pred", mu=mu, sd=epsilon, observed=y) start = pm.find_MAP() step = pm.NUTS(scaling-start) trace_mlr = pm.sample(5000, step=step, start=start) varnames = ["alpha", "beta", "epsilon"] pm.traceplot(trace_mlr, varnames) # Below is output of stderr Optimization terminated successfully. Current function value: 74.986175 Iterations: 23 Function evaluations: 31 Gradient evaluations: 31 100%|██████████| 5000/5000 [00:13<00:00, 380.52it/s] [![enter image description here][1]][1] [1]: https://i.sstatic.net/uUPA0.png