12.3 Bernoulli-Logit Generalized Linear Model (Logistic Regression)
Stan also supplies a single function for a generalized linear model with Bernoulli likelihood and logit link function, i.e. a function for a logistic regression. This provides a more efficient implementation of logistic regression than a manually written regression in terms of a Bernoulli likelihood and matrix multiplication.
12.3.1 Probability Mass Function
If \(x\in \mathbb{R}^{n\cdot m}, \alpha \in \mathbb{R}^n, \beta\in \mathbb{R}^m\), then for \(y \in {\{0,1\}}^n\), \[\begin{align*} &\text{BernoulliLogitGLM}(y~|~x, \alpha, \beta) = \prod_{1\leq i \leq n}\text{Bernoulli}(y_i~|~\text{logit}^{-1}(\alpha_i + x_i\cdot \beta))\\ &= \prod_{1\leq i \leq n} \left\{ \begin{array}{ll} \text{logit}^{-1}(\alpha_i + \sum_{1\leq j\leq m}x_{ij}\cdot \beta_j) & \text{if } y_i = 1, \text{ and} \\ 1 - \text{logit}^{-1}(\alpha_i + \sum_{1\leq j\leq m}x_{ij}\cdot \beta_j) & \text{if } y_i = 0. \end{array} \right. \end{align*}\]
12.3.2 Sampling Statement
y ~ bernoulli_logit_glm(x, alpha, beta)
Increment target log probability density with bernoulli_logit_glm_lpmf(y | x, alpha, beta)
dropping constant additive terms.
12.3.3 Stan Functions
real bernoulli_logit_glm_lpmf(int y | matrix x, real alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where the same intercept alpha and dependant variable value y are used
for all observations. The number of columns of x needs to match the size of the
coefficient vector beta.
If x and y are data (not parameters) this function can be executed on a GPU.
real bernoulli_logit_glm_lpmf(int y | matrix x, vector alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where an intercept alpha is used that is
allowed to vary by observation. The dependant variable
value y is used for all observations.
The number of rows of x must match the size of alpha and
the number of columns of x needs to match the size of the coefficient vector beta.
If x and y are data (not parameters) this function can be executed on a GPU.
real bernoulli_logit_glm_lpmf(int[] y | row_vector x, real alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where the same intercept alpha and
same independent variables values x are used for all observations.
The number of columns of x needs to match the size of the coefficient vector beta.
real bernoulli_logit_glm_lpmf(int[] y | row_vector x, vector alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where an intercept alpha is used that is
allowed to vary by observation.
The same independent variables values x are used for all observations.
The size of y must match the size of alpha and
the number of columns of x needs to match the size of the coefficient vector beta.
real bernoulli_logit_glm_lpmf(int[] y | matrix x, real alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where the same intercept alpha is used
for all observations. The number of rows of the independent variable
matrix x needs to match the size of the dependent variable vector
y and the number of columns of x needs to match the size of the
coefficient vector beta.
If x and y are data (not parameters) this function can be executed on a GPU.
real bernoulli_logit_glm_lpmf(int[] y | matrix x, vector alpha, vector beta)
The log Bernoulli probability mass of y given chance of success
inv_logit(alpha + x * beta), where an intercept alpha is used that is
allowed to vary by observation. The number of rows of
the independent variable matrix x needs to match the size of the
dependent variable vector y and alpha and the number of columns of
x needs to match the size of the coefficient vector beta.
If x and y are data (not parameters) this function can be executed on a GPU.