Freakonometrics

To content | To menu | To search

Tag - segmentation

Entries feed - Comments feed

Wednesday, December 5 2012

Interview sur mutualisation versus segmentation

Hier, j'ai été un peu surpris quand un ancien collègue en France m'a parlé d'une interview exclusive (de moi) sur http://argusdelassurance.com/.... Puis je me suis souvenu qu'il y a quelques semaines, Madeleine m'avait contacter pour me poser quelques questions sur les assurance « à la carte », et la plus grande modularité des produits. Elle avait mis le doigt sur deux questions importantes, "comment procéder au calcul quand les offres sont personnalisées" et "est-ce intéressant pour l'assureur, pour l’assureur" ? Pour la première partie, c'est technique, et ça correspond à ce qu'on fait dans les cours de tarification (on en reparle dans quelques semaines, promis). Par contre le second point est plus troublant. Avec la théorie économique d'un côté, et les principes d'antisélection et d'aléa moral, mais qui insiste sur la nécessité, et pas l'intérêt de la segmentation... Afin de partager mon point de vue sur ces problèmes, j'avais voulu reprendre simplement un modèle qu'on avait utilisé dans le livre avec Michel Denuit (tome 1). Cet exemple nécessite un peu de formalisation, et j'ai été très surpris de voir que Madeleine l'avait gardé. Mieux, qu'elle l'avait clarifié (il faut dire qu'elle m'avait demandé un courriel en fin de journée, et que j'avais tapé ça rapidement, tout en faisant les devoirs des grands, et le bain de la plus petite... quand je relis ce que j'avais envoyé, et ce qu'elle en a fait, je suis admiratif). Mais prenons deux minutes pour reformuler cette histoire de segmentation d'un marché de l'assurance...

Commençons par le cas le plus simple, sans segmentation, avec mutualisation parfaite (et donc prime unique). En utilisant un principe de prime pure, si http://latex.codecogs.com/gif.latex?S désigne la perte (aléatoire) pour les assurés, la prime à payer serait http://latex.codecogs.com/gif.latex?\mathbb{E}(S). Et dans ce cas, en moyenne, le bilan de l'assureur serait équilibré, car http://latex.codecogs.com/gif.latex?\mathbb{E}(S-\mathbb{E}(S))=0. Si on regarde l'incertitude associée aux dépenses (disons la variance pour faire simple), les assurés n'ont aucune variance car la dépense est la même pour tous. Tout le risque (la variance) est à la charge de l'assureur. On peut résumer ça dans le petit tableau suivant,


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S)

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance
http://latex.codecogs.com/gif.latex?0

http://latex.codecogs.com/gif.latex?\text{Var}(S)

On a ici la répartition des dépenses et du risque (que nous appellerons variance, à la Markowitz) entre l'assureur et les assurés assez simple, et on a un mécanisme de transfert des risques pur.

Continuons dans un monde parfait (disons avec information parfaite) mais avec cette fois de la segmentation (parfaite). Autrement dit, si la variable de risque est un variable http://latex.codecogs.com/gif.latex?\Omega, connue par l'assureur, alors il devrait faire payer http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\Omega) pour un assuré portant le risque http://latex.codecogs.com/gif.latex?\Omega. Cette fois, la décomposition des dépenses et des risques se fait de la manière suivante


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\Omega)

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S)

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\Omega))

http://latex.codecogs.com/gif.latex?\text{Var}(S-\mathbb{E}(S|\Omega))

Cette fois, l'assureur prend à sa charge la composante des risques purement aléatoire, mais les assurés prennent à leur charge une partie de la variabilité, correspondant à l'hétérogénéité du portefeuille. On notera que la variance de l'assureur est ici http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\Omega)): on retrouve ici la formule classique de décomposition de la variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\Omega))+\mathbb{E}(\text{Var}(S|\Omega))=\text{Var}(S)

On a ici une première composante qui repose sur les assurés, et la seconde sur les assureurs. C'est d'ailleurs le théorème de Pythagore, avec la variance liée à l'hétérogénéité à gauche, et à droite, la composante purement aléatoire.

