Qu’est-ce que l’indépendance conditionnelle ?

14 septembre 2010

L’autre jour, je lisais un bouquin de stats et je suis tombé sur l’exemple ci-dessous expliquant ce qu’est l’indépendance conditionnelle (par rapport à l’indépendance tout court bien sûr). Je l’ai donc recopié ici afin de ne pas l’oublier.

Le problème. Considérons deux usines, A et B, fabriquant des montres. L’usine A fabrique en moyenne une montre cassée sur 100, et la B une sur 200. Maintenant supposons qu’un revendeur reçoive une livraison de montres sans savoir de quelle usine elles proviennent. Il regarde la première montre: elle marche. Quelle est la probabilité que la seconde marche aussi ?

La formalisation. Soit X_n l’état de la n-ième montre livrée, avec X_n = 1 si elle marche et X_n = 0 sinon. Soit Y l’usine d’origine. A priori on n’a aucun indice sur l’usine de provenance, donc on pose l’hypothèse suivante:

P( Y = A ) = P( Y = B ) = \frac{1}{2}

On suppose aussi que, sachant Y = A, les états des montres testées successivement sont indépendants (idem pour Y = B):

P( X_1 = 1, X_2 = 0 | Y = A ) = P( X_1 = 1 | Y = A ) \times \\ P( X_2 = 0 | Y = A )

Par contre, on sait quand même que P( X_n = 0 | Y = A ) = 0.01 et que P( X_n = 0 | Y = B ) = 0.005.

La reformulation de la question. On veut ici calculer P( X_2 = 1 | X_1 = 1 ).

La solution. D’après la formule de Bayes, on peut écrire:

P( X_2 = 1 | X_1 = 1 ) = P( X_1 = 1, X_2 = 1 ) / P( X_1 = 1 )

Or on peut aussi dire que le numérateur vaut:

P( X_1 = 1, X_2 = 1 ) = P( X_1 = 1, X_2 = 1 | Y = A ) \times \\ P( Y = A ) + P( X_1 = 1, X_2 = 1 | Y = B ) \times P( Y = B )

En utilisant le fait que X_1 et X_2 sont indépendants conditionnellement à Y:

P( X_1 = 1, X_2 = 1 ) = P( X_1 = 1 | Y = A ) \times P( X_2 = 1 | Y = A ) \times P( Y = A ) + P( X_1 = 1 | Y = B ) \times P( X_2 = 1 | Y = B ) \times P( Y = B )

Puis en remplaçant par les valeurs numériques:

P( X_1 = 1, X_2 = 1 ) = \frac{99}{100} \times \frac{99}{100} \times \frac{1}{2} + \frac{199}{200} \times \frac{199}{200} \times \frac{1}{2}

On aboutit à:

P( X_1 = 1, X_2 = 1 ) = \frac{1}{2} \times ( \frac{99}{100}^2 + \frac{199}{200}^2 )

De même, le dénominateur vaut:

P( X_1 = 1 ) = P( X_1 = 1 | Y = A ) \times P( Y = A ) + \\ P( X_1 = 1 | Y = B ) \times P( Y = B )

P( X_1 = 1 ) = \frac{1}{2} \times ( \frac{99}{100} + \frac{199}{200} )

En mettant les deux ensembles, on obtient:

P( X_2 = 1 | X_1 = 1 ) = \frac{ \frac{99}{100}^2 + \frac{199}{200}^2 }{ \frac{99}{100} + \frac{199}{200} }

P( X_2 = 1 | X_1 = 1 ) = 0.9925063

La différence entre « indépendant » et « conditionnellement indépendant ». Il faut bien noter que les états des deux montres ne sont pas indépendants « tout court », mais indépendants conditionnellement à leur usine de provenance… Et oui, si les états des deux montres étaient inconditionnellement indépendants, on aurait:

P( X_2 = 1 | X_1 = 1 ) = P( X_2 = 1 )

Et de là:

P( X_2 = 1 ) = P( X_2 = 1 | Y = A ) \times P( Y = A ) + P( X_2 = 1 | Y = B ) \times P( Y = B )

Soit encore:

P( X_2 = 1 ) = \frac{1}{2} \times ( \frac{99}{100} + \frac{199}{200} )

P( X_2 = 1 ) = 0.9925

Alors oui c’est proche, mais ce n’est pas égal…

Publicités

Utiliser R pour placer des lycées sur la carte d’Ile-de-France

12 septembre 2010

Prenons un exemple au hasard, tiens, une liste de lycées d’Ile-de-France. Je veux apprendre à utiliser R pour tracer une carte de l’Ile-de-France et y placer dessus les lycées de ma liste.

Pourquoi R ? parce que c’est un environnement informatique de calcul statistique disposant de fonctionnalités graphiques, et puis c’est libre et gratuit, et ça fonctionne sur Windows, Linux et Mac OS. Donc tout lecteur de ce billet peut tester sur son propre ordinateur si je ne raconte pas n’importe quoi.

Tout d’abord, il me faut récupérer les données géographiques de ma carte. Pour cela, je vais sur le site GADM (global administrative areas) qui met gracieusement à disposition une base de données contenant les coordonnées spatiales des régions administratives du monde entier. Puis je télécharge les données correspondant à la France, niveau 2, au format « R data ».

