我有(X,Y)形式的实验数据和(x(t;*params),y(t;*params))形式的理论模型,其中t是一个物理(但不可观察的)变量,*params是我要确定的参数。t是一个连续变量,模型中x和{}之间以及{}和{}之间存在1:1的关系。在
在一个完美的世界里,我会知道T(参数的真实值)的值,并且能够做一个非常基本的最小二乘拟合来找到*params的值。(请注意,我并不是试图“连接”绘图中的x和{}的值,就像在31243002或{a2})中一样。我不能保证在我的实际数据中,潜在值{}是单调的,因为我的数据是跨多个周期收集的。在
我不是很有经验做曲线拟合手动,并不得不使用非常粗糙的方法,没有一个简单的访问一个基本的scipy函数。我的基本方法包括:选择*params的某个值并将其应用于模型
取一个t值的数组,并将其放入模型中,以创建一个model(*params) = (x(*params),y(*params))的数组
将X(数据值)插值到model中得到{}
在Y和{}之间进行最小二乘法(或其他)比较
对一组新的*params再次执行此操作
最后,为*params选择最佳值
这种方法有几个明显的问题。在
1)我没有足够的编码经验来开发一个非常好的“再试一次”,而不是“在解决方案空间中尝试所有东西”,或者“在粗糙网格的热点区域,在稍细的网格中重试所有内容”。我尝试过MCMC方法,但从未找到任何最佳值,主要是因为问题2
2)步骤2-4本身就非常低效。在
我尝试过类似的东西(类似于伪代码;实际函数是虚构的)。对于在A、B上使用广播,有许多小问题可以提出,但这些问题的重要性不如每一