Я использую Python v> 3.0. У меня есть вопрос, касающийся подгонки для интегральной функции. У меня есть функция с независимой переменной и два параметра для оценки. Допустим, независимой переменной является 'X', а параметрами являются a и b.
X - данные в сетке (2-мерные). В каждой точке сетки 'i' X изменяется от X [i] -4 до X [i] +4, тем самым вызывая функцию плотности вероятности, связанную с каждой сеткой 'i', которая может быть X [i] PDF. X [i] _pdf - массив с nbins от X [i] -4 до X [i] + 4
Функция, которую нужно решить: E [i] = целое {(X [i]_Pdf) * a * (X [i] ** b))
Когда я решаю это, я получаю c0 = nan, p0 = inf. Мои данные не содержат нан. Буду признателен за любую помощь в этом отношении.
Я проверил другие вопросы по схожим вопросам, но ни один из них не содержит PDF, что делает его сложным.
Я пытаюсь использовать подбор кривой для интегральной функции, которая включает произведение независимой переменной и ее pdf в каждой точке. Pdf рассчитывается исходя из предположения о 2 сигма-разбросе с сигмой = 2,0 (x [j] - от 2 * 2,0 до x [j] + 2 * 2.0 в «предсказанном» уравнении ниже).
Когда я решаю это, я получаю c0 = nan, p0 = inf. Мои данные не содержат нан. Буду признателен за любую помощь в этом отношении.
Параметры a и b должны быть оценены. Вот фрагмент моего кода.
import numpy as np
from scipy.integrate import quad
from scipy.optimize import curve_fit
from scipy.stats import norm
X = np.arange(0,30,0.05) # independent variable
y = np.arange(0,3.0,0.005) # dependent variable
def integrand(w,a,b):
return norm.pdf(w) * a* (w**b)
def fun1_var(X,a,b):
x = X
predicted = np.zeros(len(x))
for j in range(0,len(x)):
predicted[j] = quad(integrand, x[j]-4,x[j]+4, args=(a, b))[0]
return predicted
c0,p0 = curve_fit(fun1_var,(X),y)