14.7 Poisson-Log Generalized Linear Model (Poisson Regression)
Stan also supplies a single function for a generalized linear model with Poisson likelihood and log link function, i.e. a function for a Poisson regression. This provides a more efficient implementation of Poisson regression than a manually written regression in terms of a Poisson likelihood and matrix multiplication.
14.7.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 \mathbb{N}^n\), \[ \text{PoisonLogGLM}(y|x, \alpha, \beta) = \prod_{1\leq i \leq n}\text{Poisson}(y_i|\exp(\alpha_i + x_i\cdot \beta)). \]
14.7.2 Sampling Statement
y ~
poisson_log_glm
(x, alpha, beta)
Increment target log probability density with poisson_log_glm_lpmf(y | x, alpha, beta)
dropping constant additive terms.
14.7.3 Stan Functions
real
poisson_log_glm_lpmf
(int y | matrix x, real alpha, vector beta)
The log Poisson probability mass of y
given the log-rate alpha + x * beta
,
where the same intercept alpha
and dependent 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
poisson_log_glm_lpmf
(int y | matrix x, vector alpha, vector beta)
The log Poisson probability mass of y
given the log-rate alpha + x * beta
,
where an intercept alpha
is used that is allowed to vary with the
different observations. Dependent 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
poisson_log_glm_lpmf
(int[] y | row_vector x, real alpha, vector beta)
The log Poisson probability mass of y
given the log-rate alpha + x * beta
,
where the same intercept alpha
is used for all observations.
The number of columns of x
needs to match the size of the coefficient vector beta
.
real
poisson_log_glm_lpmf
(int[] y | row_vector x, vector alpha, vector beta)
The log Poisson probability mass of y
given the log-rate alpha + x * beta
,
where an intercept alpha
is used that is allowed to vary with the
different 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
.
real
poisson_log_glm_lpmf
(int[] y | matrix x, real alpha, vector beta)
The log Poisson probability mass of y
given the log-rate 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
poisson_log_glm_lpmf
(int[] y | matrix x, vector alpha, vector beta)
The log Poisson probability mass of y
given the log-rate alpha + x * beta
,
where an intercept alpha
is used that is allowed to vary with the
different observations. 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.