Як імітувати цензуровані дані


11

Мені цікаво, як я можу імітувати зразок n часу життя дистрибуції Вейбулла, що включає спостереження правого цензури типу I. Наприклад, давайте n = 3, форма = 3, шкала = 1, коефіцієнт цензури = .15, і час цензури = .88. Я знаю, як генерувати зразок Вейбулла, але не знаю, як генерувати цензуровані дані, які мають правоцензурований тип I у Р.

T = rweibull(3, shape=.5, scale=1)

Відповіді:


11

(Що стосується R стилю кодування, найкраще не використовувати T як ім'я змінної, оскільки це псевдонім для TRUE, і ця практика неминуче призведе до проблем.)


Ваше запитання дещо неоднозначне; є кілька способів його тлумачення. Давайте пройдемося через них:

  1. Ви заявляєте, що хочете моделювати цензуру типу 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
  2. З іншого боку, ми можемо вважати, що цензура є випадковим чином (і, як правило, незалежним), що відбувається протягом усього дослідження через, скажімо, відміни. У цьому випадку процедура полягає в моделюванні двох наборів змінних Вейбулла. Тоді ви просто зазначаєте, що було першим: ви використовуєте менше значення в якості кінцевої точки і називаєте цю одиницю цензурою, якщо меншим значенням був час цензури. Наприклад:

    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функція приголомшлива), але як би ви відкалібрували свою другу відповідь, щоб досягти певного відсотка цензури?
Dan Chaltiel

@DanChaltiel, другий не справжньо калібрований - це просто випадковий вигляд. Також може бути неможливо досягти бажаної пропорції, враховуючи інші аспекти, які ви хочете (аналогічно №1). З огляду на це, можливо виявити частку населення (спостережувана пропорція буде відскакувати від ітерації до ітерації) шляхом оптимізації цензурованого розподілу щодо розподілу подій.
gung - Відновіть Моніку

2

Просто щоб бути впевненим, ми говоримо про те саме, цензура I типу - це коли

... експеримент має задану кількість предметів або предметів і зупиняє експеримент на заздалегідь визначений час, і в цей момент будь-які суб'єкти, що залишилися, піддаються правильній цензурі.

Щоб генерувати правильні цензурні дані, використовуючи час цензури = 0,88 , ви просто використовуватиметеmin функцію:

T <- rweibull(3, shape=.5, scale=1)
censoring_time <- 0.88
T_censored <- min(censoring_time, T)

Однак я не зовсім впевнений, що ви маєте на увазі, коли ви говорите " ставка цензури = 0,15 " ... Ви хочете сказати, що 15% ваших суб'єктів піддаються правильній цензурі? Ці замітки про цензуру, схоже, вказують на те, що єдиний параметр, який потрібен для цензури типу I, - це цензура часу , тому я не знаю, як впливають ці коефіцієнти швидкості.


1
Зауважте, що ваша цитата не є визначенням цензури: це лише приклад. Права цензура виникає, коли кожне значення порівнюється із заздалегідь визначеним порогом і замінюється нечисловим індикатором цензури, коли значення перевищує цей поріг. Незалежно від того, застосувати min(або, загалом, pmin) - це спосіб їх моделювання R. (Прикладом правильної цензури в дослідженні про нежиття є аналіз бактеріальних колоній у стічних водах. Це робиться шляхом ручного підрахунку видимих ​​на слайді мікроскопа. При сильному забрудненні результат дається як "занадто численний для підрахунку". )
блукання
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.