Ejemplo n.º 1
0
def causal_check():
    # Check IPTW plots
    data = load_sample_data(False)
    data[['cd4_rs1', 'cd4_rs2']] = spline(data,
                                          'cd40',
                                          n_knots=3,
                                          term=2,
                                          restricted=True)
    data[['age_rs1', 'age_rs2']] = spline(data,
                                          'age0',
                                          n_knots=3,
                                          term=2,
                                          restricted=True)
    ipt = IPTW(data, treatment='art', stabilized=True)
    ipt.regression_models(
        'male + age0 + age_rs1 + age_rs2 + cd40 + cd4_rs1 + cd4_rs2 + dvl0')
    ipt.fit()
    ipt.plot_love()
    plt.tight_layout()
    plt.show()
    ipt.plot_kde()
    plt.show()
    ipt.plot_kde(measure='logit')
    plt.show()
    ipt.plot_boxplot()
    plt.show()
    ipt.plot_boxplot(measure='logit')
    plt.show()

    # Check SurvivalGFormula plots
    df = load_sample_data(False).drop(columns=['cd4_wk45'])
    df['t'] = np.round(df['t']).astype(int)
    df = pd.DataFrame(np.repeat(df.values, df['t'], axis=0),
                      columns=df.columns)
    df['t'] = df.groupby('id')['t'].cumcount() + 1
    df.loc[((df['dead'] == 1) & (df['id'] != df['id'].shift(-1))), 'd'] = 1
    df['d'] = df['d'].fillna(0)
    df['t_sq'] = df['t']**2
    df['t_cu'] = df['t']**3
    sgf = SurvivalGFormula(df,
                           idvar='id',
                           exposure='art',
                           outcome='d',
                           time='t')
    sgf.outcome_model(
        model='art + male + age0 + cd40 + dvl0 + t + t_sq + t_cu')
    sgf.fit(treatment='all')
    sgf.plot()
    plt.show()
    sgf.plot(c='r', linewidth=3, alpha=0.8)
    plt.show()
Ejemplo n.º 2
0
 def test_unstabilized_weights(self):
     df = load_sample_data(False)
     ipm = IPMW(df, missing_variable='dead', stabilized=False)
     ipm.regression_models(model_denominator='male + age0 + dvl0 + cd40')
     ipm.fit()
     npt.assert_allclose(np.mean(ipm.Weight), 1.0579602715)
     npt.assert_allclose(np.std(ipm.Weight, ddof=1), 0.021019729152)
Ejemplo n.º 3
0
    def test_weighted_model(self):
        df = load_sample_data(False).drop(columns=['dead'])
        df['age_sq'] = df['age0'] ** 2
        df['age_cu'] = df['age0'] ** 3
        df['cd4_sq'] = df['cd40'] ** 2
        df['cd4_cu'] = df['cd40'] ** 3

        ipmw = IPMW(df, missing_variable='cd4_wk45')
        ipmw.regression_models('art + male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0',
                               print_results=False)
        ipmw.fit()
        df['ipcw'] = ipmw.Weight

        snm = GEstimationSNM(df.dropna(), exposure='art', outcome='cd4_wk45', weights='ipcw')
        snm.exposure_model('male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0', print_results=False)
        snm.structural_nested_model('art')
        snm.fit()

        npt.assert_allclose(snm.psi, [244.379181], atol=1e-5)

        snm = GEstimationSNM(df.dropna(), exposure='art', outcome='cd4_wk45', weights='ipcw')
        snm.exposure_model('male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0', print_results=False)
        snm.structural_nested_model('art')
        snm.fit(solver='search')

        npt.assert_allclose(snm.psi, [244.379181], atol=1e-5)
