Регрессия Кокса, используя линии жизни и категориальные переменные - PullRequest
0 голосов
/ 07 февраля 2020

Привет, я использую пакет спасательных кругов для регрессии Кокса. Я хочу изучить влияние категориальной переменной, которая не является двоичной. Есть ли встроенный способ сделать это? Или я должен преобразовать каждый фактор категории в число? В качестве альтернативы, используя сборщика кмф в линии жизни, возможно ли сделать это для каждого фактора, а затем получить значение р? Я могу сделать отдельные графики, но не могу найти способ оценить значение p.

Спасибо!

Обновление: Хорошо, если после использования pd.get_dummies у меня есть dataframe df вида:

            event     time       categorical_1 categorical_2  categorical_3
0              0      11.54             0             0             1
1              0       6.95             0             0             1
2              1       0.24             0             1             0
3              0       3.00             0             0             1
4              1      10.26             1             0             1
...          ...        ...           ...           ...           ...
1215           1       6.80             1             0             0

Теперь мне нужно удалить одну из фиктивных переменных. И затем сделайте:

cph.fit(df, duration_col=time, event_col=event)

Если я сейчас хочу построить график, как категориальные переменные влияют на график выживания, как бы я go об этом? Я пробовал:

    summary = cph.summary
    for index, row in summary.iterrows():
        print(index)
        cph.plot_covariate_groups(index, [a[index].mean()], ax=ax)
    plt.show()

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

Спасибо

1 Ответ

1 голос
/ 07 февраля 2020

Как и другие регрессии, вам необходимо преобразовать категориальную переменную в фиктивные переменные. Вы можете сделать это, используя pandas.get_dummies. После этого модель регрессии Кокса даст вам оценки для каждой категории (ожидайте, что фиктивная переменная была отброшена - см. Примечания здесь ).

Для второго вопроса вам нужно использовать что-то вроде lifelines.statistics.multivariate_logrank_test, чтобы проверить, является ли одна категория другой или нет. (Также см. lifelines.statistics.pairwise_logrank_test)


Для вашего вопроса о заговоре есть лучший способ.

cph.plot_covariate_groups(['categorical_1', 'categorical_2', ...], np.eye(n))

где n - количество категорий в новом кадре данных.

См. Больше документов здесь: https://lifelines.readthedocs.io/en/latest/Survival%20Regression.html#plotting -эффект варьирования-ковариата

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