PracticeVideosBlogFlashcards

4.2 Poisson Regression & Exposure Offsets

Key Takeaways

  • In casualty frequency modeling, the expected claim count is E[Y_i] = e_i * mu_i, where e_i is earned exposure and mu_i is the annualized claim frequency per unit exposure.

  • Under a log link, incorporating exposure yields ln(E[Y_i]) = ln(e_i) + x_i^T * beta, establishing ln(e_i) as an offset whose regression coefficient is constrained a priori to exactly 1.0.

  • Modeling raw claim counts Y_i with an offset of ln(e_i) is mathematically equivalent to modeling empirical claim frequency Y_i / e_i with prior weights equal to e_i.

  • The Poisson regression model assumes independent claim events, constant occurrence intensity over the exposure period, and strict equidispersion (Var(Y) = E[Y]).

  • A critical actuarial modeling error is entering raw exposure e_i instead of ln(e_i) as an offset, or including exposure as an unconstrained regression variable, which violates exposure additivity.

Last updated: September 2026

The Poisson Distribution for Insurance Claim Counts

In property and casualty insurance, claim frequency represents the rate at which insured losses occur over a defined period of coverage. The classical starting point for modeling claim counts is the Poisson distribution.

A discrete random variable YY representing the number of claims reported on a policy follows a Poisson distribution with parameter λ>0\lambda > 0 if its probability mass function is given by:

P(Y=y)=e−λλyy!,y∈{0,1,2,… }P(Y = y) = \frac{e^{-\lambda} \lambda^y}{y!}, \quad y \in \{0, 1, 2, \dots\}

The defining characteristic of the Poisson distribution is equidispersion, meaning its expected value and variance are mathematically identical:

E[Y]=λ\mathbb{E}[Y] = \lambda Var(Y)=λ\text{Var}(Y) = \lambda

In an insurance portfolio, policyholders do not all share the same exposure to risk. A commercial fleet policy covering 100 power units over an entire policy year has a vastly higher expected claim count than a personal auto policy covering a single vehicle for one month. Therefore, Poisson modeling must explicitly incorporate the volume of earned exposure.


Incorporating Exposure: The Offset Derivation

Let:

  • YiY_i denote the observed claim count for policy ii (yi∈{0,1,2,… }y_i \in \{0, 1, 2, \dots\}).
  • eie_i denote the earned exposure for policy ii (measured in earned car-years, policyholder years, house-years, or 100 units of payroll).
  • μi\mu_i denote the underlying expected claim frequency per unit of exposure (the annualized hazard rate).

The expected number of claims λi=E[Yi]\lambda_i = \mathbb{E}[Y_i] is directly proportional to earned exposure:

E[Yi]=λi=ei⋅μi\mathbb{E}[Y_i] = \lambda_i = e_i \cdot \mu_i

To relate frequency μi\mu_i to rating variables xi=[1,xi1,…,xik]T\mathbf{x}_i = [1, x_{i1}, \dots, x_{ik}]^T, we specify a Generalized Linear Model with the standard log link function:

ln⁡(μi)=xiTβ=β0+β1xi1+⋯+βkxik\ln(\mu_i) = \mathbf{x}_i^T \boldsymbol{\beta} = \beta_0 + \beta_1 x_{i1} + \dots + \beta_k x_{ik}

Substituting this into the expected claim count expression and taking the natural logarithm:

ln⁡(E[Yi])=ln⁡(ei⋅μi)=ln⁡(ei)+ln⁡(μi)\ln(\mathbb{E}[Y_i]) = \ln(e_i \cdot \mu_i) = \ln(e_i) + \ln(\mu_i) ln⁡(E[Yi])=ln⁡(ei)+xiTβ\ln(\mathbb{E}[Y_i]) = \ln(e_i) + \mathbf{x}_i^T \boldsymbol{\beta} E[Yi]=exp⁡(ln⁡(ei)+xiTβ)=ei⋅exp⁡(xiTβ)\mathbb{E}[Y_i] = \exp\left( \ln(e_i) + \mathbf{x}_i^T \boldsymbol{\beta} \right) = e_i \cdot \exp(\mathbf{x}_i^T \boldsymbol{\beta})

