Ви заявляєте, що хочете моделювати цензуру типу 1 . Це, як правило, означає, що експеримент проводиться протягом певного періоду часу, і те, що до того часу досліджувані одиниці не мали події, піддаються цензурі. Якщо це саме ви мали на увазі, то неможливо (обов'язково) визначати параметри форми та масштабу, а також час та темп цензури одночасно. Зазначивши будь-яку трійку, останнє обов’язково фіксується.
(Спроба) вирішити для параметра форми:
Це не вдається; видається, що неможливо мати 15% коефіцієнт цензури в момент цензури .88 при розподілі Вейбулла, де параметр масштабу утримується на рівні 1, незалежно від параметра форми.
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
Розв’язування параметра масштабу:
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
Вирішення часу цензури:
qweibull(.15, shape=.5, scale=1, lower.tail=F)
# [1] 3.599064
Розв’язування для ставки цензури:
pweibull(.88, shape=.5, scale=1, lower.tail=F)
# [1] 0.3913773
З іншого боку, ми можемо вважати, що цензура є випадковим чином (і, як правило, незалежним), що відбувається протягом усього дослідження через, скажімо, відміни. У цьому випадку процедура полягає в моделюванні двох наборів змінних Вейбулла. Тоді ви просто зазначаєте, що було першим: ви використовуєте менше значення в якості кінцевої точки і називаєте цю одиницю цензурою, якщо меншим значенням був час цензури. Наприклад:
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
функція приголомшлива), але як би ви відкалібрували свою другу відповідь, щоб досягти певного відсотка цензури?