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