示例#1
0
def print_chi2_breakdown(chain,mcf):
    import models
    import variables as v
    model  = models.get_model_from_file(mcf)
    lhoods = models.get_lhood_names(mcf)
    MCVdict=v.mc_variables()
    if len( model ) > 0 :
        print "\nchi2 penalties from gaussian constraints :"
        print "==================================================================="
        print "    Penalty  Prediction   Name            Type       Constraint"
        print "==================================================================="
    for constraint in model:
        sn=constraint.short_name
        MCV=MCVdict[sn]
        v_index = MCV.get_index(mcf)
        chi2=chain.treeVars["contributions"][v_index]
        pred=chain.treeVars["predictions"][v_index]
        #print "{:11g} {:<{width}{precision}{base}}{c!r}".format(chi2, pred, base='g', width=1, precision=4, c=constraint)
        print "{:11.2f} {:11.4g}   {!r}".format(chi2, pred, constraint)
        #print "{chi2:>f} {".format(chi2=chi2)
    print "==================================================================="

    if len(lhoods.keys()) > 0 : print "\nThe likelihoods give penalties:\n"
    for i, lhood in enumerate(lhoods.items()):
        chi2=chain.treeVars["lhoods"][i]
        print "{:11.2f} {:16} {:16}". format( chi2, lhood[0], lhood[1] )
示例#2
0
def get_p_value_n_dof(chain,mcf):
    import models
    import variables as v
    model  = models.get_model_from_file(mcf)
    lhoods = models.get_lhood_names(mcf)
    MCVdict=v.mc_variables()
    chi2_s=[]
    for constraint in model:
        sn=constraint.short_name
        chi2_s.append(get_contribution(chain,mcf,sn))

    for i, lhood in enumerate(lhoods.items()):
        chi2_s.append(chain.treeVars["lhoods"][i])

    count=0
    for chi2 in chi2_s:
        if chi2 > 0 : count += 1

    n_dof = count - mcf.Inputs
    chi2_tot = chain.treeVars["predictions"][0]

    p_value= r.TMath.Prob(chi2_tot, n_dof)

    return p_value, n_dof