Usted estipula que desea simular la censura tipo 1 . Por lo general, se considera que el experimento se realiza durante un período de tiempo y que cualquier unidad de estudio que no haya tenido el evento para entonces está censurada. Si eso es lo que quiso decir, entonces no es (necesariamente) posible estipular los parámetros de forma y escala, y el tiempo y la tasa de censura simultáneamente. Habiendo estipulado tres, el último está necesariamente arreglado.
(Intentando) resolver el parámetro de forma:
esto falla; parece que es imposible tener una tasa de censura del 15% en un tiempo de censura de .88 con una distribución de Weibull donde el parámetro de escala se mantiene en 1, sin importar cuál sea el parámetro de forma.
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
Resolviendo el parámetro de escala:
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
Resolviendo el tiempo de censura:
qweibull(.15, shape=.5, scale=1, lower.tail=F)
# [1] 3.599064
Resolviendo la tasa de censura:
pweibull(.88, shape=.5, scale=1, lower.tail=F)
# [1] 0.3913773
Por otro lado, podemos pensar en la censura como algo aleatorio (y típicamente independiente) que ocurre a lo largo del estudio debido, por ejemplo, al abandono. En ese caso, el procedimiento es simular dos conjuntos de variantes de Weibull. Luego, simplemente observa qué fue primero: usa el valor menor como punto final y llama a esa unidad censurada si el valor menor fue el tiempo de censura. Por ejemplo:
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
función es increíble), pero ¿cómo calibrarías tu segunda respuesta para lograr un cierto porcentaje de censura?Solo para asegurarnos de que estamos hablando de lo mismo, la censura de tipo I es cuando
Para generar datos censurados correctos utilizando el tiempo de censura = 0,88 , solo usaría la
min
función:Sin embargo, no estoy completamente seguro de lo que quieres decir cuando dices, " tasa de censura = 0.15 " ... ¿Quieres decir que el 15% de tus sujetos están correctamente censurados? Estas notas sobre censura parecen indicar que el único parámetro que uno necesita para la censura Tipo I es censurar el tiempo , por lo que no estoy seguro de cómo influye esta tasa.
fuente
min
(o, más generalmentepmin
) , es la forma de simularloR
. (Un ejemplo de censura correcta en un estudio de no supervivencia es el análisis de colonias bacterianas en aguas residuales. Se realiza contando manualmente las visibles en un portaobjetos de microscopio. Con una fuerte contaminación, el resultado se da como "demasiado numeroso para contar". )