Forecasting

GAMs for Customer Lifetime Value (CLV) prediction

Customer Lifetime Value models are critical for SaaS businesses, but standard regression approaches often predict impossible values like negative revenue or infinite growth. There are established methods to handle this (i.e. constrained optimization, truncation), but these can be complex to implement and maintain in production. Even fewer approaches naturally incorporate business logic while remaining interpretable and deployable. This post demonstrates how to build CLV models that automatically respect business reality using GAMs, creating predictions that make sense without complex constraint matrices or manual bounds checking.

State-Space Vector Autoregressions in mvgam

Vector Autoregressions (VAR models), also known as Multivariate Autoregressions (MAR models), offer a way to model delayed and contemporaneous interactions among sets of multiple time series. These models are widely used in econometrics and psychology, among other fields, where they can be analyzed to ask many interesting questions about potential causality or stability. But software to fit these models to real-world time series, which often present as non-Gaussian counts, proportions or even binary observations with measurement error, is lacking. Here I show how to fit VARs in a State-Space format, and how to interrogate the models to ask meaningful questions about interactions and stability, using the mvgam package in R.

Incorporating time-varying seasonality in forecast models

Many time series show repeated seasonal patterns, and fitting models that can capture this seasonality is a major focus of time series forecasting algorithms. There are a lot of useful, established methods to deal with this (i.e. SARIMA, Harmonic regression), but sometimes the seasonal patterns change over time. Fewer time series and forecasting models can handle this feature. This post introduces some strategies for capturing time-varying seasonality and time-varying periodicity in Dynamic Generalized Additive Models, using the mvgam package in R.