L'approche d'ocram fonctionnera certainement. En termes de propriétés de dépendance, c'est quelque peu restrictif.
Une autre méthode consiste à utiliser une copule pour dériver une distribution conjointe. Vous pouvez spécifier des distributions marginales pour le succès et l'âge (si vous avez des données existantes, c'est particulièrement simple) et une famille de copules. La variation des paramètres de la copule entraînera différents degrés de dépendance, et différentes familles de copules vous donneront diverses relations de dépendance (par exemple, une forte dépendance de la queue supérieure).
Un aperçu récent de cette opération dans R via le package copula est disponible ici . Voir également la discussion dans ce document pour des packages supplémentaires.
Cependant, vous n'avez pas nécessairement besoin d'un package complet; voici un exemple simple utilisant une copule gaussienne, une probabilité de réussite marginale de 0,6 et des âges distribués gamma. Variez r pour contrôler la dépendance.
r = 0.8 # correlation coefficient
sigma = matrix(c(1,r,r,1), ncol=2)
s = chol(sigma)
n = 10000
z = s%*%matrix(rnorm(n*2), nrow=2)
u = pnorm(z)
age = qgamma(u[1,], 15, 0.5)
age_bracket = cut(age, breaks = seq(0,max(age), by=5))
success = u[2,]>0.4
round(prop.table(table(age_bracket, success)),2)
plot(density(age[!success]), main="Age by Success", xlab="age")
lines(density(age[success]), lty=2)
legend('topright', c("Failure", "Success"), lty=c(1,2))
Sortie:
Table:
success
age_bracket FALSE TRUE
(0,5] 0.00 0.00
(5,10] 0.00 0.00
(10,15] 0.03 0.00
(15,20] 0.07 0.03
(20,25] 0.10 0.09
(25,30] 0.07 0.13
(30,35] 0.04 0.14
(35,40] 0.02 0.11
(40,45] 0.01 0.07
(45,50] 0.00 0.04
(50,55] 0.00 0.02
(55,60] 0.00 0.01
(60,65] 0.00 0.00
(65,70] 0.00 0.00
(70,75] 0.00 0.00
(75,80] 0.00 0.00