Как можно запустить модель Time-Varying-Cox-Proportional-Hazards-Model с экспоненциальным распределением базовой опасности в "линиях жизни"?

У меня есть продолжение этого вопроса.

Исходная ситуация: я хотел оценить модель пропорционального риска Кокса с экспоненциальным распределением для базовой опасности. Часть 1.) решения состояла в том, чтобы ближе рассмотреть функцию опасности, которая, как было показано,

h(t|x) = lambda_0 * exp(beta * x)

что можно оценить с использованием модели ускоренного времени отказа (AFT), где опасность:

h(t|x) = lambda_0 * exp(-beta * x)

Часть 2.) Решением было определить уникальный класс с желаемым свойством.

Текущая ситуация. Теперь я хочу расширить свою модель, чтобы включить вариации времени. Lifelines имеет документацию для этого. Опасность для таких моделей

h(t|x(t)) = lambda_0(t) * exp(beta * x(t)),

Пытаясь решить проблему, я начинаю с части 1.), опасность (IMO)

h(t|x(t)) = lambda_0 * exp(beta * x(t)),

так что особый случай опасности, упомянутой ранее (lambda_0(t) = lambda_0 для всех t). Моя борьба идет с частью 2). В cox_time_varying_fitter.py, (временное изменение) базовая опасность в функции _compute_cumulative_baseline_hazard моделируется непараметрически death_counts / hazards_at_t.sum(), и я ожидаю, что эта функция должна быть переопределена параметрически с помощью функции, аналогичной.

def _cumulative_hazard(self, params, T, Xs):
    # params is a dictionary that maps unknown parameters to a numpy vector.
    # Xs is a dictionary that maps unknown parameters to a numpy 2d array
    lambda_ = np.exp(np.dot(Xs['lambda_'], params['lambda_']))
    return T / lambda_

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

Пример данных:

from lifelines import CoxPHFitter
import pandas as pd

df = pd.DataFrame({
    'id':    [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'start': [0, 1, 2, 0, 1, 2, 0, 1, 2], 
    'stop' : [1, 2, 3, 1, 2, 3, 1, 2, 3], 
    'timevarying': [-1, 0, 1, 2, 0, -2, -3, 0, 3],
    'event': [0, 0, 1, 0, 0, 0, 0, 0, 1]
})
ctv = CoxTimeVaryingFitter()
ctv.fit(df, id_col="id", event_col="event", start_col="start",    stop_col="stop")

Цель не состоит в том, чтобы узнать, какое ковариатное влияние влияет на шансы наблюдения события; вместо этого цель состоит в том, чтобы предсказать опасность для различных переменных во времени значений переменной timevarying, В настоящее время мне удается получить только частичную опасность, но мне также нужна базовая опасность. Конечно, в документации указано, что прогноз в таких случаях не тривиален, но рассмотрим timevarying быть температурой в некоторой области и случился ли первый пожар - в таких случаях я думаю, что прогноз, использующий данные прогноза погоды, является жизнеспособным.

Вопрос: как можно запустить модель изменяющегося во времени Кокса, пропорционального риска и экспоненциального распределения базовой опасности в lifelines?

0 ответов

Другие вопросы по тегам