Как можно запустить модель Time-Varying-Cox-Proportional-Hazards-Model с экспоненциальным распределением базовой опасности в «линиях жизни»? - PullRequest
0 голосов
/ 08 июля 2019

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

Исходная ситуация: Я хотел оценить модель пропорционального риска Кокса с экспоненциальным распределением длябазовая опасность.Часть 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...