如何将自变量作为参数传递给lmfit最小化

时间:2019-11-24 21:33:34

标签: python minimize minimization lmfit

我是这个统计问题的新手。

所以对于x的某些值,我有一个数据集y = f(x)。我想将此数据拟合到func中,以便可以对y中的每个点计算x的值。

假设我要拟合的模型是

def func(x,a,b,c):
    return a+b*x/c

现在要使用最小化功能,我必须定义参数:

params = Parameters()
params.add('a' , value = 10)
params.add('b' , value = 1)
params.add('c' , value = 2)
result = minimize(func, param, arg=(x, y))

我的问题是,如果我想将我的x变量作为参数并将其作为参数传递,该怎么办?

基本上,当我将x作为变量传递时,我正在传递一个数组,该数组对应于我的数据集中的特定点。但是,我想使用x作为参数,因为我想为数据x的某些点找到y的值。

2 个答案:

答案 0 :(得分:0)

参数和拟合变量是标量浮点数。也就是说,它们具有一个可以连续取值范围的值。

您是说要让x的每个元素在适合度方面独立变化吗?

通常使用最小化方法来拟合数据:找到变量的值集(例如您的abc),以使{{1 }}尽可能小。

您不完整的代码段(很明显,总是总是包括一个完整的示例)不会这样做-它不会将y - func(x, a, b, c)传递到{{1 }}。

更重要的是,您似乎正在寻找“为数据y的某些点找到func的值”。这对我来说没有任何意义。...也许可以清理并澄清问题?

答案 1 :(得分:0)

这不是一个单向的步骤。

我通过在Model中使用lmfit类实现了它

考虑这个。

我有一个模型函数,命名为:MF,通过它我可以计算出原始数据中的精确samples

我有原始数据:Raw_Data(例如来自传感器的数据)

然后我有一定的parameters。 (x,y,z个样本)

现在我认为样本是independent variable

我的目标是估计其中一个参数。

首先,我必须创建一个Model类

mod = Model (MF, parameters, independant_vars = ['samples'] 

然后使用Parameters()类设置初始参数。

并添加初始化值

fit_params = Parameters()
fit_params.add('x', value = 170)
fit_params.add('y', value = 120)
fit_params.add('z', value = 110)

然后您适合模型

Result - mod.fit(Raw_data, params = fit_params, samples = your_samples)

输出为dict