[SciPy-User] 2 questions: optimize.leastsq

Johannes Radinger JRadinger@gmx...
Tue Oct 25 05:49:37 CDT 2011


Hi,

I've got two questions considering the least square optimization: 

1 ) I asked that already some time ago, but couldn't find the email with the answer anymore. Maybe you can help me out again:

It's all about the optimize.leastsq. I use that to fit a function with several conditions. As a result I get the parameter estimates I am looking for and the 'ier'. According to the manual this is:

"An integer flag. If it is equal to 1, 2, 3 or 4, the solution was found. Otherwise,
the solution was not found"

I just want to know: What exactly do the numbers mean? What is if it is 1 or 2? Is that any information
about the quality of the fit?

2) I am doing following optimization:

def pdf(x,s1,s2,p):
    return (p/(math.sqrt(2*math.pi*s1**2))*numpy.exp(-((x-0)**(2)/(2*s1**(2)))))+((1-p)/(math.sqrt(2*math.pi*s2**2))*numpy.exp(-((x-0)**(2)/(2*s2**(2)))))
def equ149(arg): 
    s1,s2,p = numpy.abs(arg)
    cond1 = 0.7673 - integrate.quad(pdf,-25,25,args=(s1,s2,p))[0]
    cond2 = 0.8184 - integrate.quad(pdf,-45,45,args=(s1,s2,p))[0]
    cond3 = 0.8320 - integrate.quad(pdf,-55,55,args=(s1,s2,p))[0]
    cond4 = 0.8688 - integrate.quad(pdf,-75,75,args=(s1,s2,p))[0]
    cond5 = 0.8771 - integrate.quad(pdf,-85,85,args=(s1,s2,p))[0]
    cond6 = 0.8951 - integrate.quad(pdf,-95,95,args=(s1,s2,p))[0]
    cond7 = 0.9124 - integrate.quad(pdf,-105,105,args=(s1,s2,p))[0]
    cond8 = 0.9237 - integrate.quad(pdf,-115,115,args=(s1,s2,p))[0]
    cond9 = 0.935 - integrate.quad(pdf,-125,125,args=(s1,s2,p))[0]
    cond10 = 0.95 - integrate.quad(pdf,-145,145,args=(s1,s2,p))[0]
    cond11 = 0.962 - integrate.quad(pdf,-175,175,args=(s1,s2,p))[0]
    cond12 = 0.9748 - integrate.quad(pdf,-195,195,args=(s1,s2,p))[0]
    cond13 = 0.9876 - integrate.quad(pdf,-205,205,args=(s1,s2,p))[0]
    cond14 = 0.9913 - integrate.quad(pdf,-265,265,args=(s1,s2,p))[0]
    cond15 = 0.9988 - integrate.quad(pdf,-295,295,args=(s1,s2,p))[0]
    cond16 = 0.0012/2 - integrate.quad(pdf,315,numpy.inf,args=(s1,s2,p))[0]
    return [cond1, cond2,cond3, cond4, cond5, cond6, cond7, cond8, cond9, cond10, cond11, cond12, cond13, cond14, cond15, cond16]
result=leastsq(equ149, [30.0, 200.0,0.7])

I do that about 100 times with different conditions and get always s1, s2 and p. If i then compare the results, s1 is more or less always 10 times smaller than s2. So it seems there is a constant factor. Now my question: Is that "factor 10" only a result of my data (which would be great!)? Or is it an mathematical artifact of the optimization procedure?

Thank you very much!

/Johannes

-- 
NEU: FreePhone - 0ct/min Handyspartarif mit Geld-zurück-Garantie!		
Jetzt informieren: http://www.gmx.net/de/go/freephone


More information about the SciPy-User mailing list