def fit_sx(mname, project='behav', regress=False): pth=find_path() data=defmod.find_data(mname, project) grp_dict={}; subj_params=[]; aic_list=[]; bic_list=[]; dic_list=[]; ic_dict={} for subj_idx, subj_data in data.groupby('subj_idx'): m_sx=defmod.define_sxbayes(mname, subj_data, project=project, regress=regress) m_sx.sample(1000, burn=500, dbname=str(subj_idx)+"_"+mname+'_traces.db', db='pickle') sx_df=parse.stats_df(m_sx) sx_df=sx_df.drop("sub", axis=1) sx_df['sub']=[subj_idx]*len(sx_df) subj_params.append(sx_df) aic_list.append(aic(m_sx)); bic_list.append(bic(m_sx)); dic_list.append(m_sx.dic) allsx_df=pd.concat(subj_params) allsx_df.to_csv(mname+"_SxStats.csv", index=False) ic_dict={'aic':aic_list, 'bic':bic_list, 'dic':dic_list} ic_df=pd.DataFrame(ic_dict) ic_df.to_csv(mname+"_IC_Rank.csv") return allsx_df
def run_models(mname, project, regress=False): #bayes fit all subject allsx_df = fit_sx(mname, project=project, regress=regress) #parse model output subdf = parse_allsx(allsx_df) pdict = subdf_to_pdict(subdf) #simulate and compare with observed data data = defmod.find_data(mname, project=project) simdf = vis.predict(pdict, data, ntrials=160, nsims=100, save=True, RTname="SimRT_EvT.jpeg", ACCname="SimACC_EvT.jpeg") simdf.to_csv("simdf_sxbayes.csv") #save pdict; can be reloaded and transformed back into #the original pdict format by the following commands #1. pdict=pd.read_csv("sxbayes_pdict.csv") #2. pdict=pdict.to_dict() params = pd.DataFrame(pdict) params.to_csv("sxbayes_pdict.csv", index=False)
def run_models(mname, project, regress=False): #bayes fit all subject allsx_df=fit_sx(mname, project=project, regress=regress) #parse model output subdf=parse_allsx(allsx_df) pdict=subdf_to_pdict(subdf) #simulate and compare with observed data data=defmod.find_data(mname, project=project) simdf=vis.predict(pdict, data, ntrials=160, nsims=100, save=True, RTname="SimRT_EvT.jpeg", ACCname="SimACC_EvT.jpeg") simdf.to_csv("simdf_sxbayes.csv") #save pdict; can be reloaded and transformed back into #the original pdict format by the following commands #1. pdict=pd.read_csv("sxbayes_pdict.csv") #2. pdict=pdict.to_dict() params=pd.DataFrame(pdict) params.to_csv("sxbayes_pdict.csv", index=False)
def fit_sx(mname, project='behav', regress=False): pth = find_path() data = defmod.find_data(mname, project) grp_dict = {} subj_params = [] aic_list = [] bic_list = [] dic_list = [] ic_dict = {} for subj_idx, subj_data in data.groupby('subj_idx'): m_sx = defmod.define_sxbayes(mname, subj_data, project=project, regress=regress) m_sx.sample(1000, burn=500, dbname=str(subj_idx) + "_" + mname + '_traces.db', db='pickle') sx_df = parse.stats_df(m_sx) sx_df = sx_df.drop("sub", axis=1) sx_df['sub'] = [subj_idx] * len(sx_df) subj_params.append(sx_df) aic_list.append(aic(m_sx)) bic_list.append(bic(m_sx)) dic_list.append(m_sx.dic) allsx_df = pd.concat(subj_params) allsx_df.to_csv(mname + "_SxStats.csv", index=False) ic_dict = {'aic': aic_list, 'bic': bic_list, 'dic': dic_list} ic_df = pd.DataFrame(ic_dict) ic_df.to_csv(mname + "_IC_Rank.csv") return allsx_df