Definition of an Offset

In statistical regression, an offset is defined as an explanatory variable whose regression coefficient is not estimated from data, but is constrained a priori to equal exactly 1.0.

Here, ln⁡(ei)\ln(e_i) acts as an offset. It enters the linear predictor with a fixed parameter of 1.0:

ηi=1.0⋅ln⁡(ei)+β0+β1xi1+⋯+βkxik\eta_i = 1.0 \cdot \ln(e_i) + \beta_0 + \beta_1 x_{i1} + \dots + \beta_k x_{ik}

Why the Coefficient Must Equal 1.0: Exposure Additivity

Constraining the coefficient of ln⁡(ei)\ln(e_i) to 1.0 enforces strict exposure proportionality (homogeneity of degree 1):

  1. If exposure doubles from 1.01.0 car-year to 2.02.0 car-years, the expected claim count must double exactly: E[Y]=2.0⋅μ\mathbb{E}[Y] = 2.0 \cdot \mu.
  2. If a policyholder purchases insurance for two consecutive 6-month terms (e1=0.5,e2=0.5e_1 = 0.5, e_2 = 0.5), the total expected claim count across both terms equals the expected claim count of a single 12-month policy (e=1.0e = 1.0):
E[Y1]+E[Y2]=0.5μ+0.5μ=1.0μ=E[Yfull year]\mathbb{E}[Y_1] + \mathbb{E}[Y_2] = 0.5\mu + 0.5\mu = 1.0\mu = \mathbb{E}[Y_{\text{full year}}]

If an actuary mistakenly includes ln⁡(ei)\ln(e_i) as an unconstrained covariate and the regression estimates a coefficient β^e=0.85\hat{\beta}_e = 0.85, the expected claim count scales as e0.85e^{0.85}. A 6-month policy would have an expected count factor of 0.50.85≈0.55480.5^{0.85} \approx 0.5548. Two consecutive 6-month policies would produce an expected factor of 0.5548+0.5548=1.10960.5548 + 0.5548 = 1.1096—charging the policyholder roughly 11%11\% more than an identical 12-month policy. This violates fundamental actuarial principles of cost-causation and exposure additivity.


Frequency Modeling Alternatives: Count Offset vs. Weighted Frequency

In actuarial practice, there are two distinct ways to structure a Poisson GLM in statistical software. Both approaches are mathematically equivalent and yield identical parameter estimates, standard errors, and deviance statistics.

Approach 1: Raw Count with Offset

  • Target variable: Raw claim counts Yi∈{0,1,2,… }Y_i \in \{0, 1, 2, \dots\}
  • Distribution family: Poisson with log link
  • Exposure specification: offset=ln⁡(ei)\text{offset} = \ln(e_i)

The log-likelihood function is:

ℓ(β)=∑i=1n[yiln⁡(eiμi)−eiμi−ln⁡(yi!)]\ell(\boldsymbol{\beta}) = \sum_{i=1}^n \left[ y_i \ln(e_i \mu_i) - e_i \mu_i - \ln(y_i!) \right] ℓ(β)=∑i=1n[yiln⁡(ei)+yixiTβ−eiexp⁡(xiTβ)−ln⁡(yi!)]\ell(\boldsymbol{\beta}) = \sum_{i=1}^n \left[ y_i \ln(e_i) + y_i \mathbf{x}_i^T \boldsymbol{\beta} - e_i \exp(\mathbf{x}_i^T \boldsymbol{\beta}) - \ln(y_i!) \right]

Differentiating with respect to the regression parameter βj\beta_j gives the score equation:

∂ℓ∂βj=∑i=1n[yixij−eixijexp⁡(xiTβ)]=∑i=1n(yi−eiμi)xij=0\frac{\partial \ell}{\partial \beta_j} = \sum_{i=1}^n \left[ y_i x_{ij} - e_i x_{ij} \exp(\mathbf{x}_i^T \boldsymbol{\beta}) \right] = \sum_{i=1}^n \left( y_i - e_i \mu_i \right) x_{ij} = 0