Mais dans la vraie vie http://latex.codecogs.com/gif.latex?\Omega (le risque intrinsèque de l'assuré) n'est pas connu. On doit faire une segmentation imparfaite: on dispose de quelques variables explicatives, que l'on notera par un vecteur http://latex.codecogs.com/gif.latex?\boldsymbol{X}, et on va essayer de construire un proxy de la variable de risque http://latex.codecogs.com/gif.latex?\Omega (c'est le but des méthodes économétriques appliquées en tarification). La décomposition entre l'assureur et ses assurés se fait de la manière suivante


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\boldsymbol{X})

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S|\boldsymbol{X})

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\boldsymbol{X}))

http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\boldsymbol{X}))

qui correspond à la décomposition précédente, en remplaçant la variable non-observée http://latex.codecogs.com/gif.latex?\Omega par le proxy construit à partir de http://latex.codecogs.com/gif.latex?\boldsymbol{X}.   Là encore, en moyenne, l'assureur est à l'équilibre, car

http://latex.codecogs.com/gif.latex?\mathbb{E}(\mathbb{E}(S|\boldsymbol{X}))=\mathbb{E}(S)

autrement dit segmenter n'a pas de conséquence, en moyenne, sur le résultat de l'assureur. Par contre, la variance de l'assureur est ici

http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\boldsymbol{X}))=\mathbb{E}(\text{Var}(S|\Omega))+\mathbb{E}(\text{Var}(\mathbb{E}(S|\Omega)|\boldsymbol{X}))

et la variance total du portefeuille est alors la somme

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\boldsymbol{X}))+\mathbb{E}(\text{Var}(S|\Omega))+\mathbb{E}(\text{Var}(\mathbb{E}(S|\Omega)|\boldsymbol{X}))

