simulation 2 – fluctuations d`échantillonages du
Transcription
simulation 2 – fluctuations d`échantillonages du
Simulation des fluctuations d’échantillonnages d’un risque relatif Michel Cucherat 6 août 2010 Le plus souvent dans les essais thérapeutiques, le critères de jugement est la survenue d’un événement clinique ce qui au niveau statistique correspond à une variable binaire. 1 Simulation du nombre d’événements par groupe Avec un critère de jugement binaire, le nombre d’événement x survenant dans un groupe de patients de taille n dépend de la probabilité de survenue de cet événement p. D’un essai à l’autre, le nombre d’événement xi va varié même si tous ces essais ont tous inclus le même type de patients, ayant tous la probabilité p de faire l’événement. Suivant ce modèle, le nombre d’événement va varier d’un essai à l’autre en suivant une loi binomiale. Il sera facile sous R de simuler ce nombre d’événements à l’aide de la fonction rbinom. Soit n1 la taille du groupe traité de l’essai et n0 celle du groupe contrôle. Le risque de base des patients de l’essai est p0. L’efficacité du traitement est un risque relatif rr ce qui conduit à un risque dans le groupe contrôle p1 = p0*rr. le nombre d’événements survenant dans le groupe traité x1 et dans le groupe contrôle x0 ainsi que le risque relatif observé dans l’essai se simulent de la façon suivante. > > > > > > > > p0 <- 0.1 rr <- 0.8 p1 <- p0 * rr n1 = 250 n0 = 250 x1 <- rbinom(1, size = n1, prob = p1) x0 <- rbinom(1, size = n1, prob = p0) c(x1 = x1, n1 = n1, x0 = x0, n0 = n0) x1 n1 21 250 x0 n0 32 250 > rr.obs <- (x1/n1)/(x0/n0) > rr.obs [1] 0.65625 1 2 Simulation des fluctuations d’échantillonages du risque relatif Pour réaliser la replication de plusieurs simulations du même essai, nous pouvons utiliser le fait que la fonction rbinom génère des vecteurs de nombres aléatoires dont la dimension est passée comme 1er argument de la fonction. Ainsi pour générer 1000 essais et leur 1000 risques relatifs observés nous pouvons utiliser : > > > > > > > > > > n.replication <- 1000 p0 <- 0.1 rr <- 0.8 p1 <- p0 * rr n1 = 250 n0 = 250 x1 <- rbinom(n.replication, size = n1, prob = p1) x0 <- rbinom(n.replication, size = n1, prob = p0) rr.obs <- (x1/n1)/(x0/n0) summary(rr.obs) Min. 1st Qu. 0.2667 0.6641 Median 0.7917 Mean 3rd Qu. 0.8289 0.9545 Max. 2.9090 La distribution des risques relatifs observés est la suivante > hist(rr.obs, xlab = "risque relatif observé") > abline(v = 0.8, col = "red", lwd = 2) 200 100 0 Frequency 300 Histogram of rr.obs 0.5 1.0 1.5 2.0 risque relatif observé 2 2.5 3.0 Cette distribution n’est pas Gaussienne, mais log-normale. La distribution du log(RR) est quand à elle normale comme le montre > hist(log(rr.obs), xlab = "log(RR.obs)") > abline(v = log(0.8), col = "red", lwd = 2) 150 100 0 50 Frequency 200 250 Histogram of log(rr.obs) −1.5 −1.0 −0.5 0.0 0.5 1.0 log(RR.obs) 3 Influence de la taille des groupes En quoi la taille des groupes influence l’estimation de l’efficacité d’un traitement ? Pour étudier par simulation cette question (triviale !) nous allons écrire une fonction qui simule n.replication essais cliniques et qui retourne le vecteur des risques relatifs obtenus dans ces différents essais. Pour simplifier, les 2 groupes ont la même taille n = n1 = n0 . > simuler.rr.obs <- function(n, p0, rr.vrai, n.replication = 1000) { + n1 <- n + n0 <- n + p1 <- p0 * rr + x1 <- rbinom(n.replication, size = n1, prob = p1) + x0 <- rbinom(n.replication, size = n1, prob = p0) + rr.obs <- (x1/n1)/(x0/n0) + rr.obs + } On peut ainsi facilement comparer la distribution des risques relatifs observés pour 4 tailles des groupes disons 100,300, 700 et 1200 patients. 3 rr1 <- simuler.rr.obs(n = 100, p0 = 0.1, rr.vrai = 0.8) rr2 <- simuler.rr.obs(n = 300, p0 = 0.1, rr.vrai = 0.8) rr3 <- simuler.rr.obs(n = 700, p0 = 0.1, rr.vrai = 0.8) rr4 <- simuler.rr.obs(n = 1200, p0 = 0.1, rr.vrai = 0.8) boxplot(rr1, rr2, rr3, rr4, names = c("n=100", "n=300", "n=700", "n=1200"), main = "Boxplot des risques relatifs observés pour 4 tailles de groupe") Boxplot des risques relatifs observés pour 4 tailles de groupe 4 ● 3 ● 2 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 1 ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0 > > > > > + n=100 n=300 n=700 4 n=1200