Пример #1
0
def initialize_model(asrf):
    # store the rate model code in the asrf for future reference
    asrf.fit['rate_model'] = inspect.getsource(rate_model)
    asrf.fit['out_age_mesh'] = range(probabilistic_utils.MAX_AGE)

    # do normal approximation first, to generate a good starting point
    M,C = probabilistic_utils.normal_approx(asrf)

    # define the model variables
    rate_model.setup_rate_model(asrf)
Пример #2
0
def initialized_rate_vars(rf, rate_stoch=None):
    # store the rate model code in the asrf for future reference
    try:
        rf.fit["rate_model"] = inspect.getsource(rate_model)
    except:
        rf.fit["rate_model"] = "WARNING: could not find source code"

    rf.fit["out_age_mesh"] = range(probabilistic_utils.MAX_AGE)

    # do normal approximation first, to generate a good starting point
    M, C = probabilistic_utils.normal_approx(rf)
    rate_model.setup_rate_model(rf, rate_stoch)
    return probabilistic_utils.flatten(rf.vars.values()), rf.rate_stoch
Пример #3
0
def map_fit(asrfs):
    all_vars = []
    rate_vars = {}
    rate_stochs = []

    for asrf in asrfs:
        # store the rate model code in the asrf for future reference
        asrf.fit['rate_model'] = inspect.getsource(rate_model)
        asrf.fit['out_age_mesh'] = range(probabilistic_utils.MAX_AGE)

        # do normal approximation first, to generate a good starting point
        M,C = probabilistic_utils.normal_approx(asrf)

        # define the model variables
        vars = rate_model.model_vars(asrf)
        rate_vars[asrf.id] = vars
        rate_stochs += [ vars['asrf_%d'%asrf.id] ]
        all_vars += vars.values()

    @mc.potential
    def smooth_across_regions(rate_list=rate_stochs):
        logp = 0.
        for ii in range(len(rate_list)):
            for jj in range(ii+1, len(rate_list)):
                logp += mc.normal_like(np.diff(np.log(rate_list[ii]))-np.diff(np.log(rate_list[jj])), 0., 1./(.1)**2)
        return logp
    all_vars += [ smooth_across_regions ]

    map = mc.MAP(all_vars)

    print "searching for maximum likelihood point estimate"
    iterlim = 500
    method = 'fmin_powell'
    map.fit(verbose=10, iterlim=iterlim, method=method)

    for asrf in asrfs:
        rate_model.save_map(rate_vars[asrf.id], asrf)

    return all_vars, rate_vars