Як генерувати дані про виживання із залежними від часу коваріатами за допомогою R


9

Я хочу генерувати час виживання з пропорційною моделлю небезпеки Кокса, яка містить коефіцієнт, залежний від часу. Модель є

h(t|Xi)=h0(t)exp(γXi+αmi(t))

де породжується з двочлена (1,0.5) і .Ximi(t)=β0+β1Xi+β2Xit

Справжні значення параметрів використовуються якγ=1.5,β0=0,β1=1,β2=1.5,h0(t)=1

Для коваріату незалежного від часу (тобто я генерував наступним чиномh(t|Xi)=h0(t)exp(γXi)

#For time independent case
# h_0(t) = 1
gamma <- -1
u <- runif(n=100,min=0,max=1)
Xi <- rbinom(n=100,size=1,prob=0.5)
T <- -log(u)/exp(gamma*Xi)

Чи хтось, будь ласка, допоможе мені генерувати дані про виживання із змінною за часом коваріату.


Яка функція - ? Це безперервно? Порізково-постійною? Можливо, відповідно буде потрібен інший алгоритм. mi(t)
tristan

mi(t) - часова залежність, для простоти можна вважати пропорційну залежність від часу.
Шейх

Я редагував своє запитання, розглядаючи функціюmi(t)
Шейх,

як ви виконали код R із наведеного рівняння? означає, що в кожен момент смерті в межах одного і того ж ідентифікатора програма повинна з'ясувати, що таке коваріати для кожного, який або x дорівнює 1, або 0. якщо всі рівні 1 cumsum, небезпека. після цього обчислюють функцію виживання. дозволяє вибрати правильний рядок для кожного предмета.
Qas Amell

Як зазначає З. Чжан, подивіться цю статтю . Далі ви можете побачити мою відповідь на його запитання, де я показую, як імітувати для тих, хто в групі в Р.Xi=1
Бенджамін Кристофферсен

Відповіді:


9

Гаразд з вашого коду R, ви припускаєте експоненціальний розподіл (постійну небезпеку) для базової небезпеки. Отже, ваші функції небезпеки:

h(tXi)={exp(αβ0)if Xi=0,exp(γ+α(β0+β1+β2t))if Xi=1.

Потім ми інтегруємо їх відносно щоб отримати функцію накопичення небезпеки:t

Λ(tXi)={texp(αβ0)if Xi=0,0texp(γ+α(β0+β1+β2τ))dτif Xi=1.={texp(αβ0)if Xi=0,exp(γ+α(β0+β1))1αβ2(exp(αβ2t)1)if Xi=1.

Вони дають нам функції виживання:

S(t)=exp(Λ(t))={exp(texp(αβ0))if Xi=0,exp(exp(γ+α(β0+β1))1αβ2(exp(αβ2t)1))if Xi=1.

Потім ви генеруєте за допомогою вибірки та , замінивши на та переставивши відповідну формулу (на основі ) для імітації . Це має бути проста алгебра, яку ви можете кодувати в R, але, будь ласка, повідомте мене про це, якщо вам потрібна додаткова допомога.XiUUniform(0,1)US(t)Xit


1
Дуже дякую за алгебру. Я буду кодувати в R і зв'яжусь з вами для подальшої допомоги.
Шейх

яка ідеальна відповідь, @tristan. У мене було подібне питання і я знайшов вашу відповідь. Просто кльово.
Сем

@tristan Я трохи розгублений у значенні альфа в першому рівнянні, яке ви даєте, де Xi = 0. Чи не хочете ви трохи розширити це? Дякую.
Statwonk

1
@Statwonk випливає з рівняння рівня небезпеки, поданого оригінальним плакатом
tristan

Вибачте, але я не впевнений, як використовувати функцію S (t) для імітації часу. Я думаю, вам слід обчислити S ^ {- 1}, і ця функція не є тривіальною для випадку X_i = 1.
Pmc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.