Ejemplo n.º 1
0
    def test_survival_prediction_is_the_same_indp_of_scale(self, regression_dataset):
        df = regression_dataset.copy()

        df_scaled = regression_dataset.copy()
        df_scaled[['var1', 'var2', 'var3']] = df_scaled[['var1', 'var2', 'var3']] * 10.0

        cp1 = CoxPHFitter()
        cp1.fit(df, event_col='E', duration_col='T')

        cp2 = CoxPHFitter()
        cp2.fit(df_scaled, event_col='E', duration_col='T')

        assert_frame_equal(
            cp1.predict_survival_function(df.ix[[0]][['var1', 'var2', 'var3']]),
            cp2.predict_survival_function(df_scaled.ix[[0]][['var1', 'var2', 'var3']])
        )
kaplen_meier.fit(time_of_event, timeline=time, event_observed=event, label='All patients')
kaplen_meier.plot()
plt.show()

#stratify Congestive Heart Complications
history = df['chf'] == 1;

kaplen_meier = KaplanMeierFitter()
kaplen_meier.fit(time_of_event[history], timeline=time, event_observed=event[history], label='Congestive heart complications')
ax = kaplen_meier.plot()

kaplen_meier.fit(time_of_event[~history], timeline=time, event_observed=event[~history], label='No congestive heart complications')
kaplen_meier.plot(ax=ax, c="b")

plt.show()

#Cox proportional hazard
ph_data = df[["fstat", "lenfol", "bmi", "age"]]

ph = CoxPHFitter()
ph.fit(ph_data, 'lenfol', event_col='fstat')
ph.print_summary()

print(ph.baseline_hazard_.head())

#use predict_survival_function to get probability
x = ph_data[ph_data.columns.difference(['lenfol', 'fstat'])].ix[23:25]
print(x)
ph.predict_survival_function(x).plot()
plt.show()