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()
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)
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)
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)
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')
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)
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
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)
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)
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'])
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)
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)
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)
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)
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'])
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'])
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)']])
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()
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()
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()))
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()
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)
def test_return_pandas(self): df = ze.load_sample_data(False) assert isinstance(df, type(pd.DataFrame()))
def test_correct_nobs_timevary(self): df = ze.load_sample_data(True) assert df.shape[0] == 27382
def test_correct_ncols_timevary(self): df = ze.load_sample_data(True) assert df.shape[1] == 12
def test_missing_in_timefixed(self): df = ze.load_sample_data(False) assert df.shape[0] != df.dropna().shape[0]
def test_correct_ncols_timefixed(self): df = ze.load_sample_data(False) assert df.shape[1] == 9
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'])
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()
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_'])