Sie legen fest, dass Sie die Zensur vom Typ 1 simulieren möchten . Dies bedeutet normalerweise, dass das Experiment über einen bestimmten Zeitraum durchgeführt wird und dass alle Lerneinheiten, die das Ereignis bis dahin nicht hatten, zensiert werden. Wenn Sie das gemeint haben, ist es (notwendigerweise) nicht möglich, die Form- und Skalierungsparameter sowie die Zensurzeit und -rate gleichzeitig festzulegen. Nachdem drei festgelegt wurden, ist die letzte unbedingt festgelegt.
(Versuch) nach dem Formparameter zu lösen:
Dies schlägt fehl; Es scheint unmöglich zu sein, eine Zensurrate von 15% bei einer Zensurzeit von 0,88 mit einer Weibull-Verteilung zu haben, bei der der Skalierungsparameter bei 1 gehalten wird, unabhängig davon, um welchen Formparameter es sich handelt.
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
Auflösen nach dem Skalenparameter:
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
Lösung für die Zensurzeit:
qweibull(.15, shape=.5, scale=1, lower.tail=F)
# [1] 3.599064
Lösung für die Zensurrate:
pweibull(.88, shape=.5, scale=1, lower.tail=F)
# [1] 0.3913773
Auf der anderen Seite können wir uns die Zensur als zufällig (und typischerweise unabhängig) vorstellen, die während der gesamten Studie auftritt, beispielsweise aufgrund von Studienabbrüchen. In diesem Fall besteht das Verfahren darin, zwei Sätze von Weibull-Variablen zu simulieren. Dann notieren Sie einfach, was zuerst kam: Sie verwenden den niedrigeren Wert als Endpunkt und nennen diese Einheit zensiert, wenn der geringere Wert die Zensurzeit war. Zum Beispiel:
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
Funktion ist fantastisch), aber wie würden Sie Ihre zweite Antwort kalibrieren, um einen bestimmten Prozentsatz der Zensur zu erreichen?