Вы указываете, что хотите имитировать цензуру типа 1 . Как правило, это означает, что эксперимент проводится в течение определенного периода времени и что к тем учебным единицам, которые не имели события, к тому времени проводится цензура. Если это именно то, что вы имели в виду, то (необязательно) невозможно указать параметры формы и масштаба, а также время и скорость цензуры. Обозначив любые три, последнее обязательно фиксируется.
(Попытка) решить для параметра формы:
Это не удается; кажется, что невозможно получить 15% скорости цензуры при времени цензуры 0,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
функция потрясающая), но как бы вы откалибровали свой второй ответ, чтобы достичь определенного процента цензуры?Просто чтобы быть уверенным, что мы говорим об одном и том же, цензура типа I это когда
Чтобы сгенерировать правильные данные с цензурой, используя время цензуры = 0,88 , вы просто используете
min
функцию:Однако я не совсем уверен, что вы имеете в виду, когда говорите « уровень цензуры = 0,15 » ... Вы хотите сказать, что 15% ваших предметов подверглись правильной цензуре? Эти заметки о цензуре, похоже, указывают на то, что единственный параметр, который нужен для цензуры I типа, - это время цензуры , поэтому я не уверен, как этот показатель учитывается.
источник
min
(или, в более общем смыслеpmin
) - это способ его моделированияR
. (Примером правильной цензуры в исследовании, не связанном с выживанием, является анализ бактериальных колоний в сточных водах. Это делается путем ручного подсчета видимых на предметном стекле микроскопа. При сильном загрязнении результат дается как «слишком много для подсчета». )