Ejemplo n.º 4
0
    def test_missing_w_weights(self):
        df = load_sample_data(False).drop(columns=['dead'])
        df['age_sq'] = df['age0'] ** 2
        df['age_cu'] = df['age0'] ** 3
        df['cd4_sq'] = df['cd40'] ** 2
        df['cd4_cu'] = df['cd40'] ** 3
        df['weight'] = 2

        snm = GEstimationSNM(df, exposure='art', outcome='cd4_wk45', weights='weight')
        snm.exposure_model('male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0', print_results=False)
        snm.missing_model('art + male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0',
                          stabilized=False, print_results=False)
        snm.structural_nested_model('art')
        snm.fit()

        npt.assert_allclose(snm.psi, [244.379181], atol=1e-5)

        snm = GEstimationSNM(df, exposure='art', outcome='cd4_wk45')
        snm.exposure_model('male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0', print_results=False)
        snm.missing_model('art + male + age0 + age_sq + age_cu + cd40 + cd4_sq + cd4_cu + dvl0',
                          stabilized=False, print_results=False)
        snm.structural_nested_model('art')
        snm.fit(solver='search')

        npt.assert_allclose(snm.psi, [244.379181], atol=1e-5)
Ejemplo n.º 5
0
 def test_error_numerator_with_unstabilized(self):
     df = load_sample_data(False)
     ipm = IPMW(df, missing_variable='dead', stabilized=False)
     with pytest.raises(ValueError):
         ipm.regression_models(
             model_denominator='male + age0 + dvl0 + cd40',
             model_numerator='male')
Ejemplo n.º 6
0
 def test_stabilized_weights(self):
     df = load_sample_data(False)
     ipm = IPMW(df, missing_variable='dead', stabilized=True)
     ipm.regression_models(model_denominator='male + age0 + dvl0 + cd40')
     ipm.fit()
     npt.assert_allclose(np.mean(ipm.Weight), 0.99993685627)
     npt.assert_allclose(np.std(ipm.Weight, ddof=1), 0.019866910369)
Ejemplo n.º 7
0
 def data_b(self):
     df = load_sample_data(False).drop(columns=['cd4_wk45']).dropna()
     df['age_sq'] = df['age0']**2
     df['age_cu'] = df['age0']**3
     df['cd4_sq'] = df['cd40']**2
     df['cd4_cu'] = df['cd40']**3
     return df
Ejemplo n.º 8
0
 def test_match_openepi_sampledata(self):
     oe_irr = -0.001055
     oe_ci = -0.003275, 0.001166
     df = ze.load_sample_data(False)
     ird = IncidenceRateDifference()
     ird.fit(df, exposure='art', outcome='dead', time='t')
     npt.assert_allclose(ird.incidence_rate_difference[1], oe_irr, atol=1e-5)
     rf = ird.results
     npt.assert_allclose(rf.loc[rf.index == '1'][['IRD_LCL', 'IRD_UCL']], [oe_ci], atol=1e-5)
Ejemplo n.º 9
0
    def test_mc_detect_censoring(self):
        df = load_sample_data(timevary=True)

        not_censored = np.where((df['id'] != df['id'].shift(-1)) & (df['dead'] == 0), 0, 1)
        not_censored = np.where(df['out'] == np.max(df['out']), 1, not_censored)

        g = MonteCarloGFormula(df, idvar='id', exposure='art', outcome='dead', time_in='enter', time_out='out')

        npt.assert_equal(np.array(g.gf['__uncensored__']), not_censored)
Ejemplo n.º 10
0
 def data(self):
     df = load_sample_data(False).drop(columns=['cd4_wk45'])
     df['t'] = np.round(df['t']).astype(int)
     df = pd.DataFrame(np.repeat(df.values, df['t'], axis=0), columns=df.columns)
     df['t'] = df.groupby('id')['t'].cumcount() + 1
     df.loc[((df['dead'] == 1) & (df['id'] != df['id'].shift(-1))), 'd'] = 1
     df['d'] = df['d'].fillna(0)
     df['t_sq'] = df['t'] ** 2
     df['t_cu'] = df['t'] ** 3
     return df.drop(columns=['dead'])
