Zastrzegasz, że chcesz symulować cenzurę typu 1 . Zazwyczaj oznacza to, że eksperyment jest prowadzony przez pewien czas i że dowolne jednostki badawcze, które do tej pory nie miały zdarzenia, są cenzurowane. Jeśli o to ci chodziło, to nie jest (koniecznie) możliwe jednoczesne określenie kształtu i parametrów skali oraz czasu i szybkości cenzury. Po ustaleniu dowolnych trzech ostatnich jest koniecznie ustalonych.
(Próba) rozwiązania parametru kształtu:
To się nie udaje; wydaje się, że nie ma 15% stawki cenzury przy czasie cenzury 0,88 z rozkładem Weibulla, w którym parametr skali jest utrzymywany na 1, bez względu na parametr kształtu.
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
Rozwiązywanie parametru skali:
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
Rozwiązywanie problemu cenzury:
qweibull(.15, shape=.5, scale=1, lower.tail=F)
# [1] 3.599064
Rozwiązanie problemu cenzury:
pweibull(.88, shape=.5, scale=1, lower.tail=F)
# [1] 0.3913773
Z drugiej strony możemy myśleć o cenzurowaniu jako przypadkowej (i zazwyczaj niezależnie) występującej w trakcie badania z powodu, powiedzmy, porzucenia. W takim przypadku procedura polega na symulacji dwóch zestawów zmiennych Weibulla. Następnie zauważasz, co było pierwsze: używasz mniejszej wartości jako punktu końcowego i nazywasz tę jednostkę cenzurowaną, jeśli mniejsza wartość była czasem cenzury. Na przykład:
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
funkcja jest niesamowita), ale jak skalibrowałbyś swoją drugą odpowiedź, aby osiągnąć pewien procent cenzury?