Проблемы с использованием scipy.odr с math.erf () - PullRequest
0 голосов
/ 01 сентября 2018

У меня проблема с использованием регрессии ортогонального расстояния с функцией, использующей функцию ошибки math.erf(). Чтобы быть более ясным, кажется, у меня есть проблема с переменными, которые должны соответствовать.

import numpy as np
from scipy import odr
import math

def CDF(x,a,b,c):
   #definition of errorfunction to fit data
   return c/2*(1+math.erf((x-a)/(b*math.sqrt(2))))

#to make things a little shorter I excluded the parts in which the data is 
read and prepared

guess=Ergebnis_popt[1] #using found values for a,b,c from curve_fit without 
errors
guess_a=guess[0]
guess_b=guess[1]
guess_c=guess[2]
xerr=Verschiebung_fit[2] #determination of x_erros, the values for the y 
errors are included in the prepared data
xerr=xerr/xerr
xerr=xerr/200
#building the model for the odr fit, as the erf function seems to only 
handle single values I use np.vectorize
cfd = odr.Model(np.vectorize(CDF,excluded=['a','b','c']),extra_args= 
['a','b','c'])  
#Definition of the Data with ererrors for the fit
mydata =odr.RealData(Verschiebung_fit[2],y=y_values_fit[2],sx=xerr,sy=y_values_fit[4])
#basis for the odr fit
odr=odr.ODR(mydata,cfd, beta0 = [guess_a,guess_b,guess_c] )
myoutput = odr.run()
myoutput.pprint()

Все это приводит к ошибке:

Файл "C: \ Users \ Public \ Anaconda \ lib \ site-packages \ numpy \ lib \ function_base.py", строка 2785, в _get_ufunc_and_otypes выходы = func (* входы) Файл "C: \ Users \ Public \ Anaconda \ lib \ site-packages \ numpy \ lib \ function_base.py", строка 2750, в функции вернуть self.pyfunc (* the_args, ** kwargs) TypeError: CDF () принимает 4 позиционных аргумента, но 5 были заданы

Я новичок в использовании Python. Я предполагаю, что есть проблема с сообщением переменных, которые должны быть установлены, но я не могу понять, где эта проблема возникает.

...