avec à gauche, un terme lié à la segmentation, au centre le hasard, et à droite, un terme de solidarité entre assuré (qu'on pourrait appeler de mutualisation), lié au fait que le risque n'est que partiellement assurable. C'est la mutualisation résiduelle qui peut exister en assurance santé si on exclue les tests génétiques: à partir de quelles variables explicatives http://latex.codecogs.com/gif.latex?\boldsymbol{X}, on peut inférer le risque de maladie, mais moins que si des tests génétiques permettaient d'approcher http://latex.codecogs.com/gif.latex?\Omega avec une plus grande précision... Autrement dit, segmenter imparfaitement, ou partiellement, permet de maintenir un effet de mutualisation dans le portefeuille.... de faire de l'assurance en quelque sorte...

Thursday, September 8 2011

ACT2040, segmentation et techniques de biais minimal

Mardi prochain, nous aborderons les techniques de segmentation lorsque les variables discriminantes sont qualitatives. Une très vieille méthode est dite de biais minimal. Pas mal de choses ont été publiées sur ces techniques (e.g. ici pour un survol très opérationnel). Car il y en a plusieurs, et il n'y a pas de consensus sur la meilleure méthode.

L'idée est qu'on dispose, en plus d'une information sur la sinistralité, de variables sur le conducteur, comme le sexe, ou la région d'habitation.
> base=read.table("http://freakonometrics.blog.free.fr/public/data/base-biais-minimal.txt",
+ header=TRUE,sep=";")
> head(base)
sexe lieu claims
1 F banlieue 0
2 F banlieue 0
3 H banlieue 0
4 H ville 0
5 H ville 0
6 F campagne 0
On pourrait tarifer en utilisant la prime pure empirique (i.e. la moyenne empirique)
> mean(base$claims)
[1] 0.09333333
mais la population semble relativement hétérogène.
> (POPULATION=table(base$sexe,base$lieu))
 
banlieue campagne ville
F 250 50 150
H 200 100 300
 
> SINISTRE=POPULATION
> SINISTRE[1,]=tapply(base[base$sexe==rownames(POPULATION)[1],]$claims,
+ base[base$sexe==rownames(POPULATION)[1],]$lieu,sum)
> SINISTRE[2,]=tapply(base[base$sexe==rownames(POPULATION)[2],]$claims,
+ base[base$sexe==rownames(POPULATION)[2],]$lieu,sum)
> SINISTRE
 
banlieue campagne ville
F 21 4 12
H 22 9 30
 
> (FREQUENCE=SINISTRE/POPULATION)
 
banlieue campagne ville
F 0.084 0.080 0.080
H 0.110 0.090 0.100
Une première piste est complètement non-paramétrique: on utilise ces fréquences empiriques comme base tarifaire. Mais on se rend compte que si des sous-groupes sont de taille petite, les fréquences empiriques seront très volatiles, et pourront passer du simple au double d'une année sur l'autre. On va donc tenter un modèle paramétrique. Formalisons un peu. Comme dans notre exemple, on note http://freakonometrics.blog.free.fr/public/perso4/minb01.gif la fréquence empirique observée lorsque la première variable (que l'on notera http://freakonometrics.blog.free.fr/public/perso4/minb08.gif) prend la valeur http://freakonometrics.blog.free.fr/public/perso4/minb03.gif (ici http://freakonometrics.blog.free.fr/public/perso4/minb03.gif prend deux valeurs, homme ou femme) et la second variable http://freakonometrics.blog.free.fr/public/perso4/inb09.gif prend la valeur http://freakonometrics.blog.free.fr/public/perso4/MINB04.gif (ici http://freakonometrics.blog.free.fr/public/perso4/MINB04.gif prend trois valeurs, ville, banlieue et campagne). On notera http://freakonometrics.blog.free.fr/public/perso4/minb02.gif l'exposition, i.e. ici le nombre d'assurés.
L'estimation de http://freakonometrics.blog.free.fr/public/perso4/minb10.gif et de http://freakonometrics.blog.free.fr/public/perso4/minb11.gif se fait généralement de trois manières. Par moindres carrés, i.e. en cherchant a minimiser
http://freakonometrics.blog.free.fr/public/perso4/minb12.gif
La condition du premier ordre donne ici
http://freakonometrics.blog.free.fr/public/perso4/minb13.gif
soit
http://freakonometrics.blog.free.fr/public/perso4/min14.gif
L'autre condition du premier ordre donne
http://freakonometrics.blog.free.fr/public/perso4/minb15.gif
On résout alors ce petit système de manière itérative (car il n'y a pas de solution analytique simple).
> L=matrix(NA,100,2);C=matrix(NA,100,3)
> L[1,]=c(1,1);colnames(L)=rownames(POPULATION)
> C[1,]=c(1,1,1);colnames(C)=colnames(POPULATION)
> for(j in 2:100){
+ L[j,1]=sum(SINISTRE[1,]*C[j-1,])/sum(POPULATION[1,]*C[j-1,]^2)
+ L[j,2]=sum(SINISTRE[2,]*C[j-1,])/sum(POPULATION[2,]*C[j-1,]^2)
+ C[j,1]=sum(SINISTRE[,1]*L[j,])/sum(POPULATION[,1]*L[j,]^2)
+ C[j,2]=sum(SINISTRE[,2]*L[j,])/sum(POPULATION[,2]*L[j,]^2)
+ C[j,3]=sum(SINISTRE[,3]*L[j,])/sum(POPULATION[,3]*L[j,]^2)
+ }
> L[c(1:5,98:100),]
F H
[1,] 1.00000000 1.0000000
[2,] 0.08222222 0.1016667
[3,] 0.08099202 0.1024439
[4,] 0.08092684 0.1024843
[5,] 0.08092343 0.1024864
[6,] 0.08092324 0.1024865
[7,] 0.08092324 0.1024865
[8,] 0.08092324 0.1024865
 
> C[c(1:5,98:100),]
banlieue campagne ville
[1,] 1.000000 1.0000000 1.0000000
[2,] 1.054823 0.9068653 0.9809860
[3,] 1.057697 0.9045362 0.9789077
[4,] 1.057847 0.9044141 0.9787988
[5,] 1.057854 0.9044077 0.9787931
[6,] 1.057855 0.9044074 0.9787928
[7,] 1.057855 0.9044074 0.9787928
[8,] 1.057855 0.9044074 0.9787928
 
> PREDICTION1=SINISTRE
> PREDICTION1[1,]=L[100,1]*C[100,]
> PREDICTION1[2,]=L[100,2]*C[100,]
> PREDICTION1
 
banlieue campagne ville
F 0.08560504 0.07318758 0.07920709
H 0.10841583 0.09268954 0.10031304
On note que l'itération converge très vite, même en partant de n'importe quelle valeur (ici 1 partout, mais on aurait pu être plus malin, et prendre la moyenne empirique sur la population entière, par exemple).
Une seconde idée est d'utiliser un "principe de balancement": on veut que, par modalité, les prédictions coïncident avec les valeurs empiriques. Formellement, on veut
http://freakonometrics.blog.free.fr/public/perso4/minb20.gif
en somment sur la ligne i, ou sur la colonne j
http://freakonometrics.blog.free.fr/public/perso4/inb21.gif
La première équation donne
http://freakonometrics.blog.free.fr/public/perso4/minb22.gif
et la seconde
http://freakonometrics.blog.free.fr/public/perso4/inb24.gif}
La encore, une méthode itérative permet de calculer numériquement les solutions de ces équations.
> L=matrix(NA,100,2);C=matrix(NA,100,3)
> L[1,]=c(1,1);colnames(L)=rownames(POPULATION)
> C[1,]=c(1,1,1);colnames(C)=colnames(POPULATION)
> for(j in 2:100){
+ L[j,1]=sum(SINISTRE[1,])/sum(POPULATION[1,]*C[j-1,])
+ L[j,2]=sum(SINISTRE[2,])/sum(POPULATION[2,]*C[j-1,])
+ C[j,1]=sum(SINISTRE[,1])/sum(POPULATION[,1]*L[j,])
+ C[j,2]=sum(SINISTRE[,2])/sum(POPULATION[,2]*L[j,])
+ C[j,3]=sum(SINISTRE[,3])/sum(POPULATION[,3]*L[j,])
+ }
> PREDICTION2=SINISTRE
> PREDICTION2[1,]=L[100,1]*C[100,]
> PREDICTION2[2,]=L[100,2]*C[100,]
> PREDICTION2
 
banlieue campagne ville
F 0.08558024 0.07376881 0.07944334
H 0.10802471 0.09311559 0.10027833
On peut d'ailleurs vérifier que les conditions de balancement sont vérifiées
> sum(PREDICTION2[1,]*POPULATION[1,])
[1] 37
 
> sum(SINISTRE[1,])
[1] 37
 
> sum(PREDICTION2[2,]*POPULATION[2,])
[1] 61
 
> sum(SINISTRE[2,])
[1] 61
 
> sum(PREDICTION2[,1]*POPULATION[,1])
[1] 43
 
> sum(SINISTRE[,1])
[1] 43
 
> sum(PREDICTION2[,2]*POPULATION[,2])
[1] 13
 
> sum(SINISTRE[,2])
[1] 13
 
> sum(PREDICTION2[,3]*POPULATION[,3])
[1] 42
 
> sum(SINISTRE[,3])
[1] 42
Enfin, la dernière solution que l'on verra peut-être d'utiliser un critère de type chi-deux. On cherche alors a minimiser
http://freakonometrics.blog.free.fr/public/perso4/minb30.gif
La encore on utilise les conditions du premier ordre, et on obtient
http://freakonometrics.blog.free.fr/public/perso4/minb25.gif
et une expression du même genre pour http://freakonometrics.blog.free.fr/public/perso4/minb07.gif.
> L=matrix(NA,100,2);C=matrix(NA,100,3)
> L[1,]=c(1,1);colnames(L)=rownames(POPULATION)
> C[1,]=c(1,1,1);colnames(C)=colnames(POPULATION)
> for(j in 2:100){
+ L[j,1]=sqrt(sum(POPULATION[1,]*FREQUENCE[1,]^2/C[j-1,])/sum(POPULATION[1,]*C[j-1,]))
+ L[j,2]=sqrt(sum(POPULATION[2,]*FREQUENCE[2,]^2/C[j-1,])/sum(POPULATION[2,]*C[j-1,]))
+ C[j,1]=sqrt(sum(POPULATION[,1]*FREQUENCE[,1]^2/L[j,])/sum(POPULATION[,1]*L[j,]))
+ C[j,2]=sqrt(sum(POPULATION[,2]*FREQUENCE[,2]^2/L[j,])/sum(POPULATION[,2]*L[j,]))
+ C[j,3]=sqrt(sum(POPULATION[,3]*FREQUENCE[,3]^2/L[j,])/sum(POPULATION[,3]*L[j,]))
+ }
> PREDICTION3=SINISTRE
> PREDICTION3[1,]=L[100,1]*C[100,]
> PREDICTION3[2,]=L[100,2]*C[100,]
> PREDICTION3
 
banlieue campagne ville
F 0.08561009 0.07389097 0.07946408
H 0.10802438 0.09323697 0.10026923
On peut d'ailleurs visuellement confirmer l'intuition que les trois méthodes donnent des résultats relativement proches (avec les femmes a gauche et les hommes a droite)

Pour aller un peu plus loin, il existe des liens avec les GLM (comme évoqués en détails ici ou la, par exemple). En fait, formellement, la première méthode fait penser au modèle linéaire (c'est a dire un modèle Gaussien), sauf que le modèle est ici multiplicatif, c'est a dire avec un lien logarithmique. En faisant une régression GLM gaussienne avec un lien log, on retrouve des prédictions par classes très très proches,
> reggauslog=glm(claims~lieu+sexe,data=base,
+ family=gaussian(link="log"),start=c(1,1,1,1))
> summary(reggauslog)
 
Call:
glm(formula = claims ~ lieu + sexe, family = gaussian(link = "log"),
data = base, start = c(1, 1, 1, 1))
 
Deviance Residuals:
Min 1Q Median 3Q Max
-0.10842 -0.10031 -0.09269 -0.07921 0.92681
 
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.45801 0.18441 -13.329 <2e-16 ***
lieucampagne -0.15671 0.31194 -0.502 0.615
lieuville -0.07768 0.20844 -0.373 0.709
sexeH 0.23623 0.20850 1.133 0.257
---
Signif. codes: 0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
 
(Dispersion parameter for gaussian family taken to be 0.08483775)
 
Null deviance: 88.853 on 1049 degrees of freedom
Residual deviance: 88.730 on 1046 degrees of freedom
AIC: 395.28
 
Number of Fisher Scoring iterations: 9
 
> base0=data.frame(sexe=factor(rep(rownames(FREQUENCE),3)),
+ lieu=factor(rep(colnames(FREQUENCE),each=2)))
> matrix(predict(reggauslog,newdata=base0,type="response"),2,3)
[,1] [,2] [,3]
[1,] 0.08560498 0.07318789 0.07920718
[2,] 0.10841564 0.09268984 0.10031306
Par contre le second coïncide avec la régression de Poisson (avec toujours un lien log, pour garder la structure multiplicative). Ce résultat était évoqué sur ce blog ici (la méthode de balancement étant parfois connue sous le nom de "méthode des marges").
> regpoislog=glm(claims~lieu+sexe,data=base,
+ family=poisson(link="log"),start=c(1,1,1,1))
> summary(regpoislog)
 
Call:
glm(formula = claims ~ lieu + sexe, family = poisson(link = "log"),
data = base, start = c(1, 1, 1, 1))
 
Deviance Residuals:
Min 1Q Median 3Q Max
-0.4648 -0.4478 -0.4315 -0.3986 1.8334
 
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.45830 0.18646 -13.184 <2e-16 ***
lieucampagne -0.14852 0.31978 -0.464 0.642
lieuville -0.07441 0.22170 -0.336 0.737
sexeH 0.23291 0.21355 1.091 0.275
---
Signif. codes: 0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
 
(Dispersion parameter for poisson family taken to be 1)
 
Null deviance: 464.83 on 1049 degrees of freedom
Residual deviance: 463.52 on 1046 degrees of freedom
AIC: 667.52
 
Number of Fisher Scoring iterations: 9
 
> matrix(predict(regpoislog,newdata=base0,type="response"),2,3)
[,1] [,2] [,3]
[1,] 0.08558023 0.07376881 0.07944334
[2,] 0.10802471 0.09311559 0.10027833
Bref, on rediscutera des méthodes de biais minimal, avant de revenir sur des rappels de probabilités et de statistiques, et de commencer l'étude des GLM.

Friday, February 25 2011

Pour une tarification de l'assurance automobile à l'aide du tour de poitrine !

Plusieurs sites spécialisés en assurance commencent à évoquer un arrêté probable de la cour européenne sur la discrimination en assurance (par exemple ici ou ). Une des bases (économiques) de l'assurance est le principe d'Akerlof qui pousse les assureurs à segmenter par classe de risque. Afin de segmenter, et de révéler les classes de risques, on utilise l'historique de sinistralité (information dite a posteriori), ou bien des informations exogènes (dites a priori) sur le conducteur, le véhicule, son usage, etc. Par exemple on peut utiliser l'ancienneté du véhicule, et le nombre de kilomètre effectués (en moyenne) par le conducteur, comme sur le graphique ci-dessous (retrouvé dans les transparents que l'on utilisait avec François Bucchini quand on donnait le cours d'assurance dommage à l'ENSAE, les probas étant "normalisées" dans une espère de base 100)

ou encore le type de carburant utilisé (diesel ou essence)

On retrouve que plus on conduit, plus la probabilité d'avoir un accident augmente, mais le carburant et l'âge du véhicule semblent être aussi des variables discriminantes. Et parmi les variables qui semblent significatives (pour expliquer la probabilité d'avoir un accident), il y a le sexe (croisé ici avec le kilométrage, comme auparavant),

Alors l'effet peut sembler marginal sur ce graphique... mais c'est loin d'être le cas. Par exemple, sans utiliser des techniques très poussées en économétrie, on peut regarder le nombre moyen de sinistres, et le coût moyen de sinistres, par sexe, et par tranche d'âge (voire aussi par CSP et par puissance du véhicule). Dans une étude faite par un assureur, j'avais trouvé les chiffres suivants

En haut à droite (beaucoup d'accidents, et coût - en moyenne - élevé) on retrouve les jeunes hommes. Donc oui, les jeunes hommes sont significativement beaucoup plus risqués que les autres conducteurs. Et le soucis est que, si on ne segmente pas, Georges Akerlof nous explique que le marché de l'assurance disparait, les "bons" risques ne voulant plus payer pour les "mauvais" risques. Sans pour autant rentrer dans une spirale infernale de la segmentation, il est bon que les primes restent corrélées au risque sous-jacent.

Les assureurs prétendent qu'ils ne «ne font pas de la discrimination, ils font de la différenciation ». Je ne rentrerais pas sur les débats de terminologie (pas aujourd'hui en tous les cas), mais le but n'est pas de trouver des variables "explicatives" de la sinistralité au sens causal (malgré la terminologie usuelle des économètres) mais de trouver des variables "corrélées" avec une forte sinistralité, et de les utiliser pour segmenter. Les assureurs européen avaient, jusqu'alors, bénéficié d'un sursis dans le calcul des primes qui leur permet de pratiquer des tarifs différents « lorsque le sexe est un facteur déterminant dans l’évaluation des risques».

Dans un cours d'analyse de données, j'avais montré (ici) qu'à partir des notes de étudiant(e)s à différents examens, je pouvais prédire le sexe des étudiants. Bon, l'étude avait été faite rapidement, avec un petit jeu de données (et donc sans population d'apprentissage et de test), mais il est facile de trouver des variables permettant de deviner le sexe d'un conducteur. D'aucuns pourraient être tentés d'utiliser la pointure des chaussures, mais personnellement je préférerais le tour de poitrine, ou un tour de poitrine ramené à un tour de hanche. Je suis presque sûr qu'avec de telles observations, on peut avoir des variables fortement corrélées avec la survenance d'accident ! En tous les cas ça promet un peu d'animation chez les agents d'assurance ! voire chez les chirurgiens esthétiques (retirer les implants mammaires pour faire baisser sa prime d'assurance auto, voilà qui est original) !