Test d’ajustement et lâcher de bombes

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 https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-16.gif, et on cherchait à tester une hypothèse de la forme

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-13.gif

versus

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-14.gif

Ici on va cherche à utiliser un test sur une loi multinomiale, de la forme

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-01.gif

versus

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-02.gif

L’hypothèse nulle est ici une égalité vectorielle,

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-03.gif

ou encore

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-56.gif

Dans le cas d’un test d’ajustement de lois de Poisson, si on suppose que les observations suivent une loi https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-09.gif, on va utiliser un test sur une loi multinomiale, avec

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-08.gif

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

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-10.gif

Le test est alors basé sur la statistique de Pearson

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-11.gif

qui va suivre (si effectivement les observations suivent une loi de Poisson https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-09.gif) une loi https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-12.gif.
Rappelons que cette statistique peut aussi s’écrire

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-21.gif

 

  • 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 km2 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 km2 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 https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/Nb.gif le nombre de points tombés dans un ensemble https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/asubb.gif (ou https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/calA.gif désigne la région globale). Si on suppose qu’un nombre aléatoire https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/Npois.gif de points sont lancés aléatoirement dans https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/calA.gif, et que https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/Npois.gif suit une loi de Poisson https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/lambda.gif, alors https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/Nb.gif suit une loi de Poisson de paramètre

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/ratio-aire.gif

Bref, si on regarde plusieurs plusieurs régions https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/calB.gif (de même taille, éventuellement – afin de garder toutes les observations – formant une partition de https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/calA.gif) et si on observe une loi de Poisson, c’est que dans la région https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/calA.gif, 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

> logvrais=function(L){sum(log(dpois(y,L))*n)}
> param=seq(.5,1.5,by=.025)
> LV=sapply(param,logvrais)
> plot(param,LV,type="b",col="blue")
https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/logvrais1-bombes.png

La statistique du chi-deux, elle, ressemble à ça

> chi2=function(L)sum(n)*sum(((n/sum(n)-dpois(y,L))^2)/dpois(y,L))
> C2=sapply(param,chi2)
> plot(param,C2,type="b",col="red")xxx.
https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-bombes.png

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(1
[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(2)^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,

https://f-origin.hypotheses.org/wp-content/blogs.dir/253/files/2015/12/chi2-bombes-v2.png

et le trait horizontal est la valeur seuil de la région critique (en dessous, on accepte l’ajustement d’une loi de Poisson),

> abline(h=qchisq(.95,length(y)-1),lty=2)

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…

  1. freq.theo-freq.emp)^2)/freq.theo []
  2. n/sum(n)-c(dpois(y,L),1-ppois(4,L []

One thought on “Test d’ajustement et lâcher de bombes”

  1. je n’arrive pas à croire que tu es en train d’expliquer aux terroristes que foutre des bombes aléatoirement, c’est la stratégie optimale qu’ils doivent mettre en place. Incroyable !!

    🙂

    RÉPONSE: attends, toutes les armées savent ça quand même ! ou alors ils visent vraiment mal !

Leave a Reply

Your email address will not be published. Required fields are marked *