Exemple #1
0
def fit_disaggregation_model(model):
    """Disaggregation approach"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='dis', ages=model.ages,
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    ## Disaggregate input data
    a = []
    p = []
    n = []
    for i in model.input_data.index:
        a_s, a_e = model.input_data.ix[i, 'age_start'], model.input_data.ix[i, 'age_end']
        a += range(a_s, a_e)
        p += [model.input_data.ix[i, 'value']] * (a_e - a_s)
        n += [float(model.input_data.ix[i, 'effective_sample_size']) / (a_e - a_s)] * (a_e - a_s)
    a = pl.array(a)
    p = pl.array(p)
    n = pl.array(n)

    model.vars['pi'] = mc.Lambda('pi_dis', lambda mu=model.vars['mu_age'], a=a: mu[a])
    delta = mc.Uniform('delta_mid', 0., 1000., value=10.)
    model.vars += {'delta': delta}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(name='dis',
                                               pi=model.vars['pi'],
                                               delta=model.vars['delta'],
                                               p=p,  # TODO: change this parameter name to "r" to match the book chapter
                                               n=n)

    fit_model(model)
Exemple #2
0
def fit_age_standardizing_model(model):
    """Age-standardizing model"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='std', ages=model.ages,
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    model.vars += dismod3.age_group.age_standardize_approx(name='std', ages=model.ages,
                                                           age_weights=pl.ones_like(model.ages),
                                                           mu_age=model.vars['mu_age'], 
                                                           age_start=model.input_data['age_start'], age_end=model.input_data['age_end'])


    delta = mc.Uniform('delta_mid', 0., 1000., value=10.)
    model.vars += {'delta': delta}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(name='std',
                                               pi=model.vars['mu_interval'],
                                               delta=model.vars['delta'],
                                               p=model.input_data['value'],
                                               n=model.input_data['effective_sample_size'])

    fit_model(model)
Exemple #3
0
def fit_age_integrating_model(model):
    """Age-integrating model"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(
        name="std", ages=model.ages, knots=knots, smoothing=pl.inf, interpolation_method="linear"
    )

    model.vars += dismod3.age_group.age_integrate_approx(
        name="int",
        ages=model.ages,
        age_weights=model.input_data["age_weights"],
        mu_age=model.vars["mu_age"],
        age_start=model.input_data["age_start"],
        age_end=model.input_data["age_end"],
    )

    model.vars += {"delta": mc.Uniform("delta_std", 0.0, 1000.0, value=10.0)}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name="std",
        pi=model.vars["mu_interval"],
        delta=model.vars["delta"],
        p=model.input_data["value"],
        n=model.input_data["effective_sample_size"],
    )

    fit_model(model)
Exemple #4
0
def fit_midpoint_covariate_model(model):
    """Midpoint-covariate model"""
    # Create age-group model
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='midc', ages=model.ages,
    
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    ## Midpoint model to represent age-group data
    model.vars += dismod3.age_group.midpoint_covariate_approx(name='midc', ages=model.ages,
                                                              mu_age=model.vars['mu_age'], 
                                                              age_start=model.input_data['age_start'], age_end=model.input_data['age_end'])

    ## Uniform prior on negative binomial rate model over-dispersion term
    delta = mc.Uniform('delta_mid', 0., 1000., value=10.)
    model.vars += {'delta': delta}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(name='midc',
                                               pi=model.vars['mu_interval'],
                                               delta=model.vars['delta'],
                                               p=model.input_data['value'],
                                               n=model.input_data['effective_sample_size'])

    fit_model(model)
Exemple #5
0
def fit_disaggregation_model(model):
    """Disaggregation approach"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(
        name="dis", ages=model.ages, knots=knots, smoothing=pl.inf, interpolation_method="linear"
    )

    ## Disaggregate input data
    a = []
    p = []
    n = []
    for i in model.input_data.index:
        a_s, a_e = model.input_data.ix[i, "age_start"], model.input_data.ix[i, "age_end"]
        a += range(a_s, a_e)
        p += [model.input_data.ix[i, "value"]] * (a_e - a_s)
        n += [float(model.input_data.ix[i, "effective_sample_size"]) / (a_e - a_s)] * (a_e - a_s)
    a = pl.array(a)
    p = pl.array(p)
    n = pl.array(n)

    model.vars["pi"] = mc.Lambda("pi_dis", lambda mu=model.vars["mu_age"], a=a: mu[a])
    model.vars["delta"] = mc.Uniform("delta_dis", 0.0, 1000.0, value=10.0)

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name="dis",
        pi=model.vars["pi"],
        delta=model.vars["delta"],
        p=p,  # TODO: change this parameter name to "r" to match the book chapter
        n=n,
    )

    fit_model(model)
