Альтернативные функции и количество их входных аргументов - PullRequest
0 голосов
/ 12 июля 2020

В настоящее время я пытаюсь написать код для проекта, в котором мне нужно выполнить нелинейную регрессию одного и того же набора данных с разными функциями соответствия, чтобы затем сравнить их жизнеспособность. Большая часть моего кода уже написана, однако у меня, похоже, возникли некоторые проблемы с чередованием функций соответствия.

def H1(u,B,C):
    return B/u + C*u
def H2(u,B,C,A): 
    return A + B/u + C*u
def H3(u,B,C,A,E): 
    return 1/(1/A + u/E) + B/u + C*u
def H4(u,B,C,A): 
    return A*u**(1/3) + B/u + C*u
def H5(u,b,C,D): 
    return b/u**2 + C*u + D*u**2
def H6(u,b,D): 
    return b/u**2 + D*u**2


def residuals(formula):
    def H0(u,?,?,...):
        return u*? + u/?

    n = len(data["v"])
    y = np.empty(n)
    u = data["v"].values
    h = data["H"].values

    c,cov = curve_fit(H,u,h)

    for i in range(n):
        y[i] = H(data["v"][i],c[0],c[1])

Итак, мои проблемы следующие: Как мне изменить функцию H0 в начале остатков? Я хотел бы в основном написать al oop, где каждая итерация меняет определение H0 (на H1, затем H2, затем H3 ...)

Во-вторых, есть ли способ перенести эти изменения в l oop y [i] = ...? Параметры регрессии являются частью списка (c), длина которого определяется параметрами, необходимыми для каждого H (u, ...). Мне также нужно было бы изменить количество входов, которые должны быть предоставлены, когда H (u, ...) применяется для определения значений y.

Надеюсь, я достаточно подробно описал свои проблемы, если нет, извините, я новичок в этом, и я сделаю все возможное, чтобы быть яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...