Well, not really! But this is generally what we learn at Schools/Universities and daily scientific practice.
We could call Bayesian data analysis “statistics using conditional probability”, but that wouldn’t put the butts in the seats. Andrew Gelman.
* AKA Probabilistic modeling, Bayesian modeling, probabilistic machine learning ...
Bayesian Deep Learning and a Probabilistic Perspective of Generalization
The usual way
$$y_i = \beta_0 + \beta_1 x_i + \dots + \beta_m x_m = \underbrace{\mathbf{X} \; \mathit{\beta}}_{\text{matrix notation}}$$
Student-t regression (robust to outliers)
Logistic regression (binary outcomes)
$$\mu = logistic(\mathbf{X} \mathit{\beta})$$$$\mathit{Y} \sim \mathop{Bin}(\mu)$$Poisson regression (count outcomes)
$$\mu = exp(\mathbf{X} \mathit{\beta})$$$$\mathit{Y} \sim \mathop{Poisson}(\mu)$$Whatever regression ¯\(ツ)/¯
$$\mu = f(\mathbf{X} \mathit{\beta})$$$$\mathit{Y} \sim \mathop{\phi}(\mu, \theta)$$
where $g$ can be, splines, trees, etc
Model building
Inference
Computational backend
with pm.Model() as model:
μ = pm.Normal('μ', 0, 10) # Prior
σ = pm.HalfNormal('σ', 25) # Prior
y_obs = pm.Normal('y_obs', μ, σ, observed=y) # Likelihood
trace = pm.sample(1000) # Inference engine
with pm.Model() as model_l:
β = pm.Normal('β', 0, 10, shape=n) # Prior
σ = pm.HalfNormal('σ', 25) # Prior
μ = pm.math.dot(β, X) # linear model
y = pm.Normal('y', μ, σ, observed=y) # Likelihood
trace_l = pm.sample(1000) # inference engine
Preparation of the results for a particular audience
Works with PyMC3, PyStan, Pyro, emcee, TensorFlow probability...