def store_results(dm, area, sex, year): types_to_plot = 'p i r rr'.split() graphics.plot_convergence_diag(dm.vars) pl.clf() for i, t in enumerate(types_to_plot): pl.subplot(len(types_to_plot), 1, i + 1) graphics.plot_data_bars(dm.model.get_data(t)) pl.plot(range(101), dm.emp_priors[t, 'mu'], linestyle='dashed', color='grey', label='Emp. Prior', linewidth=3) pl.plot(range(101), dm.true[t], 'b-', label='Truth', linewidth=3) pl.plot(range(101), dm.posteriors[t].mean(0), 'r-', label='Estimate', linewidth=3) pl.errorbar(range(101), dm.posteriors[t].mean(0), yerr=1.96 * dm.posteriors[t].std(0), fmt='r-', linewidth=1, capsize=0) pl.ylabel(t) graphics.expand_axis() pl.legend(loc=(0., -.95), fancybox=True, shadow=True) pl.subplots_adjust(hspace=0, left=.1, right=.95, bottom=.2, top=.95) pl.xlabel('Age (Years)') pl.show() model = dm model.mu = pandas.DataFrame() for t in types_to_plot: model.mu = model.mu.append(pandas.DataFrame( dict(true=dm.true[t], mu_pred=dm.posteriors[t].mean(0), sigma_pred=dm.posteriors[t].std(0))), ignore_index=True) data_simulation.add_quality_metrics(model.mu) print '\nparam prediction bias: %.5f, MARE: %.3f, coverage: %.2f' % ( model.mu['abs_err'].mean(), pl.median(pl.absolute( model.mu['rel_err'].dropna())), model.mu['covered?'].mean()) print data_simulation.initialize_results(model) data_simulation.add_to_results(model, 'mu') data_simulation.finalize_results(model) print model.results return model
def store_results(dm, area, sex, year): types_to_plot = 'p i r rr'.split() graphics.plot_convergence_diag(dm.vars) pl.clf() for i, t in enumerate(types_to_plot): pl.subplot(len(types_to_plot), 1, i+1) graphics.plot_data_bars(dm.model.get_data(t)) pl.plot(range(101), dm.emp_priors[t, 'mu'], linestyle='dashed', color='grey', label='Emp. Prior', linewidth=3) pl.plot(range(101), dm.true[t], 'b-', label='Truth', linewidth=3) pl.plot(range(101), dm.posteriors[t].mean(0), 'r-', label='Estimate', linewidth=3) pl.errorbar(range(101), dm.posteriors[t].mean(0), yerr=1.96*dm.posteriors[t].std(0), fmt='r-', linewidth=1, capsize=0) pl.ylabel(t) graphics.expand_axis() pl.legend(loc=(0.,-.95), fancybox=True, shadow=True) pl.subplots_adjust(hspace=0, left=.1, right=.95, bottom=.2, top=.95) pl.xlabel('Age (Years)') pl.show() model = dm model.mu = pandas.DataFrame() for t in types_to_plot: model.mu = model.mu.append(pandas.DataFrame(dict(true=dm.true[t], mu_pred=dm.posteriors[t].mean(0), sigma_pred=dm.posteriors[t].std(0))), ignore_index=True) data_simulation.add_quality_metrics(model.mu) print '\nparam prediction bias: %.5f, MARE: %.3f, coverage: %.2f' % (model.mu['abs_err'].mean(), pl.median(pl.absolute(model.mu['rel_err'].dropna())), model.mu['covered?'].mean()) print data_simulation.initialize_results(model) data_simulation.add_to_results(model, 'mu') data_simulation.finalize_results(model) print model.results return model
### @export 'data' #model = data.load('models/af') model = data.load('/home/j/Project/dismod/output/dm-39544') model.input_data['age_end'] += 1 # change year-end to preferred format ### @export 'plot-prevalence-data' df = model.input_data df = df[df['data_type'] == 'p'] # select prevalence data df = df[df['area'] == 'USA'] #df = df[df['year_start'] <= 2000] pl.figure(**book_graphics.three_quarter_page_params) pl.subplot(1, 2, 1) graphics.plot_data_bars(df) pl.xticks() pl.yticks() pl.xlabel('Age (years)') pl.ylabel('Prevalence (per 1)') pl.axis([-2, 102, -.01, .22]) pl.subplots_adjust(left=.23 + .14, right=.23 + .87, bottom=.14, top=.87) pl.savefig('book/graphics/af_ages_intervals.pdf') print 'The systematic review of the descriptive epidemiology of atrial fibrilation included $%d$ observations of disease prevalence for the United States' % len( df) ### @export 'save-results' pl.show()
reload(book_graphics) # <codecell> book_graphics.set_font() ### @export 'initialize' df = pandas.read_csv('/home/j/Project/dismod/gbd/data/ssas_mx.csv', index_col=None) df['age_end'] += 1 # <codecell> ### @export 'initial-rates' pl.figure(**book_graphics.quarter_page_params) graphics.plot_data_bars(df) pl.semilogy([0], [.1], '-') pl.ylabel('Rate (Per 1)')# pl.yticks(fontsize='large') pl.xlabel('Age (Years)') pl.xticks() pl.subplots_adjust(.1, .175, .98, .875, .275) pl.axis([-5, 105, 2.e-4, .8]) min_mx = df['value'].min() age_min_mx = df['age_start'][df['value'].argmin()] max_mx = df['value'].max() age_max_mx = df['age_start'][df['value'].argmax()]
agm.fit_age_standardizing_model(model) pl.figure(figsize=(17., 11), dpi=72) pl.xlabel('Age (Years)', size=32) pl.ylabel('Rate (Per PY)', size=32) pl.xticks(size=28) pl.yticks(size=28) pl.grid() pl.plot(model.ages, model.pi_age_true, '-', label='Truth', linewidth=10, color=colors[0], zorder=-2) pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_truth.png') graphics.plot_data_bars(model.input_data, 'talk') pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_data.png') pl.plot(model.ages, model.vars['mu_age'].stats()['mean'], 'k-', label='Posterior mean', linewidth=10, zorder=10) pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_standardize_0.png') pl.plot(model.ages, model.vars['mu_age'].trace().T, '-', color='grey', alpha=.1, linewidth=10, zorder=-1) pl.plot(model.ages, model.vars['mu_age'].stats()['95% HPD interval'][:,0], 'k-', label='95% HPD interval', linewidth=2, zorder=10) pl.plot(model.ages, model.vars['mu_age'].stats()['95% HPD interval'][:,1], 'k-', linewidth=2, zorder=10) pl.legend(fancybox=True, shadow=True, loc='upper right', prop={'size':32})
pl.ylabel('Rate (Per PY)', size=32) pl.xticks(size=28) pl.yticks(size=28) pl.grid() pl.plot(model.ages, model.pi_age_true, '-', label='Truth', linewidth=10, color=colors[0], zorder=-2) pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_truth.png') graphics.plot_data_bars(model.input_data, 'talk') pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_data.png') pl.plot(model.ages, model.vars['mu_age'].stats()['mean'], 'k-', label='Posterior mean', linewidth=10, zorder=10) pl.axis([-5, 105, 0., 1.]) pl.savefig('/media/windows/t/age_group_standardize_0.png') pl.plot(model.ages, model.vars['mu_age'].trace().T, '-',