如何将 2 个数据集同时拟合到 2 个参考数据集并提取共享参数

How to fit 2 data sets to 2 reference data sets simultaneously and extract shared parameters

我有2个(模拟)数据集和2个(实验)参考数据集。

由于模拟是以数值方式进行的,因此 method/function 未知,只有模拟数据可用。

这 2 个数据集共享我想通过将模拟拟合到参考数据来提取的参数。

我没有找到任何 python 仅使用数据集而不是拟合函数/模型来执行此类拟合/最小化/优化的功能。

具体来说:我有以下两个方程式:

e1 = a * s1 + b * t1 + c * u1 和

e2 = a * s2 + b * t2 + c * u2 和

我想算出参数a,b,c。

e1, e2 是实验性的 NxN np.arrays(可以在热图中可视化或可以视为 f(x,y) )和

s1、s2、t1、t2、u1、u2 是包含模拟数据的 MxM np.arrays。

我希望方程式(热图)的左右两边尽可能相似,并且同样考虑两个方程式以了解 a、b、c。

要使 N = M 需要努力,但可以做到。 我知道,我必须使用两个模型,但我只知道如何将匹配的 1xN 实验和模拟阵列传递给模型。

我围绕 scipy 编写了一个名为 symfit 的包装器,它使此类问题变得简单明了,因此我认为您可能会对使用它感兴趣。使用 symfit 来解决你的问题,你可以写

from symfit import parameters, variables, Fit, Model

e1, e2, s1, s2, t1, t2, u1, u2 = variables('e1, e2, s1, s2, t1, t2, u1, u2')
a, b, c = parameters('a, b, c')

model = Model({
    e1: a * s1 + b * t1 + c * u1,
    e2: a * s2 + b * t2 + c * u2,
})

fit = Fit(model, u1=u1data, s1=s1data, ...)
fit_result = fit.execute()
print(fit_result)

有关详细信息,请参阅 documentation。祝你好运!