Exemple #6
0
def fit_alt_midpoint_covariate_model(model):
    """Midpoint/covariate model sq"""
    # Create age-group model
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(
        name="midc", ages=model.ages, knots=knots, smoothing=pl.inf, interpolation_method="linear"
    )

    ## Midpoint model to represent age-group data
    model.vars += dismod3.age_group.midpoint_covariate_approx(
        name="midc",
        ages=model.ages,
        mu_age=model.vars["mu_age"],
        age_start=model.input_data["age_start"],
        age_end=model.input_data["age_end"],
        transform=lambda x: x ** 2.0,
    )

    ## Uniform prior on negative binomial rate model over-dispersion term
    model.vars += {"delta": mc.Uniform("delta_midc", 0.0, 1000.0, value=10.0)}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name="midc",
        pi=model.vars["mu_interval"],
        delta=model.vars["delta"],
        p=model.input_data["value"],
        n=model.input_data["effective_sample_size"],
    )

    fit_model(model)
Exemple #7
0
def fit_age_integrating_model(model):
    """Age-integrating model"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='std',
                                             ages=model.ages,
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    model.vars += dismod3.age_group.age_integrate_approx(
        name='int',
        ages=model.ages,
        age_weights=model.input_data['age_weights'],
        mu_age=model.vars['mu_age'],
        age_start=model.input_data['age_start'],
        age_end=model.input_data['age_end'])

    model.vars += {'delta': mc.Uniform('delta_std', 0., 1000., value=10.)}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name='std',
        pi=model.vars['mu_interval'],
        delta=model.vars['delta'],
        p=model.input_data['value'],
        n=model.input_data['effective_sample_size'])

    fit_model(model)
Exemple #8
0
def fit_alt_midpoint_covariate_model(model):
    """Midpoint/covariate model sq"""
    # Create age-group model
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='midc',
                                             ages=model.ages,
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    ## Midpoint model to represent age-group data
    model.vars += dismod3.age_group.midpoint_covariate_approx(
        name='midc',
        ages=model.ages,
        mu_age=model.vars['mu_age'],
        age_start=model.input_data['age_start'],
        age_end=model.input_data['age_end'],
        transform=lambda x: x**2.)

    ## Uniform prior on negative binomial rate model over-dispersion term
    model.vars += {'delta': mc.Uniform('delta_midc', 0., 1000., value=10.)}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name='midc',
        pi=model.vars['mu_interval'],
        delta=model.vars['delta'],
        p=model.input_data['value'],
        n=model.input_data['effective_sample_size'])

    fit_model(model)
Exemple #9
0
def fit_disaggregation_model(model):
    """Disaggregation approach"""
    ## Spline model to represent age-specific rate
    model.vars += dismod3.age_pattern.spline(name='dis',
                                             ages=model.ages,
                                             knots=knots,
                                             smoothing=pl.inf,
                                             interpolation_method='linear')

    ## Disaggregate input data
    a = []
    p = []
    n = []
    for i in model.input_data.index:
        a_s, a_e = model.input_data.ix[i, 'age_start'], model.input_data.ix[
            i, 'age_end']
        a += range(a_s, a_e)
        p += [model.input_data.ix[i, 'value']] * (a_e - a_s)
        n += [
            float(model.input_data.ix[i, 'effective_sample_size']) /
            (a_e - a_s)
        ] * (a_e - a_s)
    a = pl.array(a)
    p = pl.array(p)
    n = pl.array(n)

    model.vars['pi'] = mc.Lambda('pi_dis',
                                 lambda mu=model.vars['mu_age'], a=a: mu[a])
    delta = mc.Uniform('delta_mid', 0., 1000., value=10.)
    model.vars += {'delta': delta}

    ## Negative binomial rate model
    model.vars += dismod3.rate_model.neg_binom(
        name='dis',
        pi=model.vars['pi'],
        delta=model.vars['delta'],
        p=p,  # TODO: change this parameter name to "r" to match the book chapter
        n=n)

    fit_model(model)