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