Vous précisez que vous souhaitez simuler la censure de type 1 . Cela est généralement considéré comme signifiant que l'expérience est menée pendant une période de temps et que les unités d'étude n'ayant pas eu l'événement à ce moment-là sont censurées. Si c'est ce que vous vouliez dire, il n'est pas (nécessairement) possible de stipuler les paramètres de forme et d'échelle, ainsi que le temps et le taux de censure simultanément. Après en avoir stipulé trois, le dernier est nécessairement fixe.
(Tentative de) résoudre le paramètre de forme:
cela échoue; il semble qu'il soit impossible d'avoir un taux de censure de 15% à un temps de censure de 0,88 avec une distribution de Weibull où le paramètre d'échelle est maintenu à 1, quel que soit le paramètre de forme.
optim(.5, fn=function(shp){(pweibull(.88, shape=shp, scale=1, lower.tail=F)-.15)^2})
# $par
# [1] 4.768372e-08
# ...
# There were 46 warnings (use warnings() to see them)
pweibull(.88, shape=4.768372e-08, scale=1, lower.tail=F)
# [1] 0.3678794
optim(.5, fn=function(shp){(pweibull(.88, shape=shp, scale=1, lower.tail=F)-.15)^2},
control=list(reltol=1e-16))
# $par
# [1] 9.769963e-16
# ...
# There were 50 or more warnings (use warnings() to see the first 50)
pweibull(.88, shape=9.769963e-16, scale=1, lower.tail=F)
# [1] 0.3678794
Résolution du paramètre d'échelle:
optim(1, fn=function(scl){(pweibull(.88, shape=.5, scale=scl, lower.tail=F)-.15)^2})
# $par
# [1] 0.2445312
# ...
pweibull(.88, shape=.5, scale=0.2445312, lower.tail=F)
# [1] 0.1500135
Résolution pour le temps de censure:
qweibull(.15, shape=.5, scale=1, lower.tail=F)
# [1] 3.599064
Résolution du taux de censure:
pweibull(.88, shape=.5, scale=1, lower.tail=F)
# [1] 0.3913773
D'un autre côté, nous pouvons penser que la censure se produit de manière aléatoire (et généralement indépendante) tout au long de l'étude en raison, par exemple, du décrochage. Dans ce cas, la procédure consiste à simuler deux ensembles de variables de Weibull. Ensuite, vous notez simplement ce qui est arrivé en premier: vous utilisez la valeur inférieure comme point de terminaison et appelez cette unité censurée si la valeur inférieure était le temps de censure. Par exemple:
set.seed(0775)
t = rweibull(3, shape=.5, scale=1)
t # [1] 0.7433678 1.1325749 0.2784812
c = rweibull(3, shape=.5, scale=1.5)
c # [1] 3.3242417 2.8866217 0.9779436
time = pmin(t, c)
time # [1] 0.7433678 1.1325749 0.2784812
cens = ifelse(c<t, 1, 0)
cens # [1] 0 0 0
optim
fonction est géniale), mais comment calibreriez-vous votre deuxième réponse pour atteindre un certain pourcentage de censure?Pour être sûr que nous parlons de la même chose, la censure de type I, c'est quand
Pour générer des données censurées à droite en utilisant un temps de censure = 0,88 , il vous suffit d'utiliser la
min
fonction:Cependant, je ne suis pas tout à fait sûr de ce que vous voulez dire lorsque vous dites " taux de censure = 0,15 " ... Voulez-vous dire que 15% de vos sujets sont correctement censurés? Ces notes sur la censure semblent indiquer que le seul paramètre dont on a besoin pour la censure de type I est le temps de censure , donc je ne sais pas comment ce taux est pris en compte.
la source
min
(ou, plus généralement,pmin
) est le moyen de le simulerR
. (Un exemple de censure à droite dans une étude de non-survie est l'analyse des colonies bactériennes dans les eaux usées. Elle se fait en comptant manuellement celles visibles sur une lame de microscope. Avec une forte contamination, le résultat est donné comme «trop nombreux pour être comptés». )