Ejemplo n.º 11
0
 def test_match_sas_sampledata(self):
     sas_rr = -0.045129870
     sas_se = 0.042375793
     sas_ci = -0.128184899, 0.037925158
     df = ze.load_sample_data(False)
     rd = RiskDifference()
     rd.fit(df, exposure='art', outcome='dead')
     npt.assert_allclose(rd.risk_difference[1], sas_rr)
     rf = rd.results
     npt.assert_allclose(rf.loc[rf.index == '1'][['RD_LCL', 'RD_UCL']], [sas_ci])
     npt.assert_allclose(rf.loc[rf.index == '1'][['SD(RD)']], sas_se)
Ejemplo n.º 12
0
 def test_match_sas_sampledata(self):
     sas_rd = 0.742118331
     sas_se = 0.312612740
     sas_ci = 0.402139480, 1.369523870
     df = ze.load_sample_data(False)
     rr = RiskRatio()
     rr.fit(df, exposure='art', outcome='dead')
     npt.assert_allclose(rr.risk_ratio[1], sas_rd, rtol=1e-5)
     rf = rr.results
     npt.assert_allclose(rf.loc[rf.index == '1'][['RR_LCL', 'RR_UCL']], [sas_ci], rtol=1e-5)
     npt.assert_allclose(rf.loc[rf.index == '1'][['SD(RR)']], sas_se, rtol=1e-5)
Ejemplo n.º 13
0
 def test_match_sas_sampledata(self):
     sas_or = 0.7036
     sas_se = 0.361479191
     sas_ci = 0.3465, 1.4290
     df = ze.load_sample_data(False)
     ord = OddsRatio()
     ord.fit(df, exposure='art', outcome='dead')
     npt.assert_allclose(ord.odds_ratio[1], sas_or, rtol=1e-4)
     rf = ord.results
     npt.assert_allclose(rf.loc[rf.index == '1'][['OR_LCL', 'OR_UCL']], [sas_ci], rtol=1e-3)
     npt.assert_allclose(rf.loc[rf.index == '1'][['SD(OR)']], sas_se, rtol=1e-4)
Ejemplo n.º 14
0
 def test_match_sas_sampledata(self):
     sas_irr = 0.753956
     sas_se = 0.336135409
     sas_ci = 0.390146, 1.457017
     df = ze.load_sample_data(False)
     irr = IncidenceRateRatio()
     irr.fit(df, exposure='art', outcome='dead', time='t')
     npt.assert_allclose(irr.incidence_rate_ratio[1], sas_irr, rtol=1e-5)
     rf = irr.results
     npt.assert_allclose(rf.loc[rf.index == '1'][['IRR_LCL', 'IRR_UCL']], [sas_ci], rtol=1e-5)
     npt.assert_allclose(rf.loc[rf.index == '1'][['SD(IRR)']], sas_se, rtol=1e-5)
Ejemplo n.º 15
0
def sdata():
    df = load_sample_data(False)
    df[['cd4_rs1', 'cd4_rs2']] = spline(df,
                                        'cd40',
                                        n_knots=3,
                                        term=2,
                                        restricted=True)
    df[['age_rs1', 'age_rs2']] = spline(df,
                                        'age0',
                                        n_knots=3,
                                        term=2,
                                        restricted=True)
    return df.drop(columns=['cd4_wk45'])
Ejemplo n.º 16
0
 def mcf(self):
     df = ze.load_sample_data(False)
     df[['cd4_rs1', 'cd4_rs2']] = ze.spline(df,
                                            'cd40',
                                            n_knots=3,
                                            term=2,
                                            restricted=True)
     df[['age_rs1', 'age_rs2']] = ze.spline(df,
                                            'age0',
                                            n_knots=3,
                                            term=2,
                                            restricted=True)
     return df.drop(columns=['dead'])
Ejemplo n.º 17
0
    def test_match_inverse_of_risk_difference(self):
        df = ze.load_sample_data(False)

        rd = RiskDifference()
        rd.fit(df, exposure='art', outcome='dead')

        nnt = NNT()
        nnt.fit(df, exposure='art', outcome='dead')

        npt.assert_allclose(nnt.number_needed_to_treat[1], 1/rd.risk_difference[1])
        rf = rd.results
        nf = nnt.results
        npt.assert_allclose(nf.loc[nf.index == '1'][['NNT_LCL', 'NNT_UCL']],
                            1 / rf.loc[rf.index == '1'][['RD_LCL', 'RD_UCL']])
        npt.assert_allclose(nf.loc[nf.index == '1'][['SD(RD)']], rf.loc[rf.index == '1'][['SD(RD)']])
