Esempio n. 1
0
def lesions_expt(qnum):
    beliefs, meta, act, nom = vars_from_data(dataset="lesions")
    params = setup_params.init_params_demo1()
    params['num_qs'] = 1
    params['num_responses'] = beliefs[qnum].shape[1]
    params['num_mh_samples'] = 200
    states, indiv_states, accept, internals = do_inference(params, beliefs[qnum:qnum+1], meta[qnum:qnum+1])
    mh = diagnostics.summarise_qs(states, indiv_states)
    return mh, beliefs, meta, act
Esempio n. 2
0
def calibrate_mh():
    num_mh = 20000
    results = demo8(num_mh)
    (individual, actual, beliefs, meta, states,
     indiv_states, params, accept) = results
    mh = diagnostics.summarise_qs(states, indiv_states)
    #params['transition'] = "separate"
    #res_sep = do_inference(params, beliefs, meta)
    #states_sep, indiv_sep, _, _ = res_sep
    #mh_sep = diagnostics.summarise_qs(states_sep, indiv_sep)
    return actual, mh
Esempio n. 3
0
def simple_mh_all(expt, num_mh, qnums=None):
    beliefs, meta, act, nom, qnames = vars_from_data(dataset=expt)
    if qnums is not None:
        beliefs = [beliefs[qn] for qn in qnums]
        meta = [meta[qn] for qn in qnums]
        act = [act[qn] for qn in qnums]
        nom = [nom[qn] for qn in qnums]
    params = setup_params.init_params_demo1()
    params['num_qs'] = len(beliefs)
    params['num_mh_samples'] = num_mh
    params['do_parallel'] = False
    states, indiv_states, accept, internals = do_inference(params, beliefs, meta)
    mh = diagnostics.summarise_qs(states, indiv_states, params)
    save_mh_results(qnames, mh, act, params)
    1/0
    return mh, beliefs, meta, act, qnames
Esempio n. 4
0
    ulinop = np.array([np.mean(b[1,:]) for b in beliefs])
    ulinop_ans = np.where(ulinop > .5, 1, 0)
    ulinop_correct = ulinop_ans == actual_ans
    consensus = np.array([np.mean([ulinop[n] if nominal[n][k] == 1 
                                   else 1 - ulinop[n]
                                   for n in range(num_qs)]) 
                                   for k in range(num_ppl)])
    votes = np.array([nom for nom in nominal])
    1/0
    return mh


if __name__ == '__main__':
    warnings.simplefilter('error', RuntimeWarning)
    np.seterr(divide='ignore') #so that / 0.0 gives inf on ubuntu
    np.seterr(invalid='ignore')
    #call some demo function
            
    #diagnostics.pymc_diagnostics(states[0], actual[0])
        mh = diagnostics.summarise_qs(states, indiv_states)
        nominal = np.array([(np.array(beliefs[k][1,:]) > .5).astype(int)
                            for k in range(len(beliefs))])
        accuracy = np.array([np.sum([nominal[n, k] == actual[n]['world']
                                     for n in range(params['num_qs'])])
                             for k in range(params['num_responses'])])