Avant d’aller plus loin, je dois installer plusieurs librairies R spécialisées dans les coordonnées spatiales: « sp », « maptools », gpclib » et l’excellent « ggplot2 ». La procédure d’installation est simple: ouvrez R et utilisez la commande install.packages( « sp » ). Pour ceux qui utilisent Ubuntu, l’installation de « maptools » directement dans R utilise trop de mémoire (voir ce thread). Il faut donc l’installer via la commande suivante:

$ R CMD INSTALL --no-latex package.tar.gz

Maintenant, je dois apprendre à manipuler les coordonnées spatiales dans R afin de tracer la carte en question. Pour cela, j’ouvre R, je charge les librairies dont j’ai besoin, je charge les données spatiales, je les convertis et je les trace:

library(ggplot2)
library(sp)
library(maptools)
library(gpclib)
gpclibPermit()
load("FRA_adm2.RData")
gadm_idf <- gadm[ gadm$NAME_1 == "\xcele-de-France", ]
idf <- fortify( gadm_idf, region="ID_2" )
qplot( long, lat, group=group, data=idf, geom="polygon", colour=I("white") )

Et voilà, on obtient le graphique ci-dessous:

Voilà une bonne chose de faite. A présent, je dois récupérer les coordonnées géographiques exactes des lycées qui m’intéressent (longitude et latitude). Heureusement Google Maps permet de faire ça mais il faut au préalable activer cette fonctionnalité (en savoir plus ici). Je reconnais que c’est un peu long et fastidieux, mais à la fin vous obtenez quelque chose comme ça:

lycée Jean Rostand,Mantes-la-Jolie,48.998052,1.696765

lycée Romain Rolland,Ivry-sur-Seine,48.800683,2.392895

etc…

Enfin, il ne me reste plus qu’à ajouter un point sur la carte à l’emplacement de chaque lycée. Pour cela rien de plus facile, commençons par ajouter le lycée Jean Rostand dont les coordonnées sont ci-dessus:


qplot( long, lat, group=group, data=idf, geom="polygon", colour=I("white") )
last_plot() + geom_point( aes(x, y, group=1), colour="red", data=data.frame(x=1.696765, y=48.998052) )

Pour ajouter tous les lycées d’un coup et placer des points de taille proportionnelle au nombre d’élèves dans ces lycées, voici la marche à suivre. Les données sont maintenant prises au hasard, à titre d’exemple. La fonction « theme_whiteMap() » n’est utilisée qu’à titre esthétique.


n <- 80
lycees 0, 1, 0))
lycees$bac[lycees$bac < 0.3] <- NA
lycees <- lycees[ lycees$lat1.5, ]
theme_whiteMap <- function(base_size = 12)
{
structure(list(axis.line = theme_blank(),
axis.text.x = theme_blank(), axis.text.y = theme_blank(), axis.ticks = theme_blank(),
axis.title.x = theme_blank(), axis.title.y = theme_blank(),
axis.ticks.length = unit(0.3, "lines"), axis.ticks.margin = unit(0.5, "lines"),
legend.background = theme_rect(colour = NA),
legend.key = theme_rect(colour = "grey80"), legend.key.size = unit(1.2, "lines"),
legend.text = theme_text(size = base_size * 0.8),
legend.title = theme_text(size = base_size * 0.8, face = "bold", hjust = 0),
legend.position = "right",
panel.background = theme_rect(fill = "white", colour = NA),
panel.border = theme_blank(),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
panel.margin = unit(0.25, "lines"),
strip.background = theme_blank(), strip.text.x = theme_blank(), strip.text.y = theme_blank(),
plot.background = theme_blank(),
plot.title = theme_text(size = base_size * 1.2, face = "bold"), plot.margin = unit(c(1,
1, 0.5, 0.5), "lines")), class = "options")
}
png( "ex_lycees_idf.png", width=600, height=500 )
pl <- qplot(long, lat, data = lycees, geom = "point")
pl <- pl + geom_polygon(aes(group=group), data=idf, colour=I("lightcyan4"), fill=I("transparent"))
pl <- pl + geom_point(aes(colour = bac, shape = factor(internat), size = eleves))
pl <- pl + theme_whiteMap()
pl <- pl + opts(title = "Exemples de lycées en Ile-de-France")
pl <- pl + labs(colour = "Réussite au bac", shape = "Internat", size = "Nombre d'élèves")
print(pl)
dev.off()

Au final, on obtient une carte avec plein d’infos dessus:

Merci à TJ sans qui j’étais bien incapable de faire tout ça…

Les observateurs auront remarqué que j’ai publié ce billet dans les catégories « Politique » et « Science ». La première parce que les données sont fortement inspirées des activités d’une association « œuvrant pour la cité ». La deuxième parce que l’acquisition de données, leur analyse et leur visualisation sont au cœur du travail quotidien des scientifiques.


Solidarité

5 septembre 2010

Je ne peux pas t’aider, je n’ai rien à te donner. Mais toi, tu peux m’aider à aider les autres.

Abbé Pierre

(source)


%d blogueurs aiment cette page :