Ejemplo n.º 18
0
def mc_gformula_check():
    df = load_sample_data(timevary=True)
    df['lag_art'] = df['art'].shift(1)
    df['lag_art'] = np.where(df.groupby('id').cumcount() == 0, 0, df['lag_art'])
    df['lag_cd4'] = df['cd4'].shift(1)
    df['lag_cd4'] = np.where(df.groupby('id').cumcount() == 0, df['cd40'], df['lag_cd4'])
    df['lag_dvl'] = df['dvl'].shift(1)
    df['lag_dvl'] = np.where(df.groupby('id').cumcount() == 0, df['dvl0'], df['lag_dvl'])
    df[['age_rs0', 'age_rs1', 'age_rs2']] = spline(df, 'age0', n_knots=4, term=2, restricted=True)  # age spline
    df['cd40_sq'] = df['cd40'] ** 2  # cd4 baseline cubic
    df['cd40_cu'] = df['cd40'] ** 3
    df['cd4_sq'] = df['cd4'] ** 2  # cd4 current cubic
    df['cd4_cu'] = df['cd4'] ** 3
    df['enter_sq'] = df['enter'] ** 2  # entry time cubic
    df['enter_cu'] = df['enter'] ** 3
    g = TimeVaryGFormula(df, idvar='id', exposure='art', outcome='dead', time_in='enter', time_out='out')
    exp_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + cd4 + cd4_sq + 
            cd4_cu + dvl + enter + enter_sq + enter_cu'''
    g.exposure_model(exp_m, restriction="g['lag_art']==0")
    out_m = '''art + male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + cd4 + 
            cd4_sq + cd4_cu + dvl + enter + enter_sq + enter_cu'''
    g.outcome_model(out_m, restriction="g['drop']==0")
    dvl_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + lag_cd4 + 
            lag_dvl + lag_art + enter + enter_sq + enter_cu'''
    g.add_covariate_model(label=1, covariate='dvl', model=dvl_m, var_type='binary')
    cd4_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 +  cd40 + cd40_sq + cd40_cu + dvl0 + lag_cd4 + 
            lag_dvl + lag_art + enter + enter_sq + enter_cu'''
    cd4_recode_scheme = ("g['cd4'] = np.maximum(g['cd4'],1);"
                         "g['cd4_sq'] = g['cd4']**2;"
                         "g['cd4_cu'] = g['cd4']**3")
    g.add_covariate_model(label=2, covariate='cd4', model=cd4_m,recode=cd4_recode_scheme, var_type='continuous')
    g.fit(treatment="((g['art']==1) | (g['lag_art']==1))",
          lags={'art': 'lag_art',
                'cd4': 'lag_cd4',
                'dvl': 'lag_dvl'},
          sample=10000, t_max=None,
          in_recode=("g['enter_sq'] = g['enter']**2;"
                     "g['enter_cu'] = g['enter']**3"))
    gf = g.predicted_outcomes
    gfs = gf.loc[gf.uid_g_zepid != gf.uid_g_zepid.shift(-1)].copy()
    kmn = KaplanMeierFitter()
    kmn.fit(durations=gfs['out'], event_observed=gfs['dead'])
    kmo = KaplanMeierFitter()
    kmo.fit(durations=df['out'], event_observed=df['dead'], entry=df['enter'])
    plt.step(kmn.event_table.index, 1 - kmn.survival_function_, c='g', where='post', label='Natural')
    plt.step(kmo.event_table.index, 1 - kmo.survival_function_, c='k', where='post', label='True')
    plt.legend()
    plt.show()
Ejemplo n.º 19
0
def causal_check():
    # 9) Check IPTW plots
    data = load_sample_data(False)
    data[['cd4_rs1', 'cd4_rs2']] = spline(data, 'cd40', n_knots=3, term=2, restricted=True)
    data[['age_rs1', 'age_rs2']] = spline(data, 'age0', n_knots=3, term=2, restricted=True)
    ipt = IPTW(data, treatment='art', stabilized=True)
    ipt.regression_models('male + age0 + age_rs1 + age_rs2 + cd40 + cd4_rs1 + cd4_rs2 + dvl0')
    ipt.fit()
    ipt.plot_love()
    plt.tight_layout()
    plt.show()
    ipt.plot_kde()
    plt.show()
    ipt.plot_kde(measure='logit')
    plt.show()
    ipt.plot_boxplot()
    plt.show()
    ipt.plot_boxplot(measure='logit')
    plt.show()
Ejemplo n.º 20
0
 def test_complete_mc_procedure_completes(self):
     df = load_sample_data(timevary=True)
     df['lag_art'] = df['art'].shift(1)
     df['lag_art'] = np.where(df.groupby('id').cumcount() == 0, 0, df['lag_art'])
     df['lag_cd4'] = df['cd4'].shift(1)
     df['lag_cd4'] = np.where(df.groupby('id').cumcount() == 0, df['cd40'], df['lag_cd4'])
     df['lag_dvl'] = df['dvl'].shift(1)
     df['lag_dvl'] = np.where(df.groupby('id').cumcount() == 0, df['dvl0'], df['lag_dvl'])
     df[['age_rs0', 'age_rs1', 'age_rs2']] = spline(df, 'age0', n_knots=4, term=2, restricted=True)  # age spline
     df['cd40_sq'] = df['cd40'] ** 2
     df['cd40_cu'] = df['cd40'] ** 3
     df['cd4_sq'] = df['cd4'] ** 2
     df['cd4_cu'] = df['cd4'] ** 3
     df['enter_sq'] = df['enter'] ** 2
     df['enter_cu'] = df['enter'] ** 3
     g = MonteCarloGFormula(df, idvar='id', exposure='art', outcome='dead', time_in='enter', time_out='out')
     exp_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + cd4 + cd4_sq + 
             cd4_cu + dvl + enter + enter_sq + enter_cu'''
     g.exposure_model(exp_m, restriction="g['lag_art']==0")
     out_m = '''art + male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + cd4 + 
             cd4_sq + cd4_cu + dvl + enter + enter_sq + enter_cu'''
     g.outcome_model(out_m, restriction="g['drop']==0")
     dvl_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 + cd40 + cd40_sq + cd40_cu + dvl0 + lag_cd4 + 
             lag_dvl + lag_art + enter + enter_sq + enter_cu'''
     g.add_covariate_model(label=1, covariate='dvl', model=dvl_m, var_type='binary')
     cd4_m = '''male + age0 + age_rs0 + age_rs1 + age_rs2 +  cd40 + cd40_sq + cd40_cu + dvl0 + lag_cd4 + 
             lag_dvl + lag_art + enter + enter_sq + enter_cu'''
     cd4_recode_scheme = ("g['cd4'] = np.maximum(g['cd4'],1);"
                          "g['cd4_sq'] = g['cd4']**2;"
                          "g['cd4_cu'] = g['cd4']**3")
     g.add_covariate_model(label=2, covariate='cd4', model=cd4_m, recode=cd4_recode_scheme, var_type='continuous')
     cens_m = """male + age0 + age_rs0 + age_rs1 + age_rs2 +  cd40 + cd40_sq + cd40_cu + dvl0 + lag_cd4 +
              lag_dvl + lag_art + enter + enter_sq + enter_cu"""
     g.censoring_model(cens_m)
     g.fit(treatment="((g['art']==1) | (g['lag_art']==1))",
           lags={'art': 'lag_art',
                 'cd4': 'lag_cd4',
                 'dvl': 'lag_dvl'},
           sample=5000, t_max=None,
           in_recode=("g['enter_sq'] = g['enter']**2;"
                      "g['enter_cu'] = g['enter']**3"))
     assert isinstance(g.predicted_outcomes, type(pd.DataFrame()))
Ejemplo n.º 21
0
def measures_check():
    # 7) Check measures plots
    data_set = load_sample_data(False)
    rr = RiskRatio()
    rr.fit(data_set, exposure='art', outcome='dead')
    rr.plot(fmt='*', ecolor='r', barsabove=True, markersize=25)
    plt.show()
    rd = RiskDifference()
    rd.fit(data_set, exposure='art', outcome='dead')
    rd.plot()
    plt.show()
    ord = OddsRatio()
    ord.fit(data_set, exposure='art', outcome='dead')
    ord.plot()
    plt.show()
    irr = IncidenceRateRatio()
    irr.fit(data_set, exposure='art', outcome='dead', time='t')
    irr.plot()
    plt.show()
    ird = IncidenceRateDifference()
    ird.fit(data_set, exposure='art', outcome='dead', time='t')
    ird.plot()
    plt.show()
Ejemplo n.º 22
0
 def test_match_sas_weights(self):
     sas_w_mean = 0.9993069
     sas_w_max = 1.7980410
     sas_w_min = 0.8986452
     df = load_sample_data(timevary=True)
     df['cd40_q'] = df['cd40'] ** 2
     df['cd40_c'] = df['cd40'] ** 3
     df['cd4_q'] = df['cd4'] ** 2
     df['cd4_c'] = df['cd4'] ** 3
     df['enter_q'] = df['enter'] ** 2
     df['enter_c'] = df['enter'] ** 3
     df['age0_q'] = df['age0'] ** 2
     df['age0_c'] = df['age0'] ** 3
     ipc = IPCW(df, idvar='id', time='enter', event='dead')
     cmodeln = 'enter + enter_q + enter_c'
     cmodeld = '''enter + enter_q + enter_c + male + age0 + age0_q + age0_c + dvl0 + cd40 +
                  cd40_q + cd40_c + dvl + cd4 + cd4_q + cd4_c'''
     ipc.regression_models(model_denominator=cmodeld, model_numerator=cmodeln)
     ipc.fit()
     cw = ipc.Weight
     npt.assert_allclose(np.mean(cw), sas_w_mean)
     npt.assert_allclose(np.max(cw), sas_w_max)
     npt.assert_allclose(np.min(cw), sas_w_min)
Ejemplo n.º 23
0
 def test_return_pandas(self):
     df = ze.load_sample_data(False)
     assert isinstance(df, type(pd.DataFrame()))
Ejemplo n.º 24
0
 def test_correct_nobs_timevary(self):
     df = ze.load_sample_data(True)
     assert df.shape[0] == 27382
Ejemplo n.º 25
0
 def test_correct_ncols_timevary(self):
     df = ze.load_sample_data(True)
     assert df.shape[1] == 12
Ejemplo n.º 26
0
 def test_missing_in_timefixed(self):
     df = ze.load_sample_data(False)
     assert df.shape[0] != df.dropna().shape[0]
Ejemplo n.º 27
0
 def test_correct_ncols_timefixed(self):
     df = ze.load_sample_data(False)
     assert df.shape[1] == 9
Ejemplo n.º 28
0
 def test_error_too_many_model(self):
     df = load_sample_data(False)
     ipm = IPMW(df, missing_variable='dead')
     with pytest.raises(ValueError):
         ipm.regression_models(
             model_denominator=['male + age0', 'male + age0 + dvl0'])
Ejemplo n.º 29
0
def graphics_check():
    # L'Abbe Plots
    labbe_plot()
    plt.show()
    labbe_plot(r1=[0.25, 0.5], r0=[0.1, 0.2], color='r')
    plt.show()
    labbe_plot(r1=[0.3, 0.5], r0=[0.2, 0.7], scale='additive', marker='+', linestyle='')
    plt.show()
    labbe_plot(r1=[0.3, 0.5], r0=[0.2, 0.7], scale='multiplicative', markersize=10)
    plt.show()

    # 1) Check EffectMeasurePlot
    labs = ['Overall', 'Adjusted', '', '2012-2013', 'Adjusted', '', '2013-2014', 'Adjusted', '', '2014-2015',
            'Adjusted']
    measure = [np.nan, 0.94, np.nan, np.nan, 1.22, np.nan, np.nan, 0.59, np.nan, np.nan, 1.09]
    lower = [np.nan, 0.77, np.nan, np.nan, '0.80', np.nan, np.nan, '0.40', np.nan, np.nan, 0.83]
    upper = [np.nan, 1.15, np.nan, np.nan, 1.84, np.nan, np.nan, 0.85, np.nan, np.nan, 1.44]
    p = EffectMeasurePlot(label=labs, effect_measure=measure, lcl=lower, ucl=upper)
    p.plot(figsize=[7, 4])
    plt.show()

    # 2) Check Functional form plots
    data = load_sample_data(False)
    data['age_sq'] = data['age0']**2
    functional_form_plot(data, 'dead', var='age0', loess=False)
    plt.show()
    functional_form_plot(data, 'dead', var='age0', discrete=True, loess=False)
    plt.show()
    functional_form_plot(data, 'cd40', var='age0', outcome_type='continuous', loess=False)
    plt.show()
    functional_form_plot(data, 'dead', var='age0', points=True, loess=False)
    plt.show()
    functional_form_plot(data, 'dead', var='age0', loess=True, loess_value=0.25, discrete=True)
    plt.show()
    functional_form_plot(data, 'dead', var='age0', f_form='age0 + age_sq', loess=False)
    plt.show()

    # 3) Check P-value plots
    p = pvalue_plot(point=0.23, sd=0.1)
    plt.show()
    pvalue_plot(point=0.23, sd=0.1, fill=False)
    plt.show()
    pvalue_plot(point=0.23, sd=0.1, color='r')
    plt.show()
    pvalue_plot(point=0.23, sd=0.1, null=0.05)
    plt.show()
    pvalue_plot(point=0.23, sd=0.1, alpha=0.05)
    plt.show()

    # 4) Check Spaghetti plot
    df = load_sample_data(timevary=True)
    spaghetti_plot(df, idvar='id', variable='cd4', time='enter')
    plt.show()

    # 5) Check ROC
    df = pd.DataFrame()
    df['d'] = [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
    df['p'] = [0.1, 0.15, 0.1, 0.7, 0.5, 0.9, 0.95, 0.5, 0.4, 0.8, 0.99, 0.99, 0.89, 0.95]
    roc(df, true='d', threshold='p', youden_index=False)
    plt.show()
    roc(df, true='d', threshold='p', youden_index=True)
    plt.show()

    # 6) Check Dynamic Risk Plots
    a = pd.DataFrame([[0, 0], [1, 0.15], [2, 0.25], [4, 0.345]], columns=['timeline', 'riske']).set_index(
                     'timeline')
    b = pd.DataFrame([[0, 0], [1, 0.2], [1.5, 0.31], [3, 0.345]], columns=['timeline', 'riske']).set_index(
                     'timeline')
    dynamic_risk_plot(a, b, loess=False)
    plt.show()
    dynamic_risk_plot(a, b, measure='RR', loess=False)
    plt.show()
    dynamic_risk_plot(a, b, measure='RR', scale='log-transform', loess=False)
    plt.show()
    dynamic_risk_plot(a, b, measure='RR', scale='log', loess=False)
    plt.show()
    dynamic_risk_plot(a, b, loess=True, loess_value=0.4)
    plt.show()
    dynamic_risk_plot(a, b, loess=False, point_color='green', line_color='green')
    plt.show()
Ejemplo n.º 30
0
 def test_missing_count2(self):
     df = load_sample_data(False)
     ipm = IPMW(df, missing_variable='dead', stabilized=True)
     ipm.regression_models(model_denominator='art')
     assert 517 == np.sum(ipm.df['_observed_indicator_'])
     assert 30 == np.sum(1 - ipm.df['_observed_indicator_'])