def chisq_calc(p,T,I,Ierr): Icalc=meanfield.orderparameter(p,T) dof=I.shape[0]-p.shape[0] print 'dof',dof chisq=(I-Icalc)*(I-Icalc)/dof/Ierr/Ierr return chisq
def chisq_calc(p, T, I, Ierr): Icalc = meanfield.orderparameter(p, T) dof = I.shape[0] - p.shape[0] print 'dof', dof chisq = (I - Icalc) * (I - Icalc) / dof / Ierr / Ierr return chisq
## print 'read ' ## print 'temp ',temp ## print 'I',I ## print Ierr ## print 'monlist ' ,monlist ## print len(I),len(monlist) T,I,Ierr=simple_combine.simple_combine(temp,I,Ierr,monlist) #print temp.shape, I.shape, Ierr.shape #pylab.errorbar(temp,I,Ierr,marker='s',linestyle='None',mfc='red',mec='red',ecolor=None) p0=[copy.deepcopy(I[0]),84.0,.33333,copy.deepcopy(I[-1])] tmin=5 tmax=100 #p=[Tn Jt Nf Bk] p0=[88.85,.9844,1975.0,4068.0] if 0: Icalc1=meanfield.orderparameter(p0,T) pylab.plot(T,Icalc1,marker='s',linestyle='None') pylab.show() Trange=N.intersect1d(N.where(T>tmin)[0],N.where(T<tmax)[0]) oparam=scipy.odr.Model(meanfield.orderparameter) mydata=scipy.odr.RealData(T[Trange],I[Trange],sx=None,sy=Ierr) myodr = scipy.odr.ODR(mydata, oparam, beta0=p0) myoutput=myodr.run() myoutput.pprint() pfit=myoutput.beta #pfit = leastsq(residuals, p0, args=(T[Trange],I[Trange],Ierr[Trange])) mychi=chisq_calc(pfit,T[Trange],I[Trange],Ierr[Trange]).sum() print 'pfit=',pfit print 'chisq=',mychi
## print 'read ' ## print 'temp ',temp ## print 'I',I ## print Ierr ## print 'monlist ' ,monlist ## print len(I),len(monlist) T, I, Ierr = simple_combine.simple_combine(temp, I, Ierr, monlist) #print temp.shape, I.shape, Ierr.shape #pylab.errorbar(temp,I,Ierr,marker='s',linestyle='None',mfc='red',mec='red',ecolor=None) p0 = [copy.deepcopy(I[0]), 84.0, .33333, copy.deepcopy(I[-1])] tmin = 5 tmax = 100 #p=[Tn Jt Nf Bk] p0 = [88.85, .9844, 1975.0, 4068.0] if 0: Icalc1 = meanfield.orderparameter(p0, T) pylab.plot(T, Icalc1, marker='s', linestyle='None') pylab.show() Trange = N.intersect1d(N.where(T > tmin)[0], N.where(T < tmax)[0]) oparam = scipy.odr.Model(meanfield.orderparameter) mydata = scipy.odr.RealData(T[Trange], I[Trange], sx=None, sy=Ierr) myodr = scipy.odr.ODR(mydata, oparam, beta0=p0) myoutput = myodr.run() myoutput.pprint() pfit = myoutput.beta #pfit = leastsq(residuals, p0, args=(T[Trange],I[Trange],Ierr[Trange])) mychi = chisq_calc(pfit, T[Trange], I[Trange], Ierr[Trange]).sum() print 'pfit=', pfit print 'chisq=', mychi