def test_Belgian_gauss_rates(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit('gaussian_rates', 'AC') model.simulate(repetitions=10) model.simulate(repetitions=10, fitted_values=model.fitted_values * 10) model.simulate(repetitions=10, sigma2=10)
def test_Belgian_bin_dose_response(self): data = apc.Belgian_lung_cancer() dose = ((data['response'] / data['rate']) * 10**5).astype(int) model = apc.Model() model.data_from_df(data['response'], dose=dose, data_format='AP') model.fit('binomial_dose_response', 'Ad') model.simulate(repetitions=10) model.simulate(repetitions=10, fitted_values=model.fitted_values * 10)
def test_Belgian(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.plot_data_sums() model.plot_data_sums(logy=True) for simplify_ranges in ('start', 'mean', 'end', False): model.plot_data_sums(simplify_ranges) plt.close('all')
def test_Belgian_gauss_rates(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) predictors = [ 'APC', 'AP', 'AC', 'PC', 'Ad', 'Pd', 'Cd', 'A', 'P', 'C', 't', 'tA', 'tP', 'tC', '1' ] for p in predictors: model.fit('gaussian_rates', p) model.identify('sum_sum') model.identify('detrend')
def test_Belgian(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.plot_data_heatmaps() for simplify_ranges in ('start', 'mean', 'end', False): model.plot_data_heatmaps(simplify_ranges=simplify_ranges) plt.close('all') for space in ('AC', 'AP', 'PA', 'PC', 'CA', 'CP'): model.plot_data_heatmaps(space=space) plt.close('all') model.plot_data_heatmaps(vmax=50)
def test_Belgian_ln_rates(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit(family='log_normal_rates', predictor='APC') self.assertAlmostEqual(model.deviance, -44.854, 3) self.assertTrue( np.allclose( model.parameters.sum().values, np.array([1.07781409, 7.31144396, 9.98467135, 15.2844013]))) self.assertAlmostEqual(model.fitted_values.sum(), 552.365, 3)
def test_Belgian(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit('log_normal_rates', 'APC') model.plot_fit() for style in ('detrend', 'sum_sum'): model.plot_fit(style) plt.close('all') for sr in ('start', 'mean', 'end', False): model.plot_fit(simplify_ranges=sr) plt.close('all') model.plot_fit(around_coef=False)
def test_Belgian(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit('log_normal_rates', 'APC') for sr in ('start', 'mean', 'end', False): model.plot_residuals(simplify_ranges=sr) plt.close('all') for sp in ('AC', 'AP', 'PA', 'PC', 'CA', 'CP'): model.plot_data_heatmaps(space=sp) plt.close('all') for r in ('anscombe', 'deviance', 'pearson', 'response'): model.plot_residuals(kind=r)
def test_Belgian(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.plot_data_within() for simplify_ranges in ('start', 'mean', 'end', False): model.plot_data_within(simplify_ranges=simplify_ranges) plt.close('all') for aggregate in ('mean', 'sum'): model.plot_data_within(aggregate=aggregate) plt.close('all') model.plot_data_within(logy=True) model.plot_data_within(n_groups='all')
def test_Belgian_poisson_dose_response(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit_table('poisson_dose_response', 'APC') self.assertTrue( np.allclose( model.deviance_table.astype(float).sum().values, np.array([ 2.33052840e+04, 5.08000000e+02, 2.12588574e+00, 2.30019096e+04, 2.38000000e+02, 2.44351741e+00 ])))
def test_Belgian_ln_rates(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit(family='log_normal_rates', predictor='APC') model.fit_table() self.assertTrue( np.allclose( model.deviance_table.sum().values, np.array([ 694.2842826, 508.000000, 1367.09717145, 238.000000, 349.62681465, 2.73393206, 998.2842826 ])))
def test_Belgian_bin_dose_response(self): data = apc.Belgian_lung_cancer() dose = (data['response'] / data['rate'] * 10**5).astype(int) model = apc.Model() model.data_from_df(data['response'], dose=dose, data_format='AP') model.fit('binomial_dose_response', 'A') model.identify() self.assertTrue( np.allclose( model.parameters_adhoc.sum().values, np.array([-6.56083837, 3.05256213, 18.37617231, 3.71767601]))) self.assertTrue( np.allclose( model.identify('sum_sum', attach_to_self=False).sum().values, np.array([-14.19804504, 3.52539429, -220.13119605, 5.58065264])))
def test_Belgian_poisson_dose_response(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit(family='poisson_dose_response', predictor='APC') self.assertAlmostEqual(model.deviance, 20.225, 3) self.assertTrue( np.allclose(model.parameters['P>|z|'].values, np.array([ 4.98090007e-194, 2.00792411e-011, 7.54393422e-002, 2.44873634e-001, 3.78642275e-001, 4.49590657e-001, 1.71890762e-001, 7.15051524e-001, 3.40338551e-001, 7.77531241e-001, 5.43258659e-001, 3.10146699e-001, 3.27420794e-001, 3.02443187e-001, 4.90579409e-001, 8.10857155e-001, 8.99207007e-001, 2.56294262e-001, 4.15989929e-001, 9.55962845e-001, 9.06764652e-001, 5.55322937e-001, 3.42813423e-001, 4.50710269e-001, 7.13277215e-001, 4.54604834e-001 ]), equal_nan=True)) self.assertAlmostEqual(model.fitted_values.sum(), 6092.0)
def test_Belgian_bin_dose_response(self): data = apc.Belgian_lung_cancer() dose = (data['response'] / data['rate'] * 10**5).astype(int) model = apc.Model() model.data_from_df(data['response'], dose=dose, data_format='AP') model.fit('binomial_dose_response', 'APC') self.assertAlmostEqual(model.deviance, 20.227, 3) self.assertTrue( np.allclose(model.parameters['P>|z|'].values, np.array([ 0.00000000e+00, 2.00519896e-11, 7.54361666e-02, 2.44877022e-01, 3.78623439e-01, 4.49629054e-01, 1.71917810e-01, 7.15130617e-01, 3.40413299e-01, 7.77302417e-01, 5.43443319e-01, 3.10193656e-01, 3.27424287e-01, 3.02341523e-01, 4.90543748e-01, 8.10861452e-01, 8.99103558e-01, 2.56217693e-01, 4.15956680e-01, 9.55997597e-01, 9.06788804e-01, 5.55305952e-01, 3.42810478e-01, 4.50703994e-01, 7.13277567e-01, 4.54607683e-01 ]), equal_nan=True)) self.assertAlmostEqual(model.fitted_values.sum(), 0.0055324403, 10)
def test_Belgian_pois_dose_response(self): model = apc.Model() model.data_from_df(**apc.Belgian_lung_cancer()) model.fit('poisson_dose_response', 'APC') model.simulate(repetitions=10) model.simulate(repetitions=10, fitted_values=model.fitted_values * 10)
def test_Belgian_bin_dose_response(self): data = apc.Belgian_lung_cancer() dose = (data['response'] / data['rate'] * 10**5).astype(int) model = apc.Model() model.data_from_df(data['response'], dose=dose, data_format='AP') model.fit_table('binomial_dose_response', 'APC') self.assertTrue( np.allclose( model.deviance_table.astype(float).values, np.array([[ 2.02272942e+01, 1.80000000e+01, 3.20169615e-01, np.nan, np.nan, np.nan ], [ 2.55616207e+01, 3.00000000e+01, 6.97305582e-01, 5.33432652e+00, 1.20000000e+01, 9.45870225e-01 ], [ 2.14563493e+01, 2.00000000e+01, 3.70723402e-01, 1.22905512e+00, 2.00000000e+00, 5.40896377e-01 ], [ 9.91929917e+01, 2.70000000e+01, 3.49109630e-10, 7.89656975e+01, 9.00000000e+00, 2.59348099e-13 ], [ 2.65878986e+01, 3.20000000e+01, 7.37036572e-01, 6.36060439e+00, 1.40000000e+01, 9.56568004e-01 ], [ 2.53472759e+02, 3.90000000e+01, 0.00000000e+00, 2.33245465e+02, 2.10000000e+01, 0.00000000e+00 ], [ 1.00677524e+02, 2.90000000e+01, 7.61992691e-10, 8.04502302e+01, 1.10000000e+01, 1.20758958e-12 ], [ 8.55939082e+01, 3.30000000e+01, 1.48750103e-06, 6.53666140e+01, 1.50000000e+01, 2.94677404e-08 ], [ 6.39083556e+03, 4.00000000e+01, 0.00000000e+00, 6.37060827e+03, 2.20000000e+01, 0.00000000e+00 ], [ 1.21719783e+03, 3.00000000e+01, 0.00000000e+00, 1.19697053e+03, 1.20000000e+01, 0.00000000e+00 ], [ 2.54429395e+02, 4.10000000e+01, 0.00000000e+00, 2.34202101e+02, 2.30000000e+01, 0.00000000e+00 ], [ 3.08059993e+02, 4.20000000e+01, 0.00000000e+00, 2.87832698e+02, 2.40000000e+01, 0.00000000e+00 ], [ 6.39139748e+03, 4.20000000e+01, 0.00000000e+00, 6.37117019e+03, 2.40000000e+01, 0.00000000e+00 ], [ 1.61214822e+03, 4.20000000e+01, 0.00000000e+00, 1.59192092e+03, 2.40000000e+01, 0.00000000e+00 ], [ 6.50047766e+03, 4.30000000e+01, 0.00000000e+00, 6.48025037e+03, 2.50000000e+01, 0.00000000e+00 ]]), equal_nan=True))