Avant les applications demain en cours, un petit billet (presque d'actualité) sur une application évoquée vendredi dernier sur le test du chi-deux: l'ajustement de lois.

Le problème est le suivant: un pays se fait bombarder. Et les dirigeants doivent se demander si certaines cibles sont visées (auquel cas il peut être légitime de les déplacer) ou au contraire si les tirs sont aléatoires. Quand je dis que des cibles sont visées, j'entends aussi par là que les pilotes savent viser. Car les pilotes ont (je pense, ou j'espère) un carnet de route à suivre, avec des cibles à viser

Ce que l'on va se demander c'est plutôt si les pilotes savent - ou arrive à - viser. Bref, le problème peut se modéliser en supposant que le lancer de bombes se fait (globalement) selon un processus de Poisson. Localement, si les tirs sont aléatoires, on devrait observer des tirages de lois de Poisson. C'est tout du moins la théorie que R. D. Clarke (alors actuaire chez Prudential Assurance Company) a utilisé pendant la seconde guerre mondiale, sur les bombardements à Londres (en ligne
ici). Cette histoire (vraie) est reprise par Thomas Pynchon dans
Gravity's Rainbow (en ligne
ici)

(l'exemple est même repris dans Feller). Bref, le problème n'est pas de savoir quel serait le paramètre de la loi de Poisson, mais si la loi de Poisson est adaptée, ou pas. C'est ce qu'on appelle un problème d'ajustement de loi.
- Test du chi-deux et ajustement de
lois
Jusqu'à présent, on avait supposé que les observations suivaient une
certaine loi, e.g. une loi de Poisson

, et
on cherchait à tester une hypothèse de la forme
versus
Ici on va cherche à utiliser un test sur une loi multinomiale, de la
forme
versus
L'hypothèse nulle est ici une égalité vectorielle,
ou encore
Dans le cas d'un test d'ajustement de lois de Poisson, si on suppose que les observations suivent une loi

, on va utiliser un test sur une loi multinomiale, avec
Le soucis est que, puisque l'on se limite à un vecteur de taille finie, le vecteur ne sera pas dans le simplexe (cf
ici). Donc classiquement, pour la dernière valeur, on retient une hypothèse de la forme
Le test est alors basé sur la statistique de Pearson
qui va suivre (si effectivement les observations suivent une loi de Poisson

) une loi

.
Rappelons que cette statistique peut aussi s'écrire

- Application pour étudier la
précision d'un lancer de bombes
Pendant la second guerre mondiale, R.D. Clarke étudia les impacts de bombes V1 et V2 tombées dans
une zone de 144 km
2 dans le sud de Londres (l'article original, publié après guerre en 1946, est en ligne
ici).
Il divisa cette zone en 576 zones de 0,25 km
2 et compta le
nombre d'impact dans chacune des zones. Il obtint plus précisément la
distribution suivante
nbre
impacts par zone
|
0
|
1
|
2
|
3
|
4
|
5 et plus
|
fréquence
(nbre zones)
|
229
|
211
|
93
|
35
|
7
|
1
|
(en fait, on sait que le "5 et plus" correspond à 7, car sait qu'il y a
eu 537 bombes sur 576 zones). Avant de se lancer tête baissée, réfléchissons un peu au type de loi que
l'on pourrait utiliser. Pour cela, notons

le
nombre de
points tombés dans un ensemble

(ou

désigne la région globale). Si on suppose qu'un nombre
aléatoire

de
points sont lancés
aléatoirement
dans

, et
que

suit
une
loi de Poisson

,
alors

suit une
loi de Poisson de
paramètre
Bref, si on regarde plusieurs plusieurs régions

(de même taille, éventuellement - afin de garder toutes les observations - formant une partition de

) et si
on observe une loi de Poisson, c'est que dans la région

, les
tirs sont faits
au hasard.
> (n=c(229,211,93,35,7,0,0,1))
[1] 229 211 93 35 7 0 0 1
> y=0:7
> (lambda=sum(n*y)/sum(n))
[1] 0.9322917
> prob=dpois(y,lambda)
> freq.theo=sum(n)*prob
> freq.emp =n
> cbind(y,trunc(freq.theo),freq.emp)
y freq.emp
[1,] 0 226 229
[2,] 1 211 211
[3,] 2 98 93
[4,] 3 30 35
[5,] 4 7 7
[6,] 5 1 0
[7,] 6 0 0
[8,] 7 0 1
On peut commencer par regarder la log-vraisemblance
La statistique du chi-deux, elle, ressemble à ça
Bon, le soucis c'est qu'en tronquant le vecteur (on suppose que le nombre maximum d'impact est 7), la somme des probabilités ne fait
pas
exactement un. On peut
regrouper dans une même
classe
les fréquences élevées (comme le fait Clarke dans le papier initial
d'ailleurs).
> (n=c(229,211,93,35,7,1))
[1] 229 211 93 35 7 1
> y=0:4
> prob=c(dpois(y,lambda),1-ppois(4,lambda))
> freq.theo=sum(n)*prob
> freq.emp =n
> (Q=sum( ((freq.theo-freq.emp)^2)/freq.theo ))
[1] 1.169155
> 1-pchisq(Q,length(y)-1)
[1] 0.8831505
On retrouve les quantités évoquées dans l'article de Clarke. La
statistique de test vaut 1.16 et la
p-value
associée est de l'ordre de 88%. On va donc accepter l'hypothèse de loi
de Poisson,
> chi2=function(L){
+ sum(n)*sum( ((n/sum(n)-c(dpois(y,L),1-ppois(4,L)))^2)/
+ c(dpois(y,L),1-ppois(4,L)) )}
> C2=sapply(param,chi2)
> plot(param,C2,type="b",col="red")
La valeur de la statistique du chi-deux en fonction du paramètre de la
loi de Poisson est représentée ci-dessous,
et le trait horizontal est la valeur seuil de la région critique (en
dessous, on accepte l'ajustement d'une loi de Poisson),
Il existe plusieurs fonctions sous R permettant de faire des choses
semblables,
> library(vcd)
> (n=c(229,211,93,35,7,0,0,1))
[1] 229 211 93 35 7 0 0 1
> nsim=c(rep(y[0],n[0]),rep(y[1],n[1]),
rep(y[2],n[2]),rep(y[3],n[3]),
rep(y[4],n[4]),rep(y[5],n[5]),
rep(y[6],n[6]),rep(y[7],n[7]),
rep(y[8],n[8]))
> gf=goodfit(nsim,type="poisson",method="ML")
> summary(gf)
Goodness-of-fit test for poisson distribution
X^2 df P(> X^2)
Likelihood Ratio 4.007784 3 0.2606249
> gf=goodfit(nsim,type="poisson",method="MinChisq")
> summary(gf)
Goodness-of-fit test for poisson distribution
X^2 df P(> X^2)
Pearson 1.275499 3 0.7349592
Bref, quelle que soit la méthode utilisée, on notera que l'on accepte toujours l'hypothèse d'une loi de Poisson.
Autrement dit les bombes étaient envoyés un peu au hasard dans
Londres....

Et si on y réfléchit un peu, d'un point de vue de la théorie des jeux, c'est effectivement une stratégie optimale...