Approach 2: Empirical Frequency with Prior Weights

  • Target variable: Empirical claim frequency Fi=YieiF_i = \frac{Y_i}{e_i}
  • Distribution family: Poisson with log link
  • Prior weight: ωi=ei\omega_i = e_i (no offset)

In the Exponential Dispersion Family, the dispersion function with prior weights is a(ϕ)=ϕωi=1eia(\phi) = \frac{\phi}{\omega_i} = \frac{1}{e_i} (since ϕ=1\phi = 1 for Poisson). The weighted quasi-log-likelihood for frequency fif_i is:

ℓi(β)=fiθi−b(θi)a(ϕ)=ei[filn⁡(μi)−μi]=ei[(yiei)xiTβ−exp⁡(xiTβ)]\ell_i(\boldsymbol{\beta}) = \frac{f_i \theta_i - b(\theta_i)}{a(\phi)} = e_i \left[ f_i \ln(\mu_i) - \mu_i \right] = e_i \left[ \left(\frac{y_i}{e_i}\right) \mathbf{x}_i^T \boldsymbol{\beta} - \exp(\mathbf{x}_i^T \boldsymbol{\beta}) \right] ℓ(β)=∑i=1n[yixiTβ−eiexp⁡(xiTβ)]\ell(\boldsymbol{\beta}) = \sum_{i=1}^n \left[ y_i \mathbf{x}_i^T \boldsymbol{\beta} - e_i \exp(\mathbf{x}_i^T \boldsymbol{\beta}) \right]

Differentiating with respect to βj\beta_j gives the exact same score equation:

∂ℓ∂βj=∑i=1n(yi−eiμi)xij=0\frac{\partial \ell}{\partial \beta_j} = \sum_{i=1}^n \left( y_i - e_i \mu_i \right) x_{ij} = 0

Because the score equations and the negative Hessian matrices (Fisher Information) are identical up to constants independent of β\boldsymbol{\beta}, both methods produce identical coefficients β^\hat{\boldsymbol{\beta}} and covariance matrices Var^(β^)\widehat{\text{Var}}(\hat{\boldsymbol{\beta}}).

Software Implementation Syntax Comparison

SoftwareApproach 1: Count with OffsetApproach 2: Frequency with Weights
Rglm(claims ~ x1 + x2, family = poisson(link = "log"), offset = log(exposure), data = df)glm(claims/exposure ~ x1 + x2, family = poisson(link = "log"), weights = exposure, data = df)
Python (statsmodels)sm.GLM(df['claims'], X, family=sm.families.Poisson(), offset=np.log(df['exposure'])).fit()sm.GLM(df['claims']/df['exposure'], X, family=sm.families.Poisson(), freq_weights=df['exposure']).fit()
SASPROC GENMOD; MODEL claims = x1 x2 / DIST=POISSON LINK=LOG OFFSET=log_exposure;PROC GENMOD; MODEL frequency = x1 x2 / DIST=POISSON LINK=LOG; WEIGHT exposure;
                               POISSON MODELING PATHS
                                         │
                  ┌──────────────────────┴──────────────────────┐
                  ▼                                             ▼
       Approach 1: Count + Offset                   Approach 2: Weighted Frequency
       Response: Y (Claims)                         Response: F = Y / Exposure
       Offset: ln(Exposure)                         Weights: Exposure
       Link: Log                                    Link: Log
                  │                                             │
                  └──────────────────────┬──────────────────────┘
                                         ▼
                            Score Equation: Σ (y_i - e_i * mu_i) * x_ij = 0
                            Identical Coefficients: beta_hat
                            Identical Relativities: exp(beta_hat)

Underlying Assumptions of the Poisson Regression Model

When applying a Poisson GLM to insurance frequency data, the actuary implicitly relies on four key statistical assumptions:

  1. Independence of Events: The occurrence of a claim on policy ii is independent of claims on all other policies, and independent of prior claims on the same policy. This assumption is violated during catastrophic weather events (such as hail storms or freezes that damage thousands of homes simultaneously) or multi-claimant vehicle accidents.
  2. Homogeneous Intensity Over Time: Within any policy's exposure period, the instantaneous rate of claim occurrence μi\mu_i remains constant. In reality, claim intensity fluctuates with seasonal driving patterns, weather changes, and economic cycles.
  3. Equidispersion: The conditional variance of claim counts equals the conditional mean (Var(Yi∣xi)=E[Yi∣xi]\text{Var}(Y_i \mid \mathbf{x}_i) = \mathbb{E}[Y_i \mid \mathbf{x}_i]). In empirical insurance data, this assumption almost never holds; variance typically exceeds the mean, a condition known as overdispersion.
  4. Infinitesimal Probability: Over an infinitesimally small time interval Δt\Delta t, the probability of exactly one claim is approximately μiΔt\mu_i \Delta t, and the probability of two or more claims is negligible (o(Δt)o(\Delta t)).

Actuarial Exam Traps & Implementation Pitfalls

Warning

Trap 1: Passing Raw Exposure as the Offset A common programming error is writing offset = exposure instead of offset = log(exposure). If a policy has an exposure of 0.50.5 car-years, passing 0.50.5 directly into a log-link model multiplies the expected count by exp⁡(0.5)≈1.6487\exp(0.5) \approx 1.6487 instead of scaling it by 0.50000.5000. The offset must always enter on the scale of the link function: ln⁡(ei)\ln(e_i).

Warning

Trap 2: Zero Exposure Policies Causing Numerical Crashes In policy databases, cancelled or null-term policies frequently have earned exposure ei=0e_i = 0. Because ln⁡(0)=−∞\ln(0) = -\infty, fitting a GLM with zero-exposure records causes numerical overflow and crashes the estimation algorithm. All records with ei≤0e_i \le 0 must be identified and removed during data preparation.

Warning

Trap 3: Modeling Frequency Without Weights Fitting a GLM to empirical frequency Yi/eiY_i / e_i without specifying weights = exposure treats a 1-day policy (e=0.0027e = 0.0027) with 1 claim (empirical frequency = 365.0365.0) as equally credible to a 100-vehicle fleet policy (e=100.0e = 100.0) with 1 claim (empirical frequency = 0.010.01). Prior weights equal to exposure are essential to reflect the precision of each observation.

Test Your Knowledge

An actuarial analyst is setting up a GLM in R to model commercial auto liability claim counts across a fleet portfolio. Which model formula correctly specifies claim frequency per earned vehicle-year?

A

glm(claims ~ driver_age + territory + exposure, family = poisson(link = "log"))

B

glm(claims ~ driver_age + territory, offset = exposure, family = poisson(link = "log"))

C

glm(claims / exposure ~ driver_age + territory, family = poisson(link = "identity"))

D

glm(claims ~ driver_age + territory, offset = log(exposure), family = poisson(link = "log"))

Test Your Knowledge

Why are the two modeling specifications—(1) raw claim counts Y_i with offset ln(e_i) and (2) empirical frequency Y_i / e_i with prior weights e_i—statistically equivalent under maximum likelihood estimation?

A

Both formulations yield identical log-likelihood score functions sum_i (y_i - e_i * mu_i) * x_ij = 0, producing identical parameter estimates and covariance matrices.

B

Both formulations mathematically constrain the dispersion parameter phi to exactly zero across all rating iterations.

C

Both formulations eliminate unobserved policyholder heterogeneity through empirical Bayesian credibility shrinkage.

D

Both formulations transform the discrete count distribution into a continuous Gaussian error distribution.

Test Your Knowledge

An actuary fits an unconstrained regression where ln(exposure) is included as a regular covariate rather than a constrained offset, resulting in an estimated exposure coefficient of 0.85. What is the practical consequence if this model is deployed in a rating engine?

A

The model will predict that a policyholder who purchases a 6-month policy pays higher total premium than an identical policyholder who purchases a 12-month policy.

B

The model will violate exposure additivity, causing a policy insured for two consecutive 6-month terms to be charged roughly 11% more total premium than an identical policy insured for a single 12-month term.

C

The model will generate negative claim frequency relativities whenever earned exposure exceeds 1.0 car-year.

D

The model will artificially force the Pearson dispersion statistic to exceed 2.0.

Sections you finish are checked off in the contents.