Exemplo n.º 1
0
 def test_coxph_plot_partial_effects_on_outcome_with_single_strata(self, block):
     df = load_rossi()
     cp = CoxPHFitter()
     cp.fit(df, "week", "arrest", strata="paro")
     cp.plot_partial_effects_on_outcome("age", [10, 50, 80])
     self.plt.title("test_coxph_plot_partial_effects_on_outcome_with_strata")
     self.plt.show(block=block)
Exemplo n.º 2
0
 def test_coxph_plot_partial_effects_on_outcome_with_multiple_variables(self, block):
     df = load_rossi()
     cp = CoxPHFitter()
     cp.fit(df, "week", "arrest")
     cp.plot_partial_effects_on_outcome(["age", "prio"], [[10, 0], [50, 10], [80, 90]])
     self.plt.title("test_coxph_plot_partial_effects_on_outcome_with_multiple_variables")
     self.plt.show(block=block)
Exemplo n.º 3
0
 def test_spline_coxph_plot_partial_effects_on_outcome_with_strata(self, block):
     df = load_rossi()
     cp = CoxPHFitter(baseline_estimation_method="spline", n_baseline_knots=2)
     cp.fit(df, "week", "arrest", strata=["wexp"])
     cp.plot_partial_effects_on_outcome("age", [10, 50, 80])
     self.plt.title("test_spline_coxph_plot_partial_effects_on_outcome_with_strata")
     self.plt.show(block=block)
Exemplo n.º 4
0
 def test_coxph_plot_partial_effects_on_outcome_with_cumulative_hazard(self, block):
     df = load_rossi()
     cp = CoxPHFitter()
     cp.fit(df, "week", "arrest")
     cp.plot_partial_effects_on_outcome("age", [10, 50, 80], y="cumulative_hazard")
     self.plt.title("test_coxph_plot_partial_effects_on_outcome")
     self.plt.show(block=block)
Exemplo n.º 5
0
    def test_coxph_plot_partial_effects_on_outcome_with_strata_and_complicated_dtypes(
            self, block):
        # from https://github.com/CamDavidsonPilon/lifelines/blob/master/examples/Customer%20Churn.ipynb
        churn_data = pd.read_csv("https://raw.githubusercontent.com/"
                                 "treselle-systems/customer_churn_analysis/"
                                 "master/WA_Fn-UseC_-Telco-Customer-Churn.csv")
        churn_data = churn_data.set_index("customerID")
        churn_data = churn_data.drop(["TotalCharges"], axis=1)

        churn_data = churn_data.applymap(lambda x: "No"
                                         if str(x).startswith("No ") else x)
        churn_data["Churn"] = churn_data["Churn"] == "Yes"
        strata_cols = ["InternetService"]

        cph = CoxPHFitter().fit(
            churn_data,
            "tenure",
            "Churn",
            formula=
            "gender + SeniorCitizen + Partner + Dependents  + MultipleLines + OnlineSecurity + OnlineBackup + DeviceProtection + TechSupport + Contract + PaperlessBilling + PaymentMethod + MonthlyCharges",
            strata=strata_cols,
        )
        cph.plot_partial_effects_on_outcome(
            "Contract",
            values=["Month-to-month", "One year", "Two year"],
            plot_baseline=False)
        self.plt.title(
            "test_coxph_plot_partial_effects_on_outcome_with_strata_and_complicated_dtypes"
        )
        self.plt.show(block=block)
Exemplo n.º 6
0
 def test_coxph_plot_partial_effects_on_outcome_with_multiple_variables_and_strata(self, block):
     df = load_rossi()
     df["strata"] = np.random.choice(["A", "B"], size=df.shape[0])
     cp = CoxPHFitter()
     cp.fit(df, "week", "arrest", strata="strata")
     cp.plot_partial_effects_on_outcome(["age", "prio"], [[10, 0], [50, 10], [80, 90]])
     self.plt.title("test_coxph_plot_partial_effects_on_outcome_with_multiple_variables_and_strata")
     self.plt.show(block=block)
Exemplo n.º 7
0
 def test_coxph_plot_partial_effects_on_outcome_with_nonnumeric_strata(self, block):
     df = load_rossi()
     df["strata"] = np.random.choice(["A", "B"], size=df.shape[0])
     cp = CoxPHFitter()
     cp.fit(df, "week", "arrest", strata="strata")
     cp.plot_partial_effects_on_outcome("age", [10, 50, 80])
     self.plt.title("test_coxph_plot_partial_effects_on_outcome_with_single_strata")
     self.plt.show(block=block)
Exemplo n.º 8
0
def CoxRegressionModel(stimes, N, ap_s, ap_s2, ap_s3, ap_s5, ebb_, eap_, ebs,
                       aps_0, mu, stime, Np):

    #ebs = singular value = 0, 0.175, 0.35, 0.525, 0.7
    #stimes = 1050 values ( 5 eb values x 7 ap values x 30 survival times)
    #stime = 30 values for each aps_) value
    #N = 1050
    #Np = 30
    #ap_s, ap_s2, ap_s3 = array of 1050 values used for the data frame

    #*************************************EVENT OBSERVATION**************************************************#
    E = np.zeros(N).astype(int)

    for i, time in enumerate(stimes):
        if (time > 62831):
            E[i] = 0
        else:
            E[i] = 1

    #**************************************MAKING A DATA FRAME************************************************#
    data1 = {
        'T': stimes,
        'E': E,
        'aps': ap_s,
        'aps2': ap_s2,
        'aps3': ap_s3,
        'aps5': ap_s5,
        'eap': eap_,
        'eb': ebb_
    }
    df = pd.DataFrame(data=data1)

    T = df['T']
    E = df['E']
    aps = df['aps']
    aps2 = df['aps2']
    aps3 = df['aps3']
    aps5 = df['aps5']
    eap = df['eap']
    eb = df['eb']

    #print(df)

    #************************************COX PH FITTER*************************************#

    fig, axes = plt.subplots()

    axes.set_xscale('log')
    axes.set_ylabel("S(t)")

    KT, KE, Kdf = PlottingLL.PlottingLL(ebs, aps_0, mu, stime, Np)
    kmf = KaplanMeierFitter().fit(KT, KE, label='KaplanMeierFitter')
    kmf.plot_survival_function(ax=axes)

    cph = CoxPHFitter()

    #cph.fit(df,duration_col = 'T', event_col = 'E', formula = "eap")
    #cph.fit(df,duration_col = 'T', event_col = 'E')

    cph.fit(df, duration_col='T', event_col='E', formula="aps + I(aps**3)")
    #cph.print_summary()
    cph.plot_partial_effects_on_outcome(plot_baseline=False,
                                        ax=axes,
                                        cmap="coolwarm")
    #cph.plot_partial_effects_on_outcome(covariates = ['aps'], values = [round(aps_0,3)], plot_baseline = False, ax = axes, cmap = "coolwarm")
    cph.baseline_survival_.plot(ax=axes, ls=":", color=f"C{i}")

    #cph.fit(df,duration_col = 'T', event_col = 'E', formula = "eb + aps + I(aps**3)")
    #cph.print_summary()
    #cph.plot_partial_effects_on_outcome(covariates = ['aps'], values = [round(aps_0,3)], ax = axes)

    plt.title('Formula(aps vs. aps3 (1050 values)): (eb,ap,mu)={}'.format(
        (round(ebs, 3), round(aps_0, 3), mu)),
              fontsize=12)