Un cadre commun à la régression linéaire, à la régression logistique et à la régression de Poisson. On choisit une loi adaptée à la cible (normale, binomiale, Poisson, Gamma) et une fonction de lien. C'est le socle de la tarification en assurance, parce que chaque coefficient se traduit en multiplicateur de prime.
Une boîte à outils avec un seul manche. Le manche, c'est la somme pondérée des variables. On y fixe l'embout adapté à la cible : oui / non, comptage, montant positif.
Binomiale pour un oui / non, Poisson pour un nombre d'événements, Gamma pour un montant positif et asymétrique, normale pour une valeur quelconque.
Elle relie la moyenne prévue à la somme pondérée. Le lien log donne des effets multiplicatifs, le lien logit des probabilités.
Les poids sont estimés par maximum de vraisemblance. En assurance, on multiplie ensuite un GLM de fréquence par un GLM de coût moyen pour obtenir la prime pure.
Pour chaque contrat : profil du conducteur, véhicule, zone, exposition, nombre de sinistres et coût total. Deux questions distinctes : combien de sinistres, et combien coûte chacun ?
Un GLM Poisson donne la fréquence, un GLM Gamma le coût moyen, leur produit la prime pure. Sur le jeu d'exemple, un jeune urbain en 12 CV coûte environ 970 € par an, un conducteur rural expérimenté en 6 CV environ 100 €.
Ici, le coût moyen ne dépend presque pas du profil (multiplicateurs entre 0,94 et 1,01) : l'écart de prime se joue sur la fréquence. On contrôle chaque modèle par segment, puis la prime totale prévue contre la charge observée.
Noms donnés pour R (glm) et Python (scikit-learn : PoissonRegressor, GammaRegressor, TweedieRegressor).
La loi de la cible. En R, family = poisson, binomial, Gamma. En Python, une classe par loi (LogisticRegression pour un oui / non), ou TweedieRegressor qui couvre normale, Poisson et Gamma avec le paramètre power.
Le lien log est la norme en tarification : les effets se multiplient. En R, Gamma utilise par défaut le lien inverse, il faut préciser Gamma(link = "log").
L'exposition entre en offset dans le modèle de fréquence. Dans le modèle de coût moyen, on pondère par le nombre de sinistres.
Les régresseurs GLM de scikit-learn ajoutent par défaut une pénalité Ridge (alpha = 1). Pour retrouver les coefficients de glm(), alpha = 0.
# Prime pure auto : modèle linéaire généralisé (GLM) en R
sinistres <- read.csv("sinistres.csv")
sinistres$jeune <- as.numeric(sinistres$age_conducteur < 25)
sinistres$zone <- factor(sinistres$zone) # référence : periurbain
# 1. Fréquence : loi de Poisson, lien log, exposition en offset
freq <- glm(nb_sinistres ~ jeune + puissance_cv + bonus_malus + zone + offset(log(exposition)),
family = poisson(link = "log"), data = sinistres)
# 2. Coût moyen d'un sinistre : loi Gamma, lien log, sur les contrats sinistrés
avec <- subset(sinistres, nb_sinistres > 0)
avec$cout_moyen <- avec$cout_total / avec$nb_sinistres
cout <- glm(cout_moyen ~ jeune + puissance_cv + bonus_malus + zone,
family = Gamma(link = "log"), weights = nb_sinistres, data = avec)
cat("Effets multiplicatifs sur le coût moyen :\n")
print(round(exp(coef(cout))[-1], 2))
# 3. Prime pure annuelle = fréquence x coût moyen, pour deux profils
profils <- data.frame(jeune = c(1, 0), puissance_cv = c(12, 6), bonus_malus = c(1.2, 0.6),
zone = c("urbain", "rural"), exposition = 1)
prime <- predict(freq, profils, type = "response") * predict(cout, profils, type = "response")
cat("Prime pure jeune urbain 12 CV :", round(prime[1]), "€\n")
cat("Prime pure conducteur rural 6 CV :", round(prime[2]), "€\n")
# Prime pure auto : modèle linéaire généralisé (GLM) en Python
import numpy as np
import pandas as pd
from sklearn.linear_model import PoissonRegressor, GammaRegressor
sinistres = pd.read_csv("sinistres.csv")
sinistres["jeune"] = (sinistres["age_conducteur"] < 25).astype(float)
X = pd.get_dummies(sinistres[["jeune", "puissance_cv", "bonus_malus", "zone"]], drop_first=True, dtype=float)
# 1. Fréquence : loi de Poisson, lien log, pondérée par l'exposition
freq = PoissonRegressor(alpha=0, max_iter=1000)
freq.fit(X, sinistres["nb_sinistres"] / sinistres["exposition"], sample_weight=sinistres["exposition"])
# 2. Coût moyen d'un sinistre : loi Gamma, lien log, sur les contrats sinistrés
avec = sinistres["nb_sinistres"] > 0
cout_moyen = sinistres.loc[avec, "cout_total"] / sinistres.loc[avec, "nb_sinistres"]
cout = GammaRegressor(alpha=0, max_iter=1000)
cout.fit(X[avec], cout_moyen, sample_weight=sinistres.loc[avec, "nb_sinistres"])
print("Effets multiplicatifs sur le coût moyen :")
print(pd.Series(np.exp(cout.coef_), index=X.columns).round(2))
# 3. Prime pure annuelle = fréquence x coût moyen, pour deux profils
profils = pd.DataFrame([[1, 12, 1.2, 0, 1], [0, 6, 0.6, 1, 0]], columns=X.columns, dtype=float)
prime = freq.predict(profils) * cout.predict(profils)
print("Prime pure jeune urbain 12 CV :", round(prime[0]), "€")
print("Prime pure conducteur rural 6 CV :", round(prime[1]), "€")
Le modèle linéaire suppose une cible de loi normale reliée directement à la somme pondérée des variables. Le GLM généralise ces deux points : il accepte d'autres lois (binomiale, Poisson, Gamma) et une fonction de lien entre la moyenne et la somme pondérée.
Parce qu'ils donnent des multiplicateurs lisibles par variable, faciles à intégrer dans une grille tarifaire et à justifier devant un régulateur. Le couple fréquence Poisson et coût Gamma, avec lien log, est le standard historique de la prime pure.
On part de la nature de la cible : binomiale pour un oui / non, Poisson pour un comptage, Gamma pour un montant strictement positif et asymétrique. Pour un coût total qui contient beaucoup de zéros, la loi de Tweedie modélise directement la prime pure.
Le cas particulier pour les comptages, détaillé avec l'exposition et la surdispersion.
Voir la fiche → le GLM binaireLoi binomiale et lien logit : la référence du scoring.
Voir la fiche → le GLM qui courbeRemplace certains effets linéaires par des courbes lisses, avec les mêmes lois et liens.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus