如何使用多条曲线和因变量进行曲线拟合
How to do curve-fitting with multiple curves and dependent variables
我正在研究用于 covid-predictions 的扩展 SIR 模型。现在我正在尝试通过 lmfit 使用曲线拟合。
这是代码:
mod = lmfit.Model(fitter)
for kwarg, (init, mini, maxi) in params_init_min_max.items():
mod.set_param_hint(str(kwarg), value=init, min=mini, max=maxi, vary=True)
params = mod.make_params()
fit_method = "leastsq"
我已经用额外的“死亡”案例扩展了我的 SIR。所以现在我可以根据历史“死亡”来曲线拟合我的模型。但我也找到了可能“感染”的可靠来源。问题是,我只能对“D”(死亡)曲线或“I”(感染)曲线进行曲线拟合。有什么方法可以让我使用基于两条曲线的曲线拟合,这两条曲线基本上依赖于相同的 SIR 算法。例如,当对“D”进行曲线拟合时,我得到的 R0 为 3.5,而对“I”进行曲线拟合时,我得到的 R0 为 4.2。如何找到适合两条曲线的 R0 值(具有其他可变参数)。
是的,如果您必须使用方程(或函数)对两个不同的数据集(您的“死亡”和“感染”)进行建模并且它们共享一些参数(“r0”),您可以制作一个使用 np.concatenate()
为模型附加两个数组,然后拟合连接的数据集。
该级联模型只有一组参数。如果某些参数真的只改变串联数据集的前半部分或后半部分,那也没关系。
我正在研究用于 covid-predictions 的扩展 SIR 模型。现在我正在尝试通过 lmfit 使用曲线拟合。
这是代码:
mod = lmfit.Model(fitter)
for kwarg, (init, mini, maxi) in params_init_min_max.items():
mod.set_param_hint(str(kwarg), value=init, min=mini, max=maxi, vary=True)
params = mod.make_params()
fit_method = "leastsq"
我已经用额外的“死亡”案例扩展了我的 SIR。所以现在我可以根据历史“死亡”来曲线拟合我的模型。但我也找到了可能“感染”的可靠来源。问题是,我只能对“D”(死亡)曲线或“I”(感染)曲线进行曲线拟合。有什么方法可以让我使用基于两条曲线的曲线拟合,这两条曲线基本上依赖于相同的 SIR 算法。例如,当对“D”进行曲线拟合时,我得到的 R0 为 3.5,而对“I”进行曲线拟合时,我得到的 R0 为 4.2。如何找到适合两条曲线的 R0 值(具有其他可变参数)。
是的,如果您必须使用方程(或函数)对两个不同的数据集(您的“死亡”和“感染”)进行建模并且它们共享一些参数(“r0”),您可以制作一个使用 np.concatenate()
为模型附加两个数组,然后拟合连接的数据集。
该级联模型只有一组参数。如果某些参数真的只改变串联数据集的前半部分或后半部